您可以調用特殊的KSS視圖@@refreshPortlet
來通過AJAX加載Portlet。響應是一個包含新HTML片段的<param name="html">
元素的XML文檔。您可以在網站根目錄或當前上下文中調用此功能,無論哪種方法對您的可玩性更好。
從生產現場採取以下,並且還沒有完全完成,但應該給你一個想法:
// $wrapper is the portlet wrapper div
var portlethash = $wrapper.attr('id').split('-')[1];
var base = $wrapper.data('baseurl') || $('link[rel=kss-base-url]').attr('href');
$.ajax({url: base + '/@@refreshPortlet', type: 'GET', dataType: 'xml',
data: { portlethash: portlethash },
success: function(data) {
var contents = $('dd.portletItem', $(data).find('param[name="html"]').text());
$wrapper.find('dd.portletItem')
.replaceWith(contents);
}
});
變量$wrapper
指portletWrapper
DIV:
<div id="portletwrapper-[long string of characters]"
class="portletWrapper kssattr-portlethash-[long string of characters]">
<dl class="portlet portletSpecificClass">
<dt class="portletHeader">
...
</dt>
<dd class="portletItem">
...
</dd>
<dd class="portletFooter">
...
</dd>
</dl>
</div>
注我們使用id
屬性中的portlet散列,這是KSS @@refreshPortlet
視圖如何知道如何僅呈現portlet。
我將portlet基礎url存儲在某個data屬性的wrapper中,以確保我在正確的上下文中檢索portlet,否則它會顯示錯誤的信息。