【问题标题】:How to make NewsList from News package show news as list如何使新闻包中的新闻列表将新闻显示为列表
【发布时间】:2012-11-02 15:47:55
【问题描述】:

我正在从这样的模板调用 NewsList(来自标准 Composite.News 包):

<f:function name="Composite.News.NewsList" xmlns:f="http://www.composite.net/ns/function/1.0"> 
<f:param name="ListOptions" value="Show date,Show teaser" /> 
<f:param name="PageSize" value="10" /> 
<f:param name="DateFormat" value="dddd, MMMM dd, yyyy" /> 
</f:function>   

我无法将新闻显示为列表。它只显示详细信息模式中的第一个新闻站点。

NewsList 函数中的下面一行是做什么的?

如何使控件在列表中显示我的新闻,而不是第一个(最近的)项目?

我与一位更有经验的 Composite 开发人员交谈过,他也无法让 Composite.News.Newslist 在列表中显示新闻。

更新: 我可以确定 OMNICORP 网站不使用标准的新闻包。这是什么原因?

【问题讨论】:

    标签: c1-cms


    【解决方案1】:

    Omnicorp Demo Site 有自己的News 模块,基于全局数据类型“Omnicorp.Content.News”和XSLT 函数“Omnicorp.Content.News”

    Composite.News 包不同,它基于名为“Composite.News.NewsItem”的页面数据文件夹和两个 XSLT 函数:“Composite.News.NewsList”和“Composite.News.NewsTeasers” .所以要使用这个包,你应该按照这里描述的步骤-http://docs.composite.net/Packages/CompositeNews:创建一个页面类型=“新闻页面”的页面。将新闻项目添加到新闻页面数据文件夹(在页面下)。在“内容”选项卡上,有 Composite.News.NewsList 函数,它将呈现带有详细信息链接的新闻列表。

    【讨论】:

    • 好的 - 但我怎样才能让 NewList 显示在旁边的分页中?我也无法将所有新闻都列在内容页面中
    • 注意,新闻条目是附加到特定页面的,功能NewsList应该被添加到这个页面的内容中,并且只有在这个页面上你才能看到它附加的新闻列表。您可以在需要的地方使用函数 NewsTeasers,它将呈现指向重新发送的新闻项目的链接。
    • 但是我可以让 NewsTeasers 列出所有新闻并设置分页吗?
    【解决方案2】:

    但是我可以让 NewsTeasers 列出所有新闻并设置分页吗?

    是的,你可以。您可以修改现有的 NewsTeaser 函数或创建新函数。在“函数调用”选项卡上修改“Composite.News.NewsItem.GetNewsItemXml”函数调用并使用下一个值指定下一个参数“PageNumber”和“IncludePagingInfo”:

        <f:param name="PageNumber">
            <f:function name="Composite.Web.Request.QueryStringIntegerValue">
                <f:param name="ParameterName" value="Page" />
                <f:param name="FallbackValue" value="1" />
            </f:function>
        </f:param>
        <f:param name="IncludePagingInfo" value="True" />
    

    在功能模板选项卡上添加模板以显示分页信息:

    <xsl:param name="pagingInfo" select="/in:inputs/in:result[@name='GetNewsItemXml']/PagingInfo" />
    

    ...

                <xsl:if test="$pagingInfo/@TotalPageCount &gt; 1">
                                <div class="Paging">
                                    <xsl:apply-templates select="$pagingInfo" />
                                </div>
                </xsl:if>
    

    ...

        <xsl:template match="PagingInfo">
        <xsl:param name="page" select="1" />
        <xsl:if test="$page &lt; @TotalPageCount + 1">
            <xsl:if test="$page = @CurrentPageNumber">
                <span><xsl:value-of select="$page" /></span>
            </xsl:if>
            <xsl:if test="not($page = @CurrentPageNumber)">
                <a href="?Page={$page}"><xsl:value-of select="$page" /></a>
            </xsl:if>
            <xsl:apply-templates select=".">
                <xsl:with-param name="page" select="$page+1" />
            </xsl:apply-templates>
        </xsl:if>
    </xsl:template>
    

    有关如何将分页添加到 XSLT 的更多信息,请阅读这篇文章-http://docs.composite.net/XSLT/SortingAndPaging

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2013-07-25
      相关资源
      最近更新 更多