アーカイブアクション(archive)は、ページやコレクションコンテンツを期間毎に表示したい場合に利用します。
アーカイブアクションを利用するためには、ページコンテンツタイプの設定項目 action に 'archive' を指定します。 options 項目にアクションの設定を定義します。
オプション設定
項目 | 例 | 説明 |
---|---|---|
base_type | page | ページネーション対象のコンテンツベースタイプ(page または collection)を指定します。 |
content | info_article | ページネーション対象のコンテンツタイプ名を指定します。 |
route | /information/archive/{year}.html | 2ページ目以降のパスを定義します。パスに {year} と {month} を定義して年や月を受け取れるようにします。※年アーカイブの場合は {month} は不要です。 |
month | 12 | アーカイブ期間の月数を指定します。1ヶ月毎のアーカイブの場合は 1 を指定します。1年毎の場合は 12 を指定します。 3 を指定して四半期毎にアーカイブすることも可能です。 |
offset_month | 3 | アーカイブ開始月のオフセットを指定できます。4月開始の年度にしたい場合は 3 を指定します。 |
blank | 0 | アーカイブ期間の途中にデータが無い場合でもページを表示したい場合は 1 を指定します。設定値が0の場合に、たとえば 1月と3月にデータがある場合は 2月のページは表示されません。1 を設定するとデータが無くても 2月のページが表示されます。 |
sort | desc | アーカイブデータの表示順を指定します。昇順(古い順)にしたい場合は asc を指定します。降順(新しい順)にしたい場合は desc を指定します。 |
link_format | Y年 | アーカイブ一覧のリンクテキストのフォーマットを指定します。「Y年m月」 や 「Y年度」を指定できます。 |
設定例:
'info_archive' => [
'label' => 'お知らせアーカイブ',
'outline' => 'お知らせを年別に表示します。',
'dir' => '/information/',
'action' => 'archive',
'options' => [
'base_type' => 'page',
'content' => 'info_article',
'route' => '/information/archive/{year}.html',
'month' => 12,
'offset_month' => 0,
'blank' => 0,
'sort' => 'desc',
'link_format' => 'Y年',
],
'fields' => [
'content' => [
'label' => 'コンテンツ',
'type' => 'content',
],
],
],
テンプレートにはアーカイブに関する情報が archive 変数で渡されます。
archive.items で現在のアーカイブページの対象コンテンツを取り出せます。for 文で次のように展開して表示することができます。
<ul>
{% for item in archive.items %}
<li>
{{ field('info_type', item) }}
<a href="{{ item.path }}">{{ item.name }}</a>
({{ item.date|date('Y/m/d') }})
</li>
{% endfor %}
</ul>
アーカイブリンクリスト部品テンプレートは、各アーカイブページへのリンクを持つ部分的なテンプレートのことです。 CMSに用意されているテンプレートを読み込んで利用することができます。あるいは、独自にリンクリストテンプレートを作成することも可能です。
ページテンプレートで読み込む例:
{% include('cms/views/partials/monthly_archive.twig') %}
※年ごとのアーカイブでも monthly_archive.twig を利用できます。
アーカイブリンクリスト部品テンプレートの例:
{% if archive is defined %}
<nav>
<ul>
{% for index, link in archive.getLinks() %}
<li><a href="{{ archive.url(index) }}">{{ link.date|date(archive.options.link_format) }}</a></li>
{% endfor %}
</ul>
</nav>
{% endif %}
この例は public/themes/cms/views/partials/monthly_archive.twig ファイルの内容です。リンクリスト部品の一部を調整したい場合は サイトテーマ内にこのファイルをコピーして利用してください。
ページテンプレートに渡される archive 変数は MonthlyArchive クラスのオブジェクトです。 現在のアーカイブの仕組みは、1ヶ月単位で 3(四半期)や 6 (半期)12 (1年)という期間を指定できるため MonthlyArchive というクラス名になっています。
MonthlyArchive クラスでは次のメソッドを利用できます。