基于全局选项卡加载html(getText)

时间:2012-08-15 22:23:32

标签: plone

我正在尝试使用getText基于每个全局选项卡(每个选项卡将加载不同的html页面)加载不同的html页面。有没有人知道为每个不同的文本指定某个选项卡的代码?下面的代码将相同的文本加载到所有选项卡中:

<div class="col_3" metal:define-macro="highlights" i18n:domain="plone">
<h2>Highlights</h2>
<p> 
<tal:block tal:condition= "exists:here/graduate-study/highlghts-grad"
tal:replace="structure here/graduate-study/highlghts-grad/getText">Footer content here</tal:block>
</p>
</div>
<div class="col_3" metal:define-macro="highlights" i18n:domain="plone">
<h2>Highlights</h2>
<p> 
<tal:block tal:condition= "exists:here/undergraduate-study/highlghts-grad"
tal:replace="structure here/undergraduate-study/highlghts-grad/getText">Footer content here</tal:block>
</p>
</div>
所有标签的

等等......

2 个答案:

答案 0 :(得分:1)

Plone中的全局标签是导航根。您可以通过两种方式检测当前活动导航根目录:

  • 正文HTML标记有一个section-[id_of_section] CSS类,其中id_of_section因每个部分的路径名而异。

    从Viewlet或portlet中,您可以使用@@plone_layout视图检索这些类:

    tal:define="plone_layout context/@@plone_layout;
                bodyClass python:plone_layout.bodyClass(template, view)"
    

    之后你必须测试bodyClass值中是否存在某个state-字符串。

  • 直接从@@plone_portal_state视图中检索当前导航根:

    tal:define="plone_portal_state context/@@plone_portal_state;
                nav_root plone_portal_state/navigation_root;
                nav_root_id nav_root/getId"
    

    然后,您可以根据nav_root_id更改您的Viewlet或portlet。

但是请注意,每个导航根都有一个门户类型,可能还有一个接口声明,可用于注册Viewlet或portlet。检测确切的导航通常不是最好的选择。

答案 1 :(得分:0)

这种效应通常被称为“megamenu”。有一个产品为Plone http://plone.org/products/collective.collage.megamenu/实现了这个功能。我没有用它,但我肯定会建议你把它作为一个起点。