让我具体的例子说明一下:有不同Sitecore的项目类型不同的显示
我有3种类型(模板)的消息:新的,外部新闻,产品发布;
我想以不同的方式在主页上显示它们。
现在我做一个简单的在我的xsl:
<xsl:variable name="upcoming" select="./item[sc:formatdate(sc:fld('End Date',.),'yyyyMMdd') >= sc:formatdate($now,'yyyyMMdd')" />
<xsl:for-each select="$upcoming">
<div>
<h2>
<sc:text field="Name" />
</h2>
<p>
<sc:text field="Description" />
</p>
</div>
</xsl:for-each>
拳的解决方案是类似的东西(很显然,我不知道真正的语法):
<xsl:choose>
<xsl:when test="template = 'external news'">
<!-- something -->
</xsl:when>
</xsl:choose>
但更好的是一个更加面向对象的方法,并有一个make_body()函数绑定到我可以从我的主页渲染调用的项目。
或者Sitecore有一种方法来渲染一个可以显示在任何页面上的项目;由物品本身处理的渲染?
您认为如何?
更新
我想我是不够清楚:
我想在我的主页上最后的消息框:
<div class="last_news">
<h2>Last News</h2>
<!-- Loop Goes here -->
</div>
我不同的新闻类型(新,外新闻,产品发布)当它们在该框中列出时具有不同的外观:
新:
<div class="news">
<h2><!-- title --></h2>
<p><!-- abridged text goes here --><p>
<a href="##news url##">read more</a>
</div>
外部新闻:
<div class="news external">
<img src="##website logo##">
<h2><!-- title --></h2>
<p><!-- abridged text goes here --><p>
<a href="##external url##">read more on www.<!-- site name --></a>
</div>
产品发布:
<div class="news product_release">
<div class="float_left">
<img src="##product logo##">
<a href="##product url##">Download now</a>
<a href="##product download url##">Download now</a>
</div>
<h2><!-- title --></h2>
<p><!-- abridged text goes here --><p>
<a href="##news url##">read more</a>
</div>
每个新闻类型都有它不同的领域
- 新的自己的模板:标题,删节的文字,全文
- 外部新闻:标题,删节的文字,外部网址,网站选择框
- 产品发布:标题,删节的文字,全文,产品选择框
我可以做一个sublayouts(的.ascx)或效果图(.xslt),但现在我想知道如何在我的循环中显示那些。
我可以在我的循环中放置一个占位符,并且Sitecore会知道占位符必须由当前项使用吗?
您是否希望坚持使用XSLT(yuck!)或愿意切换到C#并使用子布局(用户控件)或编译的Web控件? – 2011-05-05 03:42:34
您尚未提供正在处理的XML文档。如果你这样做,我会向你展示一个简单而优雅的XSLT解决方案。 – 2011-05-05 03:50:39
我强烈建议你使用C#并使用子布局。 xsl适合简单的解决方案,但是当事情变得更加复杂时,您可能需要切换到子布局/用户控件。 – Younes 2011-05-05 07:28:37