Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Plone中注入模板代码?_Python_Html_Templates_Plone_Zope - Fatal编程技术网

Python 如何在Plone中注入模板代码?

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代码?我正在运行Plone 4。有人对如何实现这一点有什么建议吗


另一个问题是:是否可以在每一篇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站点是多么美妙的描述啊!非常感谢你的帮助和如此详细的描述