在单独的内容区域中拆分详细视图

时间:2018-03-21 10:10:10

标签: typo3 typoscript typo3-7.6.x tx-news

如何在单独的内容区域中拆分详细信息视图?

我将2个内容区域配置为后端布局:

backend_layout {
    colCount = 1
    rowCount = 2
    rows {
        1 {
            columns {
                1 {
                    name = News-Head
                    colPos = 0
                }
            }
        }
        2 {
            columns {
                1 {
                    name = News without Head
                    colPos = 22
                }
            }
        }
    }
}
单页视图的

和1个新闻布局:

tx_news.templateLayouts {
    20 = Detail (Head only)
}

之后,我将2个插件插入其关联的内容区域,并在单个插件上选择新闻布局20。

现在我在Fluid模板detail.html

中插入了一个开关
<f:if condition="{settings.templateLayout} == 20">
    <f:then>
        <h1>
            <f:if condition="{newsItem.alternativeTitle}">
                <f:then>
                    <n:titleTag>
                        <f:format.htmlentitiesDecode>{newsItem.alternativeTitle}</f:format.htmlentitiesDecode>
                    </n:titleTag>
                </f:then>
                <f:else>
                    <n:titleTag>
                        <f:format.htmlentitiesDecode>{newsItem.title}</f:format.htmlentitiesDecode>
                    </n:titleTag>
                </f:else>
            </f:if>
        </h1>
    </f:then>
    <f:else>
        <div class="news news-single">
            <div class="article" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div class="news-col">
                    <n:renderMedia news="{newsItem}" imgClass="img-responsive" videoClass="video-wrapper" audioClass="audio-wrapper">
                        <f:render partial="Detail/MediaContainer" arguments="{media: newsItem.media, settings:settings}" />
                    </n:renderMedia>
                </div>
                <div class="news-col">
                    <f:format.html>{newsItem.bodytext}</f:format.html>
                </div>
            </div>
        </div>
    </f:else>
</f:if>

但只有else分支的输出有效。为什么呢?
在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这是我的错!我完全忘了将我的页面变量 content_news_single 从我的主流体模板传递给我的部分。

TS设置:

page.10 = FLUIDTEMPLATE
page.10 {
    # ....
    variables{
        content_main < styles.content.get

        content_news_single < styles.content.get
        content_news_single.select.where = colPos = 22
    }
}

在这里,我忘记了传递变量 content_news_single

的定义
<div class="page">
    <f:render partial="header" arguments="{content_border:content_border}" />
    <f:render partial="body" arguments="{content_main:content_main,content_news_single:content_news_single}" />
    <f:render partial="footer" />
</div>

此外,我从未插入 {newsItem.title}

<f:if condition="{settings.templateLayout} == 20">
    <f:then>
        <n:format.nothing>
            <n:excludeDisplayedNews newsItem="{newsItem}" />
            <f:if condition="{newsItem.alternativeTitle}">
                <f:then>
                    <n:titleTag>
                        <f:format.htmlentitiesDecode>{newsItem.alternativeTitle}</f:format.htmlentitiesDecode>
                    </n:titleTag>
                </f:then>
                <f:else>
                    <n:titleTag>
                        <f:format.htmlentitiesDecode>{newsItem.title}</f:format.htmlentitiesDecode>
                    </n:titleTag>
                </f:else>
            </f:if>
            <f:render partial="Detail/Opengraph" arguments="{newsItem: newsItem, settings:settings}" />
        </n:format.nothing>
        <h1>
            {newsItem.title}
        </h1>
    </f:then>
    <f:else>
        <div class="news news-single">
            <div class="article" itemscope="itemscope" itemtype="http://schema.org/Article">
                <div class="news-col">
                    <n:renderMedia news="{newsItem}" imgClass="img-responsive" videoClass="video-wrapper" audioClass="audio-wrapper">
                        <f:render partial="Detail/MediaContainer" arguments="{media: newsItem.media, settings:settings}" />
                    </n:renderMedia>
                </div>
                <div class="news-col">
                    <f:format.html>{newsItem.bodytext}</f:format.html>
                </div>
            </div>
        </div>
    </f:else>
</f:if>