2

我已成功将博客应用程序添加到名为“博客”的新页面。现在我有一个不同的“AboutUs”页面,我想要一个最新的五个博客帖子的列表。为此,我创建了一个类似于 Community.Blog.Renderer 的新 XSLT 函数,它可以根据我的要求显示博客。

接下来,我将博客应用程序添加到“AboutUs”页面。但似乎这是一个不同的应用程序。我想要达到的目标:

  1. “关于我们”页面上的一个小部件,显示在“博客”页面上发布的最新 5 个博客的列表。
  2. 每个此类小部件中的“阅读更多”按钮,单击该按钮将重定向到“博客”页面上的相应博客。

我是复合 C1 的新手,到目前为止我非常喜欢它。我希望复合 C1 能够以某种方式满足我的要求并且不会让我失望。感谢您的关心。

4

1 回答 1

2

为了保持这个线程干净,这是 Inna 在 codeplex 讨论论坛上发布的答案:

您可以通过创建一个简单的 XSLT 来实现这一点:

  1. 例如,创建名为Composite.Community.Blog.Latest的 XSLT
  2. Function Call选项卡上添加两个函数“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 的 Selected Fields包含PageIdDateTitle字段,您将需要它们来生成博客条目 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 个最新博客条目列表的位置。(注意:您不应该将博客应用程序添加到要显示最新条目列表的页面。)

于 2012-04-07T05:45:55.293 回答