アーカイブアクション

アーカイブアクション(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 ファイルの内容です。リンクリスト部品の一部を調整したい場合は サイトテーマ内にこのファイルをコピーして利用してください。

MonthlyArchive クラス

ページテンプレートに渡される archive 変数は MonthlyArchive クラスのオブジェクトです。 現在のアーカイブの仕組みは、1ヶ月単位で 3(四半期)や 6 (半期)12 (1年)という期間を指定できるため MonthlyArchive というクラス名になっています。

MonthlyArchive クラスでは次のメソッドを利用できます。

getItems()
該当アーカイブページのコンテンツリストを返します。
引数:なし
返り値:Collectionクラス(配列のように利用できます)
getLinks()
各アーカイブページへのリンクリストを作成するための情報を返します。
引数:なし
返り値:リンク情報を配列で返します。
getDateString()
現在のアーカイブ日付の文字列を返す
引数:なし
返り値:2020-01-01 のような日付文字列を返します。
hasPrev()
前ページがあるかどうかを確認する
引数:なし
返り値:ブール値。前ページがある場合は true を返す。
hasNext()
次ページがあるかどうかを確認する
引数:なし
返り値:ブール値。次ページがある場合は true を返す。
prevUrl()
前ページのURLを返す。
引数:なし
返り値:前ページのURLを文字列で返す。前ページが無い場合は '#' を返します。
nextUrl()
次ページのURLを返す。
引数:なし
返り値:次ページのURLを文字列で返す。次ページが無い場合は '#' を返します。
url()
指定ページ番号のURLを返す。
引数:ページ番号を指定します。 "" や '' で囲わずに 3 のように数値だけを指定します。
返り値:指定ページのURLを文字列で返します。
getYear()
現在のアーカイブ年の文字列を返します。
引数:なし
返り値:2020 のような文字列を返します。
getMonth()
現在のアーカイブ月の文字列を返します。
引数:なし
返り値:01 のような文字列を返します。
getOptions()
アーカイブオプションの設定値を返します
引数:なし
返り値:options 項目の配列を返します。