在Plone 4上使用TALES隐藏getFolderContents结果的默认视图

时间:2013-07-29 13:11:05

标签: plone

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

我的网站结构如下所示:

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

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

<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条件来完成此操作吗?

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

1 个答案:

答案 0 :(得分:1)

你可以简单地使用Plone的context-utilities,如下所示:

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

如果你很勇敢,Six Feet Up提供了一个不错的quick-sheet,可以将更多变量引用作为PDF。

顺便说一下:我将条件应用于list-element而不是link元素,以便不呈现不必要的空列表元素。