讓我具體的例子說明一下:有不同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