Kentico - 通过转换显示子项

时间:2017-02-15 12:59:05

标签: c# asp.net .net content-management-system kentico

我遇到的情况是编辑器可以选择子项的布局。

enter image description here

从上图中可以看出, NewsItems 的类型为 NewsContainer ,它为 NewItem类型的子项的布局提供了选项。如果选择的布局类型为每行两个项目,则子项目应垂直显示,否则应水平显示。下图显示了转换结构,我需要访问子新闻项的属性。

enter image description here

任何帮助将不胜感激。感谢。

PS:Kentico版本:10

根据评论更新 根据罗马的评论,我试过这个,但输出中仍然没有出现:

enter image description here

enter image description here

enter image description here

将单个转换直接应用于转发器的转换字段,生成输出,但在使用宏时不起作用。

4 个答案:

答案 0 :(得分:1)

我对你的描述感到有点困惑。转换将适用于那些News1-4页面吗?所以你需要访问父页面的布局属性,而不是子页面,对吗?如果是这样,我建议切换到Text / XML转换类型并使用此宏:

{%Documents[Documents[NodeAliasPath].Parent.NodeAliasPath].GetValue("LayoutField")%}

从屏幕截图中只看到FYI,NewsItems页面似乎不是容器页面类型 - >它更可能只是内容页面类型,无法列出标准页面。

答案 1 :(得分:1)

您可以实现两个单独的转换,并将它们的代码名称用作布局下拉列表中的值。现在你应该把一些列表网页部分(转发器,单一浏览器等)放在'容器上。页面并将{%Layout%}宏输入到Web部件转换字段中。

答案 2 :(得分:1)

更好的方法是使用宏有条件地填充转换字段。这样的事情。

{% CurrentDocument.ApplyTransformation( ([YOURCONDITION] ? "[TRANSFORMATION_A]" : "[TRANFORMATION_B]") ) %}

答案 3 :(得分:0)

Roman的方法很干净,但是如果你纯粹想在一次转型中做到这一点,那就是你要做的。

<%# IfCompare(Eval("Layout"), "horizontal", "The content if it's NOT horizontal", "the content if it IS horizontal") %>

IfCompare是一个奇怪的球,它是假的&#39;是第一个真实的&#39;是第二个(讨厌那个)。

您可以将所有逻辑放在&#34;&#34;那么,或者你可以让生活变得更容易,如果你对一些重复的代码没有问题,只显示两者并隐藏适用的那些

<div class="horizontalLayout <%# IfCompare(Eval("Layout"), "horizontal", "hidden", "") %>">
  Horizontal Here
</div>
<div class="verticalLayout <%# IfCompare(Eval("Layout"), "horizontal", "", "hidden") %>">
  Vertical Layout here
</div>

请参阅Transformation method references