blogs - 在 Composite C1 中,如何将相同的博客应用程序/模块应用到多个页面

标签 blogs c1-cms

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

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

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

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

最佳答案

为了保持该线程的干净,以下是 Inna 在 Codeplex 讨论论坛上发布的答案:

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

  1. 创建名为 Composite.Community.Blog.Latest 的 XSLT
  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的选定字段包含PageId日期标题字段,您将需要它们生成博客条目 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. 然后在您想要显示 5 个最新博客条目列表的位置插入此 XSLT。 (注意:您不应该将博客应用程序添加到要显示最新条目列表的页面。)

关于blogs - 在 Composite C1 中,如何将相同的博客应用程序/模块应用到多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9998417/

相关文章:

javascript - 这是在 GitHub Pages 上实现博客功能的好方法吗?

razor - 复合 C1 Razor 功能 - 链接到外部 URL

visual-studio-2010 - 扩展 list 无效,CompositeC1WebFormExtensions.vsix

c1-cms - 在 Razor 函数中获取数据引用数据

php - 如何以编程方式发现给定域上的博客提要?

html - block 引用背景颜色跟随行长度

wordpress - WordPress 永久链接系统如何工作?

javascript - 为什么这段 JavaScript 代码没有执行?

membership-provider - 复合C1-成员资格提供程序-简单的注册和登录

testing - 负载测试复合 C1 CMS 控制台