2012-01-31 108 views
1

我一直在解決這個問題有很多麻煩。在Umbraco的父節點上顯示子節點內容

我想要的是一個常見問題頁面,它在同一頁面上顯示所有問題和答案。它從子節點內容中獲取問題和答案的內容。

因此,例如,我的樹是這個樣子:

  • FAQ
    • 問題1
    • 問題2
    • 問題3

我要上FAQList的模板列表問答數據從同一頁上的問題1 ... 2 ...和3開始。

每次我嘗試找到這樣做的例子時,我只能找到列舉子頁面作爲鏈接的例子。我不想鏈接到子頁面。我想實際將他們的內容打印到父頁面上。那可能嗎?

這是我在它的嘗試:

<xsl:for-each select="$currentPage/node"> 

    Question: <xsl:value-of select="data [@alias = 'question']"/><br/> 

    Answer: <xsl:value-of select="data [@alias = 'answer']"/><br/> 

</xsl:for-each> 

但我沒有結果。在這裏幫助我。我對此感到震驚。

回答

3

這一切都取決於你正在運行的Umbraco版本。這裏有很多文檔指的是Umbraco的更早版本,並且不適用於更新的版本。

假設你的問題的文檔類型的別名叫做「FaqItem」,並假設這個XSLT是各自的內容節點上運行(即$currentPage爲您答疑解惑父節點),則可以使用以下命令:

如果您使用<一把umbraco 4.5.1

<xsl:for-each select="$currentPage/child::node[@nodeTypeAlias='FaqItem']"> 
    Question: <xsl:value-of select="./data[@alias='question']"/><br/> 
    Answer: <xsl:value-of select="./data[@alias='answer']"/><br/> 
</xsl:for-each> 

如果您使用> = 4.5.1一把umbraco

<xsl:for-each select="$currentPage/FaqItem"> 
    Question: <xsl:value-of select="./question"/><br/> 
    Answer: <xsl:value-of select="./answer"/><br/> 
</xsl:for-each> 

以供將來參考

如果你熟悉XPath和想弄清楚一把umbraco是如何存儲數據,或與調試提供幫助。查找名爲Umbraco.config的文件(通常在~/App_Data/中找到)。這是所有XSLT將從中讀取的緩存XML。將相關片段從此文件發佈到您的[Stack Overflow]問題將提高速度和獲得響應的機會,因爲XSLT貢獻者將能夠提供幫助,而不僅僅是Umbraco貢獻者。

+0

謝謝。這是對我有用的答案! – Bill 2012-02-02 21:31:31

1

必須看剃刀嗎?恕我直言,它是更容易閱讀和寫作。

@using System.Linq 
@using System.Xml.Linq 
@using umbraco.MacroEngines  

@{ 
    IEnumerable<DynamicNode> FAQs = new DynamicNode(Model.Id).Descendants("FaqItem").Items; 
    List<DynamicNode> faqList = FAQs.ToList(); 

    @foreach(DynamicNode faq in faqList){ 
     Question: @(faq.GetProperty("question").ToString()) 
     Answer: @(faq.GetProperty("answer").ToString()) 
    } 
} 
相關問題