Plone,从窗体创建viewlet

Plone,从窗体创建viewlet,plone,Plone,我有一段HTML内容,我必须在我的主页上不断更新。理想情况下,我希望转到页面,填写表单,并让表单数据填充HTML代码段(viewlet?) 欢迎任何建议。(创建自定义内容类型,使用mysql db填充。任何内容!)您可以使用标记接口和。假设您的主页设置类似于全新Plone站点的首页-一个文档成为Plone站点的默认视图-添加到自定义产品的界面。py: class IHomepage(Interface): """Marker interface flagging a document a

我有一段HTML内容,我必须在我的主页上不断更新。理想情况下,我希望转到页面,填写表单,并让表单数据填充HTML代码段(viewlet?)


欢迎任何建议。(创建自定义内容类型,使用mysql db填充。任何内容!)

您可以使用标记接口和。假设您的主页设置类似于全新Plone站点的首页-一个文档成为Plone站点的默认视图-添加到自定义产品的
界面。py

class IHomepage(Interface):
    """Marker interface flagging a document as the homepage.
    """
from Acquisition import aq_inner
from plone.app.layout.viewlets import common

class HomepageHeaderViewlet(common.ViewletBase):

    @property
    def blurb(self):
        context = aq_inner(self.context)
        return context.getField('blurb').get(context)
要配置.zcml,请执行以下操作:

<class class="Products.ATContentTypes.interfaces.document.IATDocument">
  <allow interface=".interfaces.IHomepage" />
</class>
<adapter factory=".schemaextender.HomepageExtender" />
<browser:viewlet
    name="example.homepageheader"
    for="..interfaces.IHomepage"
    manager="plone.app.layout.viewlets.interfaces.IPortalTop"
    class=".viewlets.HomepageHeaderViewlet"
    template="homepageheader.pt"
    permission="zope.Public"
    />
添加到
configure.zcml

<class class="Products.ATContentTypes.interfaces.document.IATDocument">
  <allow interface=".interfaces.IHomepage" />
</class>
<adapter factory=".schemaextender.HomepageExtender" />
<browser:viewlet
    name="example.homepageheader"
    for="..interfaces.IHomepage"
    manager="plone.app.layout.viewlets.interfaces.IPortalTop"
    class=".viewlets.HomepageHeaderViewlet"
    template="homepageheader.pt"
    permission="zope.Public"
    />
浏览器/homepageheader.pt
中:

<div id="homepage-blurb" tal:content="structure view/blurb|nothing" />

这取决于您的用例,但通常您不需要使用collective.portletpage之类的东西和多个静态文本portlet来创建所需的页面,就可以完成。通过plone.app.theming,您可以根据需要重新整理html

例如,我们的新主页是使用plone.app.theming、collective.portletpage和Products.ContentWellPortlets创建的


产品。拼贴是我们也使用过的portletpage的另一种替代品。

为什么不能编辑主页?此代码段是否在主可编辑内容区域之外?如果是,在哪里?请附上一个屏幕截图或提供更多关于你想要什么的信息。是的,它在可编辑区域之外。仅在头版的标题中。我必须不断编辑该区域“在ZMI中,在头版的接口选项卡上,将IHomepage设置为提供的接口…”。。。我是否在完成上述步骤后立即将IHomepage设置为接口?IHomepage不会作为选项显示,即使在重新启动zope并重新运行之后也是如此buildout@yanyanyang我在发布之前测试了这段代码,所以我相信它会对你有用。尝试将
configure.zcml
代码更改为
。否则,通过故意犯语法错误并确保Zope在启动时对此进行投诉来检查是否加载了所有内容。如果你成功了,请接受我的回答!它没有正确注册。我在python文件中加入了一些疯狂的东西,在运行buildout时没有出现错误。@yanyanyang buildout不会在你的包中的坏python上抛出错误。在
configure.zcml
中添加一些奇怪的内容,然后检查Zope启动投诉。我想你已经采取了所有描述的步骤了?