Python 如何在Plone中注入模板代码?
我的目标是在每一篇Plone文章前面(在页眉和第一段之间)注入一些HTML代码?我正在运行Plone 4。有人对如何实现这一点有什么建议吗Python 如何在Plone中注入模板代码?,python,html,templates,plone,zope,Python,Html,Templates,Plone,Zope,我的目标是在每一篇Plone文章前面(在页眉和第一段之间)注入一些HTML代码?我正在运行Plone 4。有人对如何实现这一点有什么建议吗 另一个问题是:是否可以在每一篇Plone文章中随机放置一些HTML代码?也许您可以从Javascript的方式来实现这一点?很多应用程序都有一个全局js文件,包含在所有页面中。从这一点开始,您可以轻松地修改DOM。也许您可以通过Javascript的方式来实现这一点?很多应用程序都有一个全局js文件,包含在所有页面中。从这一点开始,您可以轻松地修改DOM。这
另一个问题是:是否可以在每一篇Plone文章中随机放置一些HTML代码?也许您可以从Javascript的方式来实现这一点?很多应用程序都有一个全局js文件,包含在所有页面中。从这一点开始,您可以轻松地修改DOM。也许您可以通过Javascript的方式来实现这一点?很多应用程序都有一个全局js文件,包含在所有页面中。从这一点开始,您可以轻松地修改DOM。这两种用例都可以使用。可以将viewlet插入呈现页面的不同部分,具体取决于您将其注册到的viewlet管理器以及viewlet应用于哪些接口 viewlet管理器确定viewlet的插入位置,注册viewlet的界面确定viewlet的可见URL类型。注册
“*”
意味着到处显示,注册“Products.ATContentTypes.interfaces.IATDocument”
意味着它只有在查看页面时才可见
要查看哪些viewlet管理器可用,以及在其中注册了哪些viewlet,对于任何给定的URL,只需向URL添加“/@manageviewlets”。在那里,您可以看到有一个plone.overcontent
和一个plone.overcontenttitle
viewlet管理器,可以在那里插入HTML。其中大部分是在plone.app.layout
包中定义的,您需要在那里找到用该名称注册的接口(在构建的Oggs目录中找到它)
您使用ZCML注册了一个viewlet,因此您需要已经为您的站点加载了一个python包。要插入任意模板,只需使用browser:viewlet
指令注册即可:
现在,基于htmlsnippet.pt
模板的viewlet已注册到plone.overcontent
viewlet管理器中。该模板是一个完整的zope页面模板,因此您可以在其中使用国际化:
<div i18n:domain="your">
<h3 i18:translate="html_snippet_header">This is a snippet of HTML that'll be injected into all Pages!</h3>
</div>
这是一个将被注入所有页面的HTML片段!
您还可以添加一个完整的浏览器视图类来备份viewlet,模板可以通过“view/”命名空间访问该类,因此您可以在其中添加一个方法来返回要插入的随机文本
您可以通过前面提到的“/@@manage viewlets”URL手动启用viewlet,也可以使用GenericSetup配置文件,其中viewlets.xml用于管理viewlets的注册和排序:
有关更多信息,请参阅Plone.org上的。两种用例的用法。可以将viewlet插入呈现页面的不同部分,具体取决于您将其注册到的viewlet管理器以及viewlet应用于哪些接口
viewlet管理器确定viewlet的插入位置,注册viewlet的界面确定viewlet的可见URL类型。注册“*”
意味着到处显示,注册“Products.ATContentTypes.interfaces.IATDocument”
意味着它只有在查看页面时才可见
要查看哪些viewlet管理器可用,以及在其中注册了哪些viewlet,对于任何给定的URL,只需向URL添加“/@manageviewlets”。在那里,您可以看到有一个plone.overcontent
和一个plone.overcontenttitle
viewlet管理器,可以在那里插入HTML。其中大部分是在plone.app.layout
包中定义的,您需要在那里找到用该名称注册的接口(在构建的Oggs目录中找到它)
您使用ZCML注册了一个viewlet,因此您需要已经为您的站点加载了一个python包。要插入任意模板,只需使用browser:viewlet
指令注册即可:
现在,基于htmlsnippet.pt
模板的viewlet已注册到plone.overcontent
viewlet管理器中。该模板是一个完整的zope页面模板,因此您可以在其中使用国际化:
<div i18n:domain="your">
<h3 i18:translate="html_snippet_header">This is a snippet of HTML that'll be injected into all Pages!</h3>
</div>
这是一个将被注入所有页面的HTML片段!
您还可以添加一个完整的浏览器视图类来备份viewlet,模板可以通过“view/”命名空间访问该类,因此您可以在其中添加一个方法来返回要插入的随机文本
您可以通过前面提到的“/@@manage viewlets”URL手动启用viewlet,也可以使用GenericSetup配置文件,其中viewlets.xml用于管理viewlets的注册和排序:
有关更多信息,请参阅on Plone.org。只有在操作内容类型本身的内容(例如标题、说明或正文)时,以及在门户网站转换工具中无法注册转换时,才需要JS方法。尽管如此,我以前也做过,但是使用了viewlet来呈现JavaScript。对于大多数用例来说,viewlet是完美的(参见我的答案)。只有在操作内容类型本身的内容(例如标题、描述或正文)时,才需要JS方法,并且只有在您无法使用portal_transforms工具中注册的转换时才需要JS方法。尽管如此,我以前也做过,但是使用了viewlet来呈现JavaScript。对于大多数用例来说,viewlet是完美的(见我的答案)。将HTML注入Plone站点是多么美妙的描述啊!非常感谢你的帮助和如此详细的描述