Templates 如何添加<;span>;Plone内部的标签<;h1>;要素

Templates 如何添加<;span>;Plone内部的标签<;h1>;要素,templates,customization,plone,Templates,Customization,Plone,我想更改标准的页面顶部元素,以便我可以设置它的样式 <h1 class="documentFirstHeading">My Heading</h1> 我的标题 是Plone在每个页面上放置此元素的方式。我想添加一个,以便该行显示: <h1 class="documentFirstHeading"><span>My Heading</span></h1> 我的标题 很明显,这段代码是由宏生成的,但我不知道如何生成 修改

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

<h1 class="documentFirstHeading">My Heading</h1>
我的标题
是Plone在每个页面上放置此元素的方式。我想添加一个,以便该行显示:

<h1 class="documentFirstHeading"><span>My Heading</span></h1>
我的标题
很明显,这段代码是由宏生成的,但我不知道如何生成 修改宏以添加我的跨距标记。有人能给我指一下房间吗 要修改的相应Plone文件?这将设置一个公共CSS图像 替换技术和其他Plone站点经常使用它,正如我看到的 在其他Plone站点上,span标记正好位于我需要它们的位置


感谢您的专业知识

在为您做了一些调查之后,我发现您要查找的宏位于“/portal\u skins/plone\u kss/kss\u generic\u macros/”,具体来说,您要查找的是“generic\u title\u view宏”

如果您想知道我是如何得到这个的,我首先查看了主_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标题。使用class=“documentFirstHeading”呈现。
从那以后,我就开始在皮肤中寻找kss,希望这就是你要找的。

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

在Plone 3.x中,模板是/portal\u skins/Plone\u content/document\u view模板,您可能需要进行更改

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

标题


标题
在Plone 4和4.1中,关键模板是portal_skins/Plone_kss/kss_generic_macros。寻找:

      <span metal:define-slot="inside" 
            tal:replace="context/Title">title</span>
标题
并将“替换”更改为“内容”。

这其实并不重要(操作基本相同),但我假设您正在创建主题包。我还假设您使用的是Plone 4.0或更新版本。行动包括:

  • 将*Products.CMFPlone/Products/CMFPlone/skins/plone_kss*中的*kss_generic_macro.pt*文件复制到主题的*skins/your_templates_文件夹*。一般来说,这称为“根据主题自定义模板”
  • 在第20行(不同Plone版本的行号可能不同),您将找到所需的块:

    头衔

要获得h1中的跨度,请将上面代码段中的tal:replace替换为tal:content

您可能需要重新启动Plone站点,以便查看您的更改。检查你的h1-它应该包含你需要的跨度


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

多亏了spliter,我现在已经完成了部分页面的样式设置。正如他所提到的,这些更改还影响了所有没有特定模板覆盖的通用视图。我猜这些都是类似细节视图的东西,当你点击特定章节下的特定文章链接时,就会出现细节视图

因此,尽管我的分区页面按预期显示,但当我单击一篇文章时,会发生以下情况:

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

但是,由于我正在为部分页面上的h1元素设置特定的背景图像,因此该背景图像确实会出现在细节页面h1上

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


很抱歉,我在这里缺乏经验,但至少对我来说,习惯Plone的工作方式似乎是在浪费时间。

为什么您在h1中使用这种毫无意义的跨度?@pynator如果您想应用某些CSS技术,这并不是毫无意义的。@saskiano您使用什么版本的Plone?不幸的是,它并没有任何用处。用于窗口、角点和边缘效果的各种技术需要额外的非语义标记。我可以建议,没有亲自看到问题的要点并不是否决它的充分理由吗?如果你对CSS样式有任何了解,这也不是无用的。标准图像替换技术:将范围内的文本设置为显示:无,然后使用背景图像设置为h1元素。保持h1的语义意图,同时允许许多创造性的图形呈现选项。事实并非如此,它仅在通过KSS替换标题时使用。他没有说他想自定义标题的实际内容,只是添加span标记,我得到了他使用此方法所要的确切结果。我不想猜测你或其他什么,因为我知道你更博学,几天前还回答了我的一个问题,只是想学习(大学生)。谢谢你,回溯。我浏览了所有的Plone文件,确实找到了document\u view\u template.pt,但它不包含对h1.documentFirstHeading的任何引用。事实上,对文件树的搜索没有找到任何引用该元素的文件!pt文件包含以下内容:Oops-下面是标题stuiff下面的代码:干预点在版本之间移动。我编辑了答案以涵盖Plone 4和4.1。
      <span metal:define-slot="inside" 
            tal:replace="context/Title">title</span>