0

我正在 Plone 4 站点上创建一个辅助导航栏,用于查看子文件夹的内容。

我的网站结构如下所示:

Plone Site
|
|--Folder1
   |--PageA
   |--PageB
|--Folder2
   |--PageC
   |--PageD

我的故事如下(我很欣赏这可能不是最优雅的代码):

<tal:subsections tal:define="isDocument python:getattr(context,'portal_type','') == 'Document';
                             isFolder python:getattr(context,'portal_type','') == 'Folder';
                             subitemsDocument python:context.aq_parent.aq_inner.getFolderContents(contentFilter={'portal_type':'Document'});
                             subitemsFolder python:context.getFolderContents(contentFilter={'portal_type':'Document'});
                             root_url context/portal_url;
                             front_url string:${root_url}/front-page;
                             current_url context/absolute_url;" tal:condition="context/portal_membership/isAnonymousUser">
  <ul id="subnav" tal:condition="isFolder">
    <tal:subtabsfolder tal:repeat="subitem subitemsFolder">
    <li tal:define="item_url subitem/getURL"
      tal:attributes="class python:current_url==item_url and 'selected' or 'plain'">
        <a tal:attributes="href subitem/getURL" tal:content="subitem/Title"/>
      </li>
    </tal:subtabsfolder>
  </ul>

  <ul id="subnav" tal:condition="isDocument">
    <tal:subtabsdocument tal:repeat="subitem subitemsDocument">
      <li tal:define="item_url subitem/getURL"
        tal:attributes="class python:current_url==item_url and 'selected' or 'plain'">
        <a tal:attributes="href subitem/getURL" tal:content="subitem/Title"
          tal:condition="python:front_url != current_url"/>
      </li>
    </tal:subtabsdocument>
  </ul>
</tal:subsections>

一切运行良好,我唯一的问题是我没有办法告诉模板忽略已用作容器默认视图的项目。

我可以使用 TALES 条件来完成此任务吗?

非常感谢任何帮助,谢谢。

4

1 回答 1

1

您可以简单地使用 Plone 的上下文实用程序,如下所示:

tal:condition="not: subitem/@@plone_context_state/is_default_page

如果您有兴趣的话,Six Feet Up 提供了一个不错的快速表格,以 PDF 形式提供更多可变参考。

顺便说一句:我会将条件应用于列表元素而不是链接元素,以免呈现不必要的空列表元素。

于 2013-07-29T14:22:47.977 回答