#aem
#aem
Вопрос:
У меня есть настраиваемая вкладка contentfinder, которая принимает путь к странице и на основе этого извлекает ресурсы из DAM, теперь, если я перейду на другую страницу, предположим, из /en/home.html чтобы /en/product.html , contentfinder по-прежнему показывает запись, относящуюся к /en/home.html пока я не перезагружу всю страницу.
Есть ли какой-нибудь способ автоматически перезагрузить вкладку contentfinder при переходе на другую страницу?
Спасибо
Ответ №1:
Два способа достижения: Первый способ поместить приведенный ниже код javascript поверх иерархии страниц или страниц, на которые вы хотите перезагрузить content finder.
<script type="text/javascript">CQ.Ext.onReady(function() { CQ.WCM.getContentFinder().findByType("contentfindertab")[5].submitQueryBox.call(CQ.WCM.getContentFinder().findByType("contentfindertab")[5], this); }); </script>
Что делает этот код? :
Код CQ.WCM.getContentFinder(); извлекает окно поиска содержимого, findByType(«contentfindertab») извлекает все вкладки поиска содержимого в виде объектов массива, поскольку страницы — это 6-я вкладка, и на основе индексов массива значение [5] даст вкладку поиска содержимого страниц.
Код submitQueryBox.call отправляет окно запроса страниц, следовательно, результаты обновляются.
Второй способ добиться того же — переопределить значение по умолчанию pages.js а в allowedPaths укажите пути, для которых поиск содержимого не требуется обновлять. Если вы видите OOTB pages.js у него есть разрешенные пути, так как "allowedPaths": [
при переходе на любую страницу выполняется приведенный ниже код CQ.wcm.ContentFinder.loadContentWindow(‘tonavigationpath’); и он проверяет разрешенные пути, если он включен в разрешенные пути, например /content/* означает любой URL-адрес из /content/,поисковик контента не перезагружается, иначе поисковик контента будет перезагружен. Здесь, говоря, что content finder перезагружается, я имею в виду content finder как полное окно, а не результаты поиска.
"/content/*",
"/etc/scaffolding/*",
"/etc/workflow/packages/*"
]
Для более подробной информации см. /libs/wcm/extensions/contentfinder/pages.js в crx.
Надеюсь, это поможет. Пожалуйста, примите ответ, если это поможет.
Комментарии:
1. Спасибо, я применил js-код первым способом к файлу /apps/geometrixx-media/components/page/media-home/content.jsp, но когда я перехожу из /content/geometrixx-media/en/entertainment.html чтобы /content/geometrixx-media/en/gadgets.html CF не обновляется и не перезагружается.
2. Я обновил свой ответ новым кодом и вставил этот код в /apps/geometrixx-media/global.jsp этот код похож на предыдущий код, разница только в том, как мы выбирали вкладку поиска содержимого страницы. Предыдущая выборка по идентификатору не уверена, почему это не сработало, обычно это так. Также обратите внимание, что это обновит результаты только на вкладке страницы, если она выбрана. Пожалуйста, дважды проверьте.
3. Нет, CF по-прежнему показывает запись, относящуюся к прошлой странице. Фактически это сработает, если contentfinder перезагрузится, так как только тогда он сможет получить новый URL страницы в своем js. Обновление не будет работать, так как оно будет указывать на то же местоположение, но в моем случае, если страница изменится, местоположение ресурсов изменится, это местоположение я передаю на сервер viewjson как окно. Расположение. href (параметр запроса)
4. Не могли бы вы, пожалуйста, сообщить мне больше о вашей реализации, например, у вас есть пользовательский сервлет, который принимает window. Расположение. href и возвращает результаты или вы передаете это в качестве аргумента в /bin/wcm/contentfinder/page/view.json/content ? Также вы упомянули о разных ресурсах, которые будут отображаться в зависимости от местоположения страницы, так что эти разные ресурсы входят в images, movies content findertab? Вставленный мной код, как правило, просто обновит результаты на вкладке поиска содержимого страниц.
5. У меня была такая реализация, в которой мы хотим искать страницы с разными параметрами, например, вам нужно искать страницы на основе определенного ключевого слова или тега или местоположения, для чего мы переопределили вкладку поиска содержимого страниц, в которой поле поиска имеет разные xtypes, такие как textfield, поле тега и поле пути и т. Д., И На основевыбор значения и отправка значений нажатием кнопки отправки в окне запроса значения отправляются в пользовательский сервлет, который предоставляет требуемый json. Аналогичную идею вы можете применить, сохранив скрытое поле в окне запроса, которое принимает аргументы в качестве окна. Расположение.