如何使新闻包中的NewsList以列表形式显示新闻

时间:2012-10-31 16:10:23

标签: c1-cms

我从这样的模板中调用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>   

我无法将其作为列表显示。它只显示detailsmode中的第一个newsitem。

NewsList功能的下一行是做什么的?

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

我和一位经验丰富的复合材料开发人员谈过,他无法让Composite.News.Newslist在列表中显示新闻。

更新: 我可以看到OMNICORP网站没有使用标准的新闻包。这是什么原因?

2 个答案:

答案 0 :(得分:0)

Omnicorp演示网站拥有自己的新闻模块,该模块基于全球数据类型&#34; Omnicorp.Content.News&#34;和XSLT功能&#34; Omnicorp.Content.News&#34;

Composite.News 包是不同的,并且基于名为&#34; Composite.News.NewsItem&#34;的页面数据文件夹。和两个XSLT函数:&#34; Composite.News.NewsList&#34;和&#34; Composite.News.NewsTeasers&#34;。因此,要使用此软件包,您应该按照此处描述的步骤进行操作 - http://docs.composite.net/Packages/CompositeNews:创建页面类型为&#34;新闻页面&#34;的页面。将新闻项添加到新闻页面数据文件夹(在页面下)。在“内容”选项卡上,使用Composite.News.NewsList函数,该函数将为新闻列表提供指向详细信息的链接。

答案 1 :(得分:0)

但是我可以让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" />

在功能模板标签上添加模板以显示PagingInfo:

<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