Отображение содержимого подузла на родительском узле в Umbraco - PullRequest
1 голос
/ 31 января 2012

У меня были большие проблемы с выяснением этого.

Мне нужна страница часто задаваемых вопросов, которая отображает все вопросы и ответы на одной странице.Он получает контент из вопросов и ответов из контента подузла.

Так, например, мое дерево выглядит так:

  • FAQ
    • Question1
    • Question2
    • Question3

Я хочу, чтобы шаблон на 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>

Но у меня не было результатов.Помоги мне здесь.Я бьюсь головой об этом.

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Все зависит от версии Umbraco, которую вы используете. Существует много документации, которая ссылается на более раннюю версию Umbraco и просто не будет работать на более поздних версиях.

Предполагая, что псевдоним типа документа ваших вопросов называется 'FaqItem' и предполагая, что этот XSLT запущен на соответствующем узле контента (т.е. $currentPage - ваш родительский узел FAQ), вы можете использовать следующее:

Если вы используете

<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>

Если вы используете> = 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/). Это кэшированный XML, из которого будут считываться все XSLT. Размещение соответствующего фрагмента из этого файла в вашем вопросе [Переполнение стека] увеличит скорость и шансы получить ответ, поскольку помощники XSLT смогут помочь, а не только участники Umbraco.

1 голос
/ 31 января 2012

Надо было смотреть на бритву? ИМХО гораздо проще читать и писать.

@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())
    }
 }
...