首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPO3新闻-定义自己的模板

TYPO3新闻-定义自己的模板
EN

Stack Overflow用户
提问于 2017-03-13 14:22:51
回答 1查看 1.2K关注 0票数 0

我使用的是带有新闻扩展的TYPO3 7.6.14。我想在后端的不同视图之间切换。

根目录中的页TS:

代码语言:javascript
复制
tx_news.templateLayouts {     
 Custom = Gesamter Artikel2
}

代码语言:javascript
复制
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers"
      xmlns:n="http://typo3.org/ns/GeorgRinger/News/ViewHelpers"
      data-namespace-typo3-fluid="true">
<f:layout name="General" />
<!--
    =====================
        Templates/News/List.html
-->

<f:section name="content">
    <!--TYPO3SEARCH_end-->
    <f:if condition="{news}">
        <f:then>
            <div class="news-list-view">
                <f:if condition="{settings.hidePagination}">
                    <f:then>
                        <f:for each="{news}" as="newsItem">
                            <f:if condition="{0:settings.templateLayout} == {0:'Custom}">
                                <f:then>
                                    <f:render partial="List/GesamteArtikel" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                                </f:then>
                                <f:else>
                                    <f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                                </f:else>
                            </f:if>
                        </f:for> 
                    </f:then>
                    <f:else>
                        <n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit}">
                            <f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
                                <f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
                            </f:for>
                        </n:widget.paginate>
                    </f:else>
                </f:if>
            </div>
        </f:then>
        <f:else>
            <div class="no-news-found">
                <f:translate key="list_nonewsfound" />
            </div>
        </f:else>
    </f:if>
    <!--TYPO3SEARCH_begin-->
</f:section>
</html>

在我拥有List.html的同一个文件夹中,我添加了自己的文件GesamteArtikel.html

我做错了什么?

编辑:

(更改文件位置)

我发现它没有任何影响。我把它改成了这样的:

代码语言:javascript
复制
            <f:then>
                <f:for each="{news}" as="newsItem">
                    <f:if condition="{settings.templateLayout} == 'Custom'">
                        <f:then>
                            <f:render partial="GesamteArtikel" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                        </f:then>
                        <f:else>
                            <f:render partial="GesamteArtikel" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                        </f:else>
                    </f:if>
                </f:for> 
            </f:then>

它什么也没做。

它用

代码语言:javascript
复制
            <f:else>
                <n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit}">
                    <f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
                        <f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
                    </f:for>
                </n:widget.paginate>
            </f:else>

然后我把它改成

代码语言:javascript
复制
            <f:else>
                <n:widget.paginate objects="{news}" as="paginatedNews" configuration="{settings.list.paginate}" initial="{offset:settings.offset,limit:settings.limit}">
                    <f:for each="{paginatedNews}" as="newsItem" iteration="iterator">
                        <f:if condition="{settings.templateLayout} == 'Layout'">
                            <f:then>
                                <f:render partial="GesamteArtikel" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                            </f:then>
                            <f:else>
                                <f:render partial="List/Item" arguments="{newsItem: newsItem, settings:settings, className:className, view:'list'}"/>
                            </f:else>
                        </f:if>
                    </f:for>
                </n:widget.paginate>
            </f:else>

但是,只有当我告诉这两个If语句使用GesamteArtikel (自定义模板)时,它才会使用它,但我不想覆盖旧的item.html。我想在后端选择它时使用我的自定义布局.

EN

回答 1

Stack Overflow用户

发布于 2017-03-13 20:35:56

有两件事可能会有帮助:

首先,在比较中,你似乎遗漏了一个单引号:

<f:if condition="{0:settings.templateLayout} == {0:'Custom}">

您可以在不需要数组旁路的情况下进行字符串比较,所以您得到的结果是:

代码语言:javascript
复制
<f:if condition="{settings.templateLayout} == 'Custom'">

第二件事是定制布局文件的位置:

在我拥有List.html的同一个文件夹中,我添加了自己的文件GesamteArtikel.html

您需要将它放在部分根路径中的某个位置,比如部分根路径的EXT:my_ext/Resources/Private/Partials/List/兄弟级(以防覆盖该路径)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42765966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档