如何在Plone <h1>元素</h1> </span>中添加<span>标记

时间:2011-03-16 21:09:37

标签: templates customization plone

我想更改标准的页面顶部元素,以便我可以设置样式。

<h1 class="documentFirstHeading">My Heading</h1>

是Plone在每个页面上放置此元素的方式。我想添加一行,以便该行显示:

<h1 class="documentFirstHeading"><span>My Heading</span></h1>

很明显,这个代码是由宏生成的 - 但我不知道如何 修改宏以添加我的span标签。有人能指点我吗 适当的Plone文件修改?这会设置一个通用的CSS图像 更换技术,和其他Plone网站经常使用它,正如我所见 在其他Plone网站上,span标记我需要它们的确切位置。

TIA为您提供专业知识!

4 个答案:

答案 0 :(得分:2)

它并不重要(动作几乎相同),但我假设您正在创建主题包。我还假设您使用Plone 4.0或更新版本。行动是:

  • 将位于* Products.CMFPlone / Products / CMFPlone / skins / plone_kss *中的* kss_generic_macro.pt *文件复制到主题的* skins / your_templates_folder *。在通用术语中,这称为“为您的主题自定义模板”。
  • 在第20行(不同Plone版本的行号可能不同),您将找到所需的块:

    标题

要获取h1中的范围,请将上面代码段中的 tal:replace 替换为 tal:content

您可能需要重新启动Plone网站才能看到您的更改。检查你的h1 - 它应该包含你需要的范围。

重要提示!上面的操作将为您提供没有特定模板的每个通用视图,覆盖。对于这些情况,您需要自定义这些特定模板。

答案 1 :(得分:1)

我不是100%肯定(编辑欢迎:-D),我也不确定你想要什么,但我认为你需要自定义页面视图模板。

在Plone 3.x中,模板是/ portal_skins / plone_content / document_view模板,您可能想要更改

    <h1 class="documentFirstHeading"> 
        <metal:field use-macro="python:here.widget('title', mode='view')">
        Title
        </metal:field>
    </h1>

    <h1 class="documentFirstHeading"> 
        <span>
        <metal:field use-macro="python:here.widget('title', mode='view')">
        Title
        </metal:field>
        </span>
    </h1>

在Plone 4和4.1中,密钥模板是portal_skins / plone_kss / kss_generic_macros。寻找:

      <span metal:define-slot="inside" 
            tal:replace="context/Title">title</span>

并将“替换”更改为“内容”。

答案 2 :(得分:0)

感谢spliter,我现在已经完成了Section页面的样式。正如他所提到的,这些更改还会影响所有没有特定模板覆盖的通用视图。我猜这些是详细信息视图之类的东西,当点击某个特定文章下的特定文章时会出现这种情况。

所以,虽然我的章节页面按预期显示,但当我点击文章时,会发生以下情况:

如果我将span标记之间的文本设置为display:none,则该行为根本不会反映在详细信息页面中,因为跨度未应用于详细信息页面上的h1标记内。

但是,由于我在剖面页面上为h1元素设置了特定的背景图像,因此背景图像显示在详细页面h1上。

如何覆盖详细信息页面的行为? - 也就是说,我不希望在详细页面h1元素上显示背景图像。我需要能够分别在Section和Detail页面上解决h1元素。

对不起我在这里缺乏经验,但是习惯Plone工作的方式似乎是耗费时间的,至少对我而言。

答案 3 :(得分:-1)

在为你做了一些探讨后,我能够发现你正在寻找的宏位于'/ portal_skins / plone_kss / kss_generic_macros /',特别是你正在寻找'generic_title_view宏'。

如果你想知道我是怎么做到的,我首先看了一下main_template.pt文件并看到:

<metal:title define-slot="content-title">                              
    <metal:comment tal:content="nothing">
        If you write a custom title always use 
        <h1 class="documentFirstHeading"></h1> for it
    </metal:comment>
    <h1 metal:use-macro="context/kss_generic_macros/macros/generic_title_view">              
       Generic KSS Title. Is rendered with class="documentFirstHeading".                    
    </h1>                                                                                    
</metal:title>

从那里我只是在皮肤上寻找kss,希望这就是你想要的。