gpt4 book ai didi

plone - 如何更改 portlet 顺序(先放置父 portlet)

转载 作者:行者123 更新时间:2023-12-02 06:32:59 25 4
gpt4 key购买 nike

我如何重新排序 portlet,以便继承的父 portlet 排在当前项的 portlet 之前?

最佳答案

Mathias 的解决方案似乎更简单;无论如何,如果您不想安装第三方产品,我想保留此文档。

您只需编写适配器即可更改 portlet 的排序方式。例如,下面的一个在提供 IATImage 接口(interface)(图像)的任何对象上重新排序 portlet,以便首先呈现内容类型 portel,然后是组 portel,最后是上下文 portel:

from plone.portlets.interfaces import IPortletManager
from plone.portlets.interfaces import IPortletRetriever
from plone.portlets.retriever import PortletRetriever as BaseRetriever
from Products.ATContentTypes.interfaces import IATImage
from zope.component import adapts
from zope.interface import implements


class PortletRetriever(BaseRetriever):
implements(IPortletRetriever)
adapts(IATImage, IPortletManager)

def getPortlets(self):
assignments = super(PortletRetriever, self).getPortlets()
context = [p for p in assignments if p['category'] == 'context']
group = [p for p in assignments if p['category'] == 'group']
content_type = [p for p in assignments if p['category'] == 'content_type']
new_assignments = content_type + group + context
return new_assignments

不要忘记在您的 ZCML 文件中使用以下内容注册您的适配器:

<configure xmlns="http://namespaces.zope.org/zope">
...
<adapter factory=".adapters.PortletRetriever" />
...
</configure>

关于plone - 如何更改 portlet 顺序(先放置父 portlet),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28757252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com