AEM Добавить новую вкладку в диалог интерфейса сенсорного интерфейса компонента страницы OOTB - PullRequest
0 голосов
/ 29 августа 2018

Я хочу добавить новую вкладку в диалоговое окно сенсорного интерфейса компонента OOTB (/libs/foundation/components/page), чтобы все страницы, которые наследуются от этого компонента OOTB, имели эти поля.

К сожалению, нельзя просто добавить вкладку к каждому компоненту шаблона, так как я создаю плагин вместо реализации.

Я пытался наложить /libs/foundation/components/page/_cq_dialog/content/items/tabs/items/ и добавить только мою вкладку к этому листу items, но тогда он не тянет остальные вкладки OOTB. Я думаю, что это потому, что это не листовой узел, и он хочет быть при выполнении наложения. Поэтому мне нужно как-то объединить то, что я определяю, с диалоговым окном OOTB Touch UI.

Это мой /apps/foundation/components/page/_cq_dialog узел:

<?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"
          jcr:title="Page"
          sling:resourceType="cq/gui/components/authoring/dialog"
          extraClientlibs="[cq.common.wcm,cq.siteadmin.admin.properties]"
          mode="edit">
    <content
            jcr:primaryType="nt:unstructured"
            sling:resourceType="granite/ui/components/foundation/container"
            class="cq-dialog-content-page">
        <items jcr:primaryType="nt:unstructured">
            <tabs
                    jcr:primaryType="nt:unstructured"
                    sling:resourceType="granite/ui/components/foundation/container"
                    rel="cq-siteadmin-admin-properties-tabs">
                <layout
                        jcr:primaryType="nt:unstructured"
                        sling:resourceType="granite/ui/components/foundation/layouts/tabs"
                        type="nav"/>
                <items jcr:primaryType="nt:unstructured">
                    <custom
                            jcr:primaryType="nt:unstructured"
                            jcr:title="Custom"
                            sling:resourceType="granite/ui/components/foundation/section">
                        <layout
                                jcr:primaryType="nt:unstructured"
                                sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"
                                margin="{Boolean}false"/>
                        <items jcr:primaryType="nt:unstructured">
                            <column
                                    jcr:primaryType="nt:unstructured"
                                    sling:resourceType="granite/ui/components/foundation/container">
                                <items jcr:primaryType="nt:unstructured">
                                    <customsection
                                            jcr:primaryType="nt:unstructured"
                                            jcr:title="Custom field"
                                            sling:resourceType="granite/ui/components/foundation/form/fieldset">
                                        <items jcr:primaryType="nt:unstructured">
                                            <customfield
                                                    jcr:primaryType="nt:unstructured"
                                                    sling:resourceType="granite/ui/components/foundation/form/textfield"
                                                    fieldLabel="custom field"
                                                    name="customField"/>
                                        </items>
                                    </customsection>
                                </items>
                            </column>
                        </items>
                    </custom>
                </items>
            </tabs>
        </items>
    </content>
</jcr:root>

Спасибо!

1 Ответ

0 голосов
/ 29 августа 2018

Причина, по которой вы не видите остальные вкладки компонента базовой страницы, заключается в том, что вы являетесь overlaying корневым items узлом всех вкладок. При наложении вы переопределяете функциональность компонента libs и отдаете приоритет наложенному компоненту. Если вы хотите иметь и остальные вкладки, вам придется скопировать их все в наложенный компонент, что настоятельно не рекомендуется , потому что вы потеряете при обновлении компонента, когда Вы обновляете AEM или устанавливаете пакеты обновлений.

Я бы порекомендовал extending компонент вместо этого, установив значение от sling:resourceType до foundation/components/page в компоненте базовой страницы вашего сайта. Таким образом, вы добавляете только эту дополнительную настраиваемую вкладку и наследуете остальные из libs. По всей вероятности (если следовать рекомендациям aem), на вашем сайте уже будет компонент базовой страницы с этим свойством, а остальные шаблоны будут наследоваться от этого компонента. Добавьте ниже _cq_dialog к этому компоненту страницы, и вы должны увидеть новую вкладку на всех страницах.

.content.xml вашего базового компонента страницы. Один из основных шаблонов /apps/<<prj>>/templates будет иметь sling:resourceType ссылку на этот компонент страницы.

<?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"
    jcr:primaryType="cq:Component"
    jcr:title="Base Page Component"
    sling:resourceSuperType="foundation/components/page"
    componentGroup=".hidden"/>

_cq_dialog - повторное использование вашего кода, за исключением нового реквизита - sling:orderBefore="cloudservices", чтобы заказать новую вкладку

<?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">
                    <custom
                        jcr:primaryType="nt:unstructured"
                        jcr:title="Custom"
                        sling:orderBefore="cloudservices"
                        sling:resourceType="granite/ui/components/foundation/section">
                        <layout
                            jcr:primaryType="nt:unstructured"
                            sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"
                            margin="{Boolean}false"/>
                        <items jcr:primaryType="nt:unstructured">
                            <column
                                jcr:primaryType="nt:unstructured"
                                sling:resourceType="granite/ui/components/foundation/container">
                                <items jcr:primaryType="nt:unstructured">
                                    <customsection
                                        jcr:primaryType="nt:unstructured"
                                        jcr:title="Custom field"
                                        sling:resourceType="granite/ui/components/foundation/form/fieldset">
                                        <items jcr:primaryType="nt:unstructured">
                                            <customfield
                                                jcr:primaryType="nt:unstructured"
                                                sling:resourceType="granite/ui/components/foundation/form/textfield"
                                                fieldLabel="custom field"
                                                name="customField"/>
                                        </items>
                                    </customsection>
                                </items>
                            </column>
                        </items>
                    </custom>
                </items>
            </tabs>
        </items>
    </content>
</jcr:root>

Скриншот

enter image description here

Подробнее об иерархии компонентов и наследовании здесь

...