如何在XSLT中进行分页
我有以下XSLT:如何在XSLT中进行分页,xslt,pagination,umbraco,Xslt,Pagination,Umbraco,我有以下XSLT: <xsl:template match="/"> <div id="dokumentliste"> <xsl:variable name="alleNyheder" select="$currentPage//node" /> <xsl:for-each select="$alleNyheder"> <xsl:sort data-type="text" select="@cre
<xsl:template match="/">
<div id="dokumentliste">
<xsl:variable name="alleNyheder" select="$currentPage//node" />
<xsl:for-each select="$alleNyheder">
<xsl:sort data-type="text" select="@createDate" order="descending" />
<xsl:if test="./data[@alias='manchet'] != ''">
<div class="newsitem">
<h2>
<xsl:value-of select="./data[@alias='title']"/>
</h2>
<xsl:if test="./data[@alias = 'manchet'] != ''">
<div class="nyhedContent">
<p>
<span class="dokumentListeDato">
<xsl:choose>
<xsl:when test="./data[@alias='date'] != ''">
<xsl:value-of select="umbraco.library:FormatDateTime(./data[@alias='date'], 'dd. MMMM yyyy')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="umbraco.library:FormatDateTime(./@createDate, 'dd. MMMM yyyy')"/>
</xsl:otherwise>
</xsl:choose>
</span>
<xsl:value-of select="./data[@alias = 'manchet']"/>
</p>
</div>
</xsl:if>
<div class="dokumentListe_laes_mere">
<a href="{umbraco.library:NiceUrl(@id)}">
Læs mere<img src="/frontend/images/macro/macro_laes_mere.png" alt="Læs mere"/>
</a>
</div>
</div>
<!-- End newsitem -->
</xsl:if>
</xsl:for-each>
</div>
</xsl:template>
我正在制作一个新闻列表,并想做一些分页。几乎和谷歌上看到的一样。你知道“平常的那个”
但我不知道怎么做
每页上的新闻条数并不是那么重要,但让我们假设每页有10条。当显示前10条新闻时,我希望显示分页。“下一步”和“上一步”按钮位于数字的右侧和左侧
有可能做到这一点吗?我对我的问题解释得够好了吗?顺便说一下,我使用的是Umbraco CMS:)
多谢各位
-金类似这样的事情:
我还留下了一些代码,用于处理列表中的图像:-)
0
-
无img
最后的
页
1.
我现在想明白了。我可以看到您刚刚复制/粘贴了Tim Geyssens在此处制作的页码:
代码也很好,但为了让它工作,我做了一些修改。我不知道我是否应该接受我自己的答案是正确的,来自Myster的答案是正确的,或者我是否可以删除这篇文章?Myster几乎可以,但不是全部:)当我在第一页时,它会显示第1页,这很好。但是链接没有显示出来。当我说链接时,我想到了数字和“下一步”按钮。我设置$recordsPerPage=5,有12个新闻项,因此应该有第1、2和3页。如果您使用visual studio并设置了调试,则可以在xsl:If上设置断点,并在“下一步”按钮周围设置断点,然后检查变量。我想你的号码没有设置正确。所有节点都已发布吗?为了确保从树上重新发布,并勾选publish all childrenheh,它被复制和粘贴了很多次,我不知道它来自tim;-)蒂姆总是有很多好东西。如果我的回答有错误,请告诉我,我认为我们在不同的站点上使用相同的xslt。
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:template match="/">
<xsl:variable name="recordsPerPage" select="2"/>
<xsl:variable name="pageNumber">
<xsl:choose>
<!-- first page -->
<xsl:when test="umbraco.library:RequestQueryString('page') <= 0 or string(umbraco.library:RequestQueryString('page')) = '' or string(umbraco.library:RequestQueryString('page')) = 'NaN'">0</xsl:when>
<!-- what was passed in -->
<xsl:otherwise>
<xsl:value-of select="umbraco.library:RequestQueryString('page')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="numberOfRecords" select="count($currentPage/node)"/>
<!-- The fun starts here -->
<xsl:call-template name="pagination">
<xsl:with-param name="pageNumber" select="$pageNumber"/>
<xsl:with-param name="recordsPerPage" select="$recordsPerPage" />
<xsl:with-param name="numberOfRecords" select="$numberOfRecords" />
</xsl:call-template>
<ul class="listing self-clear">
<xsl:for-each select="$currentPage/node [string(data [@alias='umbracoNaviHide']) != '1']">
<xsl:sort order="descending" select="data[@alias='releasedOn']"></xsl:sort>
<xsl:if test="position() > $recordsPerPage * number($pageNumber) and position() <= number($recordsPerPage * number($pageNumber) + $recordsPerPage )">
<li>
<xsl:attribute name="class">
<xsl:if test="data[@alias='image'] = ''">
no-img
</xsl:if>
<xsl:if test="position() = $recordsPerPage * (number($pageNumber) + 1)">
last
</xsl:if>
</xsl:attribute>
<h3>
<a href="{umbraco.library:NiceUrl(@id)}">
<xsl:value-of select="@nodeName"/>
</a>
</h3>
<xsl:if test="data[@alias='image'] != ''">
<img src="{data[@alias='image']}" class="drop-shadow" />
</xsl:if>
<p class="date"><xsl:value-of select="umbraco.library:LongDate(data[@alias='releasedOn'])"/></p>
<xsl:value-of select="data[@alias='abstract']" disable-output-escaping="yes"/>
<a href="{umbraco.library:NiceUrl(@id)}" class="read-more">Read More</a>
</li>
</xsl:if>
</xsl:for-each>
</ul>
<xsl:call-template name="pagination">
<xsl:with-param name="pageNumber" select="$pageNumber"/>
<xsl:with-param name="recordsPerPage" select="$recordsPerPage" />
<xsl:with-param name="numberOfRecords" select="$numberOfRecords" />
</xsl:call-template>
</xsl:template>
<xsl:template name="pagination">
<xsl:param name="pageNumber"/>
<xsl:param name="recordsPerPage"/>
<xsl:param name="numberOfRecords"/>
<div class="pagination">
<div class="wrapper">
<xsl:if test="(($pageNumber +1 ) * $recordsPerPage) < ($numberOfRecords)">
<a href="?page={$pageNumber +1}" class="next">Next</a>
</xsl:if>
<xsl:if test="$pageNumber > 0">
<a href="?page={$pageNumber -1}" class="prev">Prev</a>
</xsl:if>
<span class="page-nos">
Page
<xsl:call-template name="for.loop">
<xsl:with-param name="i">1</xsl:with-param>
<xsl:with-param name="page" select="$pageNumber +1"></xsl:with-param>
<xsl:with-param name="count" select="ceiling(count($currentPage/node)div $recordsPerPage)"></xsl:with-param>
</xsl:call-template>
</span>
</div>
</div>
</xsl:template>
<xsl:template name="for.loop">
<xsl:param name="i"/>
<xsl:param name="count"/>
<xsl:param name="page"/>
<xsl:if test="$i <= $count">
<span>
<xsl:if test="$page != $i">
<a href="{umbraco.library:NiceUrl($currentPage/@id)}?page={$i - 1}" >
<xsl:value-of select="$i" />
</a>
</xsl:if>
<xsl:if test="$page = $i">
<xsl:value-of select="$i" />
</xsl:if>
</span>
</xsl:if>
<xsl:if test="$i <= $count">
<xsl:call-template name="for.loop">
<xsl:with-param name="i">
<xsl:value-of select="$i + 1"/>
</xsl:with-param>
<xsl:with-param name="count">
<xsl:value-of select="$count"/>
</xsl:with-param>
<xsl:with-param name="page">
<xsl:value-of select="$page"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>