您可以调用特殊的 KSS 视图@@refreshPortlet
来通过 AJAX 加载 portlet。响应是一个 XML 文档,其中包含一个<param name="html">
包含新 HTML 片段的元素。您可以在站点根目录或当前上下文中调用它,无论哪种方式更适合您的可缓存性。
以下内容来自生产站点,并不完整,但应该可以让您有所了解:
// $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 存储在某个数据属性中,以确保我在正确的上下文中检索 portlet,否则它会显示错误的信息。