Добавить пользовательское свойство страницы изображения в CQ5

Каждая страница в CQ5 может иметь изображение, прикрепленное к ней в свойствах страницы. Мне нужно добавить собственное свойство изображения для использования в компоненте.

Я могу добавить небольшие элементы в виде флажка, используя эту ссылку, но когда Я добавляю новую вкладку изображения в свойствах страницы, даже существующее изображение перестает работать. Даже если я могу добавить еще одно диалоговое окно изображения на страницу, я не могу получить новое изображение. Это новое диалоговое окно изображения, которое я добавил. (См вложение)

Я просто хочу использовать изображение в карусели [возможно, получить его с помощью:

Resource r = page.getContentResource("image1");

JCR-структура-изображения-диалога

Может кто-нибудь, пожалуйста, помогите мне в этом? Какие свойства мне хотя бы нужны, чтобы заставить его работать?


aem
person Riju Mahna    schedule 11.07.2013    source источник


Ответы (1)


Вам нужно использовать xtype из smartimage (или его версию, например html5smartimage).

Вот пример кода, который добавит в диалоговое окно два изображения — imageOne и imageTwo. Вы должны убедиться, что свойства вашего нового изображения не конфликтуют с существующим, а именно fileNameParameter, fileReferenceParameter, name и name дочернего узла resType должны быть уникальными в приведенном ниже примере.

<items jcr:primaryType="cq:TabPanel">
    <items jcr:primaryType="cq:WidgetCollection">
        <imageOnePanel
                jcr:primaryType="cq:Panel"
                title="Image One Panel">
            <items jcr:primaryType="cq:WidgetCollection">
                <imageOne
                        jcr:primaryType="cq:Widget"
                        border="true"
                        ddGroups="[media]"
                        fileNameParameter="./imageOne/fileName"
                        fileReferenceParameter="./imageOneFileReference"
                        height="300"
                        hideLabel="true"
                        name="./imageOne/file"
                        xtype="html5smartimage">
                    <items jcr:primaryType="cq:WidgetCollection">
                        <resType
                                jcr:primaryType="cq:Widget"
                                ignoreData="{Boolean}true"
                                name="./imageOne/sling:resourceType"
                                value="foundation/components/image"
                                xtype="hidden"/>
                    </items>
                </imageOne>
            </items>
        </imageOnePanel>
        <imageTwoPanel
                jcr:primaryType="cq:Panel"
                title="Image Two Panel">
            <items jcr:primaryType="cq:WidgetCollection">
                <imageTwo
                        jcr:primaryType="cq:Widget"
                        border="true"
                        ddGroups="[media]"
                        fileNameParameter="./imageTwo/fileName"
                        fileReferenceParameter="./imageTwoFileReference"
                        height="300"
                        hideLabel="true"
                        name="./imageTwo/file"
                        xtype="html5smartimage">
                    <items jcr:primaryType="cq:WidgetCollection">
                        <resType
                                jcr:primaryType="cq:Widget"
                                ignoreData="{Boolean}true"
                                name="./imageTwo/sling:resourceType"
                                value="foundation/components/image"
                                xtype="hidden"/>
                    </items>
                </imageTwo>
            </items>
        </imageTwoPanel>
    </items>
</items>

Повторное использование кода из диалогового окна и отсутствие уникальных свойств могло вызвать у вас проблемы с добавлением второго изображения, хотя я не на 100% связан с ошибкой, которую вы видите.

person anotherdave    schedule 12.07.2013
comment
Большое спасибо .. Я вижу 2 изображения, сохраненные в CRX. Но мне нужен только 1 из них в моей карусели. Я использую Resource r = page.getContentResource(imageTwo); но я все еще получаю изображение по умолчанию, то есть то, которое я получаю, если использую page.getContentResource(image); .. любые предложения по этому поводу? - person Riju Mahna; 13.07.2013
comment
Хм, я не уверен — у вас не должно быть ничего на странице с именем image, если вы используете вышеприведенное как есть, или у вас все еще есть изображение по умолчанию в диалоговом окне? Если вы распечатаете ${properties.imageOneFileReference} и ${properties.imageTwoFileReference}, получите ли вы ожидаемое? Трудно сказать наверняка, что происходит, не видя вашей структуры JCR. - person anotherdave; 13.07.2013
comment
Спасибо за ваш интерес. Я обновил вопрос со скриншотом свойств JCR. И да, я также использую диалоговое окно изображения по умолчанию, присутствующее в компоненте страницы. Пожалуйста, подскажите, где я мог ошибиться. - person Riju Mahna; 14.07.2013
comment
Судя по всему, у вас есть смесь свойств для изображения и изображения1 на одном узле (например, cropParameter относится к image, а fileNameParameter относится к image1.) — вы не можете сказать, где вы ошиблись, не видя диалогового окна. вы используете & общую структуру узла, а не только свойства. Я бы предложил попробовать приведенный выше фрагмент диалогового окна на новом типе шаблона, который еще не содержит изображения, и посмотреть, работает ли он. - person anotherdave; 15.07.2013