静的に生成されたオブジェクトの一覧ページに特定のパラメタを付与することで、動的ページネーションを実装できます。
動的ページネーションを動作させるためには、パラメタ付きリクエストをダイナミック・パブリッシングの対象にしておく必要があります。
RewriteEngine On
RewriteCond %{QUERY_STRING} (=)
RewriteRule ^(.*)$ /powercmsx/html/pt-view.php
パラメタ | 指定する値 |
---|---|
_filter | モデル名を指定します。 |
offset | オフセット値(スキップする件数)を数字で指定します。 |
limit | 表示する件数を数字で指定します。 |
このウェブサイトの「ドキュメント」のページで、動作を確認いただけます。
テンプレート変数名 | 値 |
---|---|
current_archive_url | 現在のページのURL(この変数はすべてのページでセットされます) |
object_count | 条件に合致するオブジェクトの総数がセットされます |
prev_offset | 1つ前のページのオフセット値(スキップする件数)がセットされます |
next_offset | 1つ次のページのオフセット値(スキップする件数)がセットされます |
current_page | 現在のページがページネーションの何ページ目かを示す数字がセットされます |
この例では、1ページ目については静的生成、2ページ目以降は動的生成となります。
<!--ページ送り件数--><mt:setvar name="pagination_limit" value="25">
<mt:pages sort_by="published_on" direction="ascend" cols="title,published_on" include_workspaces="this" limit="$pagination_limit">
<mt:if name="__first__">
<ul>
</mt:if>
// 中略
<mt:if name="__last__">
</ul>
<mt:include module="(Website) Pagination" pagination_limit="$pagination_limit" filter_model="page">
</mt:if>
</mt:pages>
<mt:if name="object_count" op="/" value="$pagination_limit" like=".">
<mt:setvar name="is_divisible" value="0">
<mt:else>
<mt:setvar name="is_divisible" value="1">
</mt:if>
<mt:var name="object_count" setvar="count_for_pager">
<mt:if name="is_divisible">
<mt:var name="object_count" decrement setvar="count_for_pager">
</mt:if>
<mt:if name="object_count" gt="$pagination_limit">
<mt:for from="0" to="$count_for_pager" step="$pagination_limit">
<mt:if name="__first__"><ul class="pagination justify-content-center">
<mt:if name="request.offset">
<mt:if name="prev_offset" gt="-1">
<li class="page-item">
<a class="page-link" href="<mt:var name="current_archive_url">?_filter=<mt:var name="filter_model">&limit=<mt:var name="pagination_limit"><mt:if name="prev_offset">&offset=<mt:var name="prev_offset"></mt:if>" aria-label="<mt:trans phrase="Previous">">
<span aria-hidden="true">‹</span>
<span class="sr-only"><mt:trans phrase="Previous"></span>
</a>
</li>
</mt:if>
</mt:if>
</mt:if>
<li class="page-item">
<mt:if name="__counter__" eq="$current_page">
<strong class="page-link"><mt:var name="__counter__"></strong>
<mt:else>
<a class="page-link" href="<mt:var name="current_archive_url">?_filter=<mt:var name="filter_model">&<mt:if name="__value__">offset=<mt:var name="__value__">&</mt:if>limit=<mt:var name="pagination_limit">"><mt:var name="__counter__"></a>
</mt:if>
</li>
<mt:if name="__last__">
<mt:if name="current_page" eq="$offset_last">
<mt:unless name="is_divisible">
<mt:setvar name="has_next" value="1">
</mt:unless>
<mt:elseif name="current_page" le="$offset_last">
<mt:setvar name="has_next" value="1">
<mt:elseif name="current_page" eq="1">
<mt:setvar name="has_next" value="1">
</mt:if>
<mt:if name="has_next">
<li class="page-item">
<a class="page-link" href="<mt:var name="current_archive_url">?_filter=<mt:var name="filter_model">&limit=<mt:var name="pagination_limit">&offset=<mt:if name="next_offset"><mt:var name="next_offset"><mt:else><mt:var name="pagination_limit"></mt:if>" aria-label="<mt:trans phrase="Next">">
<span aria-hidden="true">›</span>
<span class="sr-only"><mt:trans phrase="Next"></span>
</a>
</li>
</mt:if>
</ul>
</mt:if>
</mt:for>
</mt:if>