Typo3列出特定系统类别的子级(新闻扩展)

时间:2018-07-24 05:42:40

标签: typo3

我在Typo3中有一个系统类别树:

─┬─A─┬─A1
 │   └─A2
 │
 └─B─┬─B1
     ┼─B2
     └─B3

我想渲染B树的子代。

在每个子新闻项上,我都能在每次迭代中获得字符串中的类别

<f:for each="{news}" as="newsItem" iteration="iterator">
    <!-- render partial="List/ServiceItem" -->
<div
<f:if condition="{newsItem.categories}">
            data-groups="[<f:for each="{newsItem.categories}" as="category" iteration="iteratorCategories">'{category.title}'<f:if condition="{iteratorCategories.isLast}"><f:then></f:then><f:else>,</f:else></f:if></f:for>]"
        </f:if>
>{newsItem.title} & other stuff</div>
</f:for>

我正在使用Shuffle.js来过滤列表,并且我需要所有B树子来创建组控件 我尝试过:

<div class="news-list-category"> categories:
  <f:for each="{categories}" as="category" iteration="iteratorCategories">
    <f:if condition="{category.title} == 'B'">
      {category.title}
       <f:debug>{category.children}</f:debug>
       <f:if condition="{category.children}">
            children:
            <f:for each="{category.children}"
                      as="subCategory"
                       iteration="iteratorSubCategories">
                 <span>{subCategory.title}</span>
             </f:for>
          </f:if>
     </f:if>
  </f:for>
</div>

category.children和category.item.children 返回null

if condition =“ {category.title} =='B' 进入正确的一级物品

我用过 typo3conf / ext / news / Resources / Private / Templates / Styles / Twb / Templates / Category / List.html

也作为参考

我是否应该在打字稿中这样做并传递给流体

 <f:cObject typoscriptObjectPath="lib.myTyposSubCategoryList" />

我去看看我是否可以得到Typoscript来渲染它,但是想要一个流畅的解决方案

谢谢

1 个答案:

答案 0 :(得分:0)

所以我建议你这样做:

在T3后端中创建一个新的新闻模块。并选择类别作为显示模块。您可以在主题文件夹的Templates/Category/List.html文件中自定义模块,以更改结构并使其与shuffle.js一起使用。该模块需要与列表模块包含在同一页面上,请确保选择要在其中找到列表模块的站点ID,然后在“设置”标签中禁用Disable overwriting of plugin settings复选框。

在模块中,您只需选择要显示的类别。我认为这可能是最简单的方法。

我使用相同的方法将“类别”菜单转换为下拉菜单:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">

<f:layout name="General" />
<!--
    =====================
        Templates/Category/List.html
-->

<f:section name="content">
    <f:if condition="{categories}">
        <f:then>
            <div class="news-cat-view side-news">
                <h3><f:translate key="categories" /></h3>
                <f:render section="categoryTree" arguments="{categories:categories,overwriteDemand:overwriteDemand}" />
            </div>
        </f:then>
        <f:else>
            <f:translate key="list_nocategoriesfound" />
        </f:else>
    </f:if>
</f:section>

<f:section name="categoryTree">
    <ul>
        <f:for each="{categories}" as="category">
            <li>
                <f:if condition="{category.item.uid} == {overwriteDemand.categories}">
                    <f:then>
                        <a href="javascript:;">{category.item.title}</a>
                    </f:then>
                    <f:else>
                        <a href="javascript:;">{category.item.title}</a>
                    </f:else>
                </f:if>

                <f:if condition="{category.children}">
                    <f:render section="categoryTreeSub" arguments="{categories: category.children,overwriteDemand:overwriteDemand}" />
                </f:if>
            </li>
        </f:for>
        <li class="parent reset" style="display: none;"><f:link.page pageUid="22"><f:translate key="back-link" /></f:link.page></li>
    </ul>
</f:section>

<f:section name="categoryTreeSub">
    <ul>
        <f:for each="{categories}" as="category">
            <li>
                <f:if condition="{category.item.uid} == {overwriteDemand.categories}">
                    <f:then>
                        <f:link.page title="{category.item.title}" class="active" pageUid="{settings.listPid}"
                            additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
                        </f:link.page>
                    </f:then>
                    <f:else>
                        <f:link.page title="{category.item.title}" pageUid="{settings.listPid}"
                            additionalParams="{tx_news_pi1:{overwriteDemand:{categories: category.item.uid}}}">{category.item.title}
                        </f:link.page>
                    </f:else>
                </f:if>
            </li>
        </f:for>
    </ul>
</f:section>

</html>