2

我从这样的模板调用 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 网站不使用标准的新闻包。这是什么原因?

4

2 回答 2

0

Omnicorp 演示站点有自己的基于全局数据类型“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:创建一个页面类型=“新闻页面”的页面。将新闻项目添加到新闻页面数据文件夹(在页面下)。在 Content 选项卡上,具有 Composite.News.NewsList 函数,它将呈现带有详细信息链接的新闻列表。

于 2012-11-01T07:29:58.530 回答
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

于 2012-11-02T07:47:55.533 回答