我在解决这个问题上遇到了很多麻烦。
我想要的是一个FAQ页面,它在同一页面上显示所有问题和答案。它从子节点内容的问题和答案中获取内容。
例如,我的树看起来像这样:
我希望FAQList上的模板在同一页面上列出Question1 ... 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>
但我没有结果。帮帮我吧我正在敲打这个。
答案 0 :(得分:3)
这一切都取决于你正在运行的Umbraco的版本。有很多文档指的是更早版本的Umbraco,而且根本不适用于更新的版本。
假设您的问题的文档类型别名称为'FaqItem'并假设此XSLT在相应的内容节点上运行(即$currentPage
是您的FAQ父节点),您可以使用以下内容:
如果你正在使用&lt; 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>
如果您使用的是&gt; = Umbraco 4.5.1
<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贡献者。
答案 1 :(得分: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())
}
}