В Composite C1, Как применить одно и то же приложение / модуль блога к нескольким страницам - PullRequest
2 голосов
/ 03 апреля 2012

Я успешно добавил приложение блога на новую страницу под названием «Блог».Теперь у меня есть другая страница "AboutUs", на которой я хочу получить список последних пяти публикаций в блогах.Для этого я создал новую функцию XSLT, аналогичную Community.Blog.Renderer, которая может отображать блоги в соответствии с моим требованием.

Затем я добавил приложение блога на страницу «AboutUs».Но, похоже, это другое приложение.Чего я хочу добиться:

  1. Небольшой виджет на странице "AboutUs", который отображает список последних 5 блогов, размещенных на странице "Блог".
  2. Кнопка «Подробнее» в каждом таком виджете, которая при нажатии будет перенаправлять на соответствующий блог на странице «Блог».

Я новичок в составном С1 и доэто мне очень понравилось.Надеюсь, композит C1 может как-то справиться с моими требованиями и не подвести меня.Высоко оценивая вашу заботу.

1 Ответ

2 голосов
/ 07 апреля 2012

Чтобы сохранить эту тему в чистоте, вот ответ Инны на дискуссионном форуме codeplex:

Этого можно добиться, создав простой XSLT:

  1. Создать XSLT для примера с именем Composite.Community.Blog.Latest
  2. На вкладке Вызов функции добавьте две функции "Composite.Community.Blog.Entries. GetEntriesXml " и "Composite.Community.Blog". . XsltExtensions", Исходный код, подобный этому

    <f:functions xmlns:f="http://www.composite.net/ns/function/1.0">
    <f:function name="Composite.Community.Blog.Entries.GetEntriesXml" localname="GetEntriesXml">
        <f:param name="PropertyNames">
            <f:paramelement value="Date" />
            <f:paramelement value="Teaser" />
            <f:paramelement value="PageId" />
            <f:paramelement value="Id" />
            <f:paramelement value="Title" />
        </f:param>
        <f:param name="OrderByField" value="Date" />
        <f:param name="OrderAscending" value="False" />
        <f:param name="PageSize" value="5" />
    </f:function>
    <f:function name="Composite.Community.Blog.XsltExtensions" localname="XsltExtensions" />
    </f:functions>
    

    Убедитесь, что Выбранные поля GetEntriesXml содержат Идентификатор страницы , Дата и Заголовок , они понадобятся вам для создания URL-адреса записи блога. .

  3. На вкладке Шаблон у вас будет что-то вроде этого:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:in="http://www.composite.net/ns/transformation/input/1.0" xmlns:lang="http://www.composite.net/ns/localization/1.0" xmlns:f="http://www.composite.net/ns/function/1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:be="#BlogXsltExtensionsFunction"  exclude-result-prefixes="xsl in lang f be">
        <xsl:template match="/">
        <html>
            <head></head>
            <body>
                <ul>
                    <xsl:for-each select="/in:inputs/in:result[@name='GetEntriesXml']/Entries">
                        <li>
                            <h3>
                                <xsl:value-of select="@Title" />
                            </h3>
                            <p>
                                <xsl:value-of select="@Teaser" />
                            </p>
                            <a href="~/page({@PageId}){be:GetBlogUrl(@Date, @Title)}">Read more...</a>
                        </li>
                    </xsl:for-each>
                </ul>
            </body>
        </html>
        </xsl:template>
    </xsl:stylesheet>
    
  4. Затем вставьте XSLT , где вы хотите показать список из 5 последних записей в блоге. ( примечание : вам не следует добавлять приложение блога на страницу, где вы хотите показать список последних записей.)

...