我有自定義的內容搜索標籤,它接受頁面路徑,並在此基礎上從DAM獲取資產,現在,如果我移動到另一個頁面假設從/en/home.html到/ en /product.html,contentfinder仍會顯示與/en/home.html相關的記錄,直到我不重新加載整個頁面。Reload ContentFinder切換到其他頁面
有什麼方法可以在移動到另一個頁面時自動重新加載內容搜索器選項卡。
感謝
我有自定義的內容搜索標籤,它接受頁面路徑,並在此基礎上從DAM獲取資產,現在,如果我移動到另一個頁面假設從/en/home.html到/ en /product.html,contentfinder仍會顯示與/en/home.html相關的記錄,直到我不重新加載整個頁面。Reload ContentFinder切換到其他頁面
有什麼方法可以在移動到另一個頁面時自動重新加載內容搜索器選項卡。
感謝
兩種方式實現:一是 方式來放置JavaScript代碼下面的頁面層次結構的頂部或要重新加載的內容取景器的頁面。
<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();由於頁面是第6個選項卡,並且基於數組索引,[5]值將爲頁面內容查找程序選項卡提供內容查找程序窗口,findByType(「contentfindertab」)將所有內容查找程序標籤作爲數組對象獲取。
代碼submitQueryBox.call提交頁面的查詢框,因此結果被刷新。
實現此目的的第二種方式是覆蓋默認的pages.js,allowedPaths提供不需要刷新內容查找器的路徑。如果您看到OOTB pages.js,它將允許路徑爲"allowedPaths": [ "/content/*", "/etc/scaffolding/*", "/etc/workflow/packages/*" ]
當您導航到任何頁面時,將執行以下代碼CQ.wcm.ContentFinder.loadContentWindow('tonavigationpath');並且它檢查allowedPaths是否包含在允許的路徑中,例如,/content/*表示來自/ content /的任何url,內容查找器不會被重新加載,否則內容查找器將被重新加載。在這裏通過說內容查找器重新加載我的意思是內容查找器作爲一個完整的窗口,而不是搜索結果。
要了解更多詳細信息,請參閱crx中的/libs/wcm/extensions/contentfinder/pages.js。
希望這會有所幫助。如果有幫助,請接受答案。
Thnaks,我將js代碼Ist應用到/apps/geometrixx-media/components/page/media-home/content.jsp文件,但是當我從/content/geometrixx-media/en/entertainment.html移動到/content/geometrixx-media/en/gadgets.html CF不刷新或重新加載。 –
我已經用新代碼更新了我的答案,並且已將此代碼粘貼到/apps/geometrixx-media/global.jsp中,此代碼類似於較早的代碼,區別僅在於我們獲取頁面內容查找程序選項卡的方式。前一個通過ID獲取不知道爲什麼它通常不起作用。另外請注意,這隻會刷新頁面選項卡中提供的結果。請仔細檢查。 –
不,CF仍顯示與過去頁面相關的記錄。實際上,這將工作,如果內容搜索將重新加載,只有這樣它才能在其js中獲得新的網頁網址。刷新將無法正常工作,因爲它保持指向相同的位置,但在我的情況下,如果頁面將更改資產的位置將發生變化,我將此位置傳遞給viewjson服務器作爲window.location.href(請求參數) –