Fetch Page properties in Sling Model

Avatar

Avatar

bhanuprakashdod

Avatar

bhanuprakashdod

bhanuprakashdod

03-08-2019

Hi Everyone,

I have a page created using Editable template.
I have a component which is placed in Template.

I have written a Sling model to fetch page properties by using resource.But not able to fetch page properties.It is fetching template properties.
Can Any one help me how to fetch page properties


Thanks
Bhanu Prakash

Replies

Avatar

Avatar

Jörg_Hoh

Employee

Total Posts

3.0K

Likes

957

Correct Reply

1.0K

Avatar

Jörg_Hoh

Employee

Total Posts

3.0K

Likes

957

Correct Reply

1.0K
Jörg_Hoh
Employee

03-08-2019

It should be straight forward:

@Model(adaptable=Resource.class)

public class myClass {

@Self

Resource resource;

@PostConstruct

public void init() {

  PageManager pm = resource.getResourceResolver().adaptTo(PageManager.class);

  Page containingPage = pm.getContainingPage (resource);

  ValueMap pageProperties = containingPage.getProperties();

}

}

Avatar

Avatar

bhanuprakashdod

Avatar

bhanuprakashdod

bhanuprakashdod

03-08-2019

Thanks Joerg for the input.

If the component is rendered in Page not from template then above code is able to fetch page properties..
But In my case the Model class is called from component which is placed in Editable Template.
For this scenario I am not able to fetch page properties with the help of above sample code.

Avatar

Avatar

arunar22384504

Avatar

arunar22384504

arunar22384504

03-08-2019

Even I am having the same situation and I was not able to read page properties on the which is authored on the template.

Avatar

Avatar

Jörg_Hoh

Employee

Total Posts

3.0K

Likes

957

Correct Reply

1.0K

Avatar

Jörg_Hoh

Employee

Total Posts

3.0K

Likes

957

Correct Reply

1.0K
Jörg_Hoh
Employee

04-08-2019

Hi,

I don't understand what you mean with "is rendered in Page not from template". The code above should work in any kind of component, which is part of a page; and it should not matter if this page has been created based on a static template or an editable template.

Can you tell where the above code is failing in your case? What's the behaviour you observe? Any log message or exception?

Jörg

Avatar

Avatar

Arun_Patidar

MVP

Total Posts

3.0K

Likes

1.1K

Correct Reply

840

Avatar

Arun_Patidar

MVP

Total Posts

3.0K

Likes

1.1K

Correct Reply

840
Arun_Patidar
MVP

05-08-2019

Hi Bhanu,

First you should ask few questions to yourself :

1. If page is not created how page properties can be populated in template editor?

2. If page is available, then how template would know which page properties it should return because template is common.

The sling Model suggested by Jorg is working fine but adapting request resource and returning properties of resource(template in case of template editor and page properties in case of page)

Avatar

Avatar

bhanuprakashdod

Avatar

bhanuprakashdod

bhanuprakashdod

05-08-2019

Hi Arun,

I will explain the scenrio in detailed.

1. I have an editable template(template1) to create pages.

2. I have create a page(page1) by using above template.

3.I have a component (Component1) to call sling model and fetch page properties.

Scenario1: If the component1 is authored in template and then tried to load the page. I am able see template properties as response not page properties.

Logs for scenrio1:

Page:::JcrPropertyMap [node=Node[NodeDelegate{tree=/conf/test-kds/settings/wcm/templates/pdp/structure/jcr:content: { jcr:primaryType = cq:PageContent, jcr:mixinTypes = [mix:versionable], jcr:createdBy = anusha.addepalli, cq:lastReplicationAction = Activate, jcr:versionHistory = 369132ce-20fd-4a47-b362-fe4b619dbf56, cq:template = /conf/test-kds/settings/wcm/templates/pdp, cq:lastReplicatedBy = anusha.addepalli, jcr:predecessors = [cbd664c4-81df-4afe-a0a5-597b3d7d78dc], jcr:created = 2019-07-23T07:35:47.923-05:00, cq:lastReplicated = 2019-05-22T00:46:40.936-05:00, cq:lastModified = 2019-07-31T06:54:18.349-05:00, jcr:baseVersion = cbd664c4-81df-4afe-a0a5-597b3d7d78dc, jcr:isCheckedOut = true, cq:deviceGroups = [/etc/mobile/groups/responsive], jcr:uuid = caf897a4-a22c-45db-9d8e-c673d86f2fbe, sling:resourceType = test/test-kds/components/structure/page, cq:lastModifiedBy = anusha.addepalli, root = { ... }, cq:responsive = { ... }}}], values={cq:template=/conf/test-kds/settings/wcm/templates/pdp, jcr:primaryType=cq:PageContent, jcr:mixinTypes=[Ljava.lang.String;@65c10fbb, jcr:createdBy=anusha.addepalli, cq:lastReplicationAction=Activate, jcr:versionHistory=369132ce-20fd-4a47-b362-fe4b619dbf56, cq:lastReplicatedBy=anusha.addepalli, jcr:predecessors=[Ljava.lang.String;@68d3d17b, jcr:created=java.util.GregorianCalendar[time=1563885347923,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=sun.util.calendar.ZoneInfo[id="GMT-05:00",offset=-18000000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=6,WEEK_OF_YEAR=30,WEEK_OF_MONTH=4,DAY_OF_MONTH=23,DAY_OF_YEAR=204,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=7,HOUR_OF_DAY=7,MINUTE=35,SECOND=47,MILLISECOND=923,ZONE_OFFSET=-18000000,DST_OFFSET=0], cq:lastReplicated=java.util.GregorianCalendar[time=1558504000936,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=sun.util.calendar.ZoneInfo[id="GMT-05:00",offset=-18000000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=4,WEEK_OF_YEAR=21,WEEK_OF_MONTH=4,DAY_OF_MONTH=22,DAY_OF_YEAR=142,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=46,SECOND=40,MILLISECOND=936,ZONE_OFFSET=-18000000,DST_OFFSET=0], cq:lastModified=java.util.GregorianCalendar[time=1564574058349,areFieldsSet=true,areAllFieldsSet=true,lenient=false,zone=sun.util.calendar.ZoneInfo[id="GMT-05:00",offset=-18000000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=31,DAY_OF_YEAR=212,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=5,AM_PM=0,HOUR=6,HOUR_OF_DAY=6,MINUTE=54,SECOND=18,MILLISECOND=349,ZONE_OFFSET=-18000000,DST_OFFSET=0], jcr:baseVersion=cbd664c4-81df-4afe-a0a5-597b3d7d78dc, jcr:isCheckedOut=true, cq:deviceGroups=[Ljava.lang.String;@c2634ff, jcr:uuid=caf897a4-a22c-45db-9d8e-c673d86f2fbe, sling:resourceType=test/test-kds/components/structure/page, cq:lastModifiedBy=anusha.addepalli}]

Scenario2: If the component is drag and drop in the created page(page1) and then we are able to see page properties as response

Avatar

Avatar

Arun_Patidar

MVP

Total Posts

3.0K

Likes

1.1K

Correct Reply

840

Avatar

Arun_Patidar

MVP

Total Posts

3.0K

Likes

1.1K

Correct Reply

840
Arun_Patidar
MVP

05-08-2019

ok, then tell me

Scenario1: If the component1 is authored in template and then tried to load the page. I am able see template properties as response not page properties.

What are you expecting here page1 properties, if there is page2 then?

There is no one to one mapping between template and page rather 1 to M

Avatar

Avatar

bhanuprakashdod

Avatar

bhanuprakashdod

bhanuprakashdod

05-08-2019

Component is authored in template so if create a new page i can able see page along with components authored in template.

In component we are calling sling model to return page properties.

if page1 is opened then sling model will be called and  page1 properties should return and same for other pages also

Avatar

Avatar

Arun_Patidar

MVP

Total Posts

3.0K

Likes

1.1K

Correct Reply

840

Avatar

Arun_Patidar

MVP

Total Posts

3.0K

Likes

1.1K

Correct Reply

840
Arun_Patidar
MVP

06-08-2019

Hi,

If you will open the page in page editor, you will see the page properties

e.g.

http://localhost:4504/editor.html/content/AEM64App/en.html

If you will open the template in template editor, you will see the template properties

e.g.

http://localhost:4504/editor.html/conf/AEM64App/settings/wcm/templates/dy-a-b/structure.html

This is correct behavior.