


Hi Team,
Can anyone let me know whether we can create page using editable template through programmatically. Usually we will create the page programmatically by passing the static template which is under our project but it will not serve purpose right. But if we want to create the page then obviously we have to pass editable template. I got stuck-up there itself can someone help me here please.
Thanks,
Pavan
Views
Replies
Sign in to like this content
Total Likes
Yes indeed. You can create page programmatically with editable template too the same way you are creating with static template.
You can use PageManager class from page manager API.
pageManager.create("parent page path", "page name", "template path", "page title");
For more details about page manager API:
Yes indeed. You can create page programmatically with editable template too the same way you are creating with static template.
You can use PageManager class from page manager API.
pageManager.create("parent page path", "page name", "template path", "page title");
For more details about page manager API:
YEs it worked and here is the code for that:
package aeminnovations.core.servlets; import java.io.IOException; import java.util.Iterator; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.Session; import javax.servlet.Servlet; import javax.servlet.ServletException; import org.apache.jackrabbit.api.JackrabbitSession; import org.apache.jackrabbit.api.security.user.Authorizable; import org.apache.jackrabbit.api.security.user.UserManager; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceResolverFactory; import org.apache.sling.api.servlets.HttpConstants; import org.apache.sling.api.servlets.SlingSafeMethodsServlet; import org.json.JSONArray; import org.json.JSONObject; import org.osgi.framework.Constants; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.day.cq.wcm.api.Page; import com.day.cq.wcm.api.PageManager; import com.google.gson.Gson; @Component(service = Servlet.class, property = { Constants.SERVICE_DESCRIPTION + "=Leadership servlet", "sling.servlet.methods=" + HttpConstants.METHOD_GET, "sling.servlet.paths=" + "/bin/demo/pagecreate" }) public class CreatePageServlet extends SlingSafeMethodsServlet { /** * */ private static final long serialVersionUID = -1315366566565122983L; private static final String PAGE_TEMPLATE = "/conf/aeminnovations/settings/wcm/templates/content-page"; private static final String RENDERER = "aeminnovations/components/structure/page"; @Reference private ResourceResolverFactory resolverFactory; private ResourceResolver resourceResolver; private String pageName; private String pageTitle; private String path = "/content/aeminnovations/en/leadership"; private Page prodPage = null; private Session session; private static final Logger log = LoggerFactory.getLogger(CreatePageServlet.class); @Override protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException { try { log.info("----------< Executing Query Builder Servlet >----------"); resourceResolver = request.getResourceResolver(); session = resourceResolver.adaptTo(Session.class); createPages(); session.save(); session.refresh(true); } catch (Exception e) { log.error(e.getMessage(), e); } finally { if (session != null) { session.logout(); } } } public void createPages() { try { PageManager pageManager = resourceResolver.adaptTo(PageManager.class); prodPage = pageManager.create(path, pageName, PAGE_TEMPLATE, pageTitle, true); Resource resource = resourceResolver.getResource(prodPage.getPath()); Node pageNode = resource.adaptTo(Node.class); Node jcrNode = null; if (prodPage.hasContent()) { jcrNode = prodPage.getContentResource().adaptTo(Node.class); } else { jcrNode = pageNode.addNode("jcr:content", "cq:PageContent"); } jcrNode.setProperty("sling:resourceType", RENDERER); Node root = session.getNode(prodPage.getPath().toString() + "/jcr:content/root/responsivegrid"); Node day = root.addNode("biographycomponent", "nt:unstructured"); day.setProperty("sling:resourceType", "aeminnovations/components/content/biographycomponent"); } catch (Exception e) { log.error(e.getMessage(), e); } finally { if (session != null) { session.logout(); } } } }