Hide inherited property in page properties dialog (Touch UI)

fraudoudou

20-08-2020

I'd like to hide a property within a certain tab that is inherited from /libs/wcm/foundation/components/basicpage/v1/basicpage (e.g. hideInNav property in basic tab).

 

This change should only affect one page-rendering component, so I tried using sling:hideChildren, but did not manage to accomplish it. I also tried this example from Adobe, but it does not work at all.

https://github.com/Adobe-Marketing-Cloud/aem-authoring-extension-page-dialog

 

Any ideas?

Accepted Solutions (1)

Accepted Solutions (1)

fraudoudou

20-08-2020

I managed to find a solution and actually the example from Adobe works with adjustments 🙂

 

You have to use the Sling Resource Merger with /mnt/override and an absolute path to inherit from the parent super component.

<basic jcr:primaryType="nt:unstructured" path="/mnt/override/apps/.../components/basepage/tabs/basic"/>

 

In the XML for the tabs, all properties can be used as expected. For example:

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:granite="http://www.adobe.com/jcr/granite/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<column jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<title jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured" sling:hideChildren="[hideinnav]" />
</title>
</items>
</column>
</items>
</jcr:root>

 

It is essential to use the Sling Resource Merger with an override and to use an absolute path there! 

Answers (1)

Answers (1)

Nikhil-Kumar

MVP

20-08-2020

@fraudoudou  
Try using the property sling:hideProperties.

I also tried this one, but it does not seem to work. I've used these properties before on custom dialogs and they worked fine.

However, I'm trying to do changes to the basic tab from the Foundation page and I have no clue why it's not working here.

 

Can you maybe point me in the right direction because none of the examples below are working?

 

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
jcr:primaryType="nt:unstructured">
<content jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<tabs jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<basic jcr:primaryType="nt:unstructured">

<!-- that does not work either -->
<items jcr:primaryType="nt:unstructured" sling:hideChildren="*">
<column jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">
<title jcr:primaryType="nt:unstructured">
<items jcr:primaryType="nt:unstructured">

<!-- that does not work -->
<title jcr:primaryType="nt:unstructured" sling:hideProperties="*"/>
</items>
</title>

<!-- that does not work -->
<moretitles
cq:showOnCreate="{Boolean}false"
cq:hideOnEdit="{Boolean}true"
jcr:primaryType="nt:unstructured">
</moretitles>
</items>
</column>
</items>
</basic>

<!-- that works -->
<advanced jcr:primaryType="nt:unstructured" sling:hideResource="{Boolean}true"/>
</items>
</tabs>
</items>
</content>
</jcr:root> 

 

@Nikhil-Kumar Do you have a more detailed example explicitly for targeting properties from an include? I'm having the problem, that I cannot target the property inside the inherited tab, even if I would write a render condition, I'd still need to target that property somehow.