TYPO3:EXT:新闻不同的templateLayouts和相应的TypoScript

时间:2018-03-23 08:12:10

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

我已使用https://docs.typo3.org/typo3cms/extensions/news/AdministratorManual/Templates/TemplateSelector/Index.html

中显示的不同public IEnumerable<Domain.Order> List(ISpecification<Domain.Order> spec) { var queryableResultWithIncludes = spec.Includes .Aggregate(_dbContext.Set<DAL.Order>().AsQueryable().ProjectTo<Domain.Order>(), (current, include) => current.Include(include)); // throw exception here return secondaryResult.Where(spec.Criteria).AsEnumerable(); } 配置了EXT:新闻

一切正常。

现在我希望每个templateLayout有不同的TypoScript。 我有两种不同的列表类型:list-type 98和list-type 99.您可以在flexform中选择它们,并且fluid-templates开关正确。

但是如何为list-type 98和list-type 99分别设置一个typoscripts呢?

e.g。 list-type 98:每页5个新闻,列表类型99:每页10个新闻。

1 个答案:

答案 0 :(得分:1)

这可以采用一种解决方法。

1,创建TypoScript:

plugin.tx_news.settings {
 default {
  setting1 = abc
  list.image.width = 100
  detail.image.width = 123
 }
 type1 {
  setting1 = abcdef
  list.image.width = 200
 }
}

第二,采用模板

而不是默认的部分

<f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />

你现在可以做到这一点

# use a f:case if more than 1 templateLayout used
<f:if condition="{settings.templateLayout}">
 <f:then>
  <f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings.type1,iterator:iterator}" />
 <f:then>
 <f:else>
  <f:render partial="List/Item" arguments="{newsItem: newsItem,settings:settings.default,iterator:iterator}" />
 </f:else>
</f:if>

现在应该在这一行动中更改此部分内的所有设置。

我目前看到的缺点:

  • 您需要采用每个模板
  • 我想像plugin.tx_news.settings.default < plugin.tx_news.settings之类的东西也可以使用所有默认设置。