blogスタッフブログ
HOME > スタッフブログ > CMS > PowerCMS X >PowerCMS Xの解体 テーマの解析 [サイドバー]

PowerCMS Xの解体 テーマの解析 [サイドバー]

初めに

「これから始める!PowerCMS X」はしばらくお休みです。
今回からはPowerCMS Xの理解を深めるために、搭載されているテーマを解析していきます。
既存のテーマを解析し、入力されているMTタグがどのように動作するか、確かめていきたいと思います。

テーマについて

解析するテーマは、PowerCMS Xに搭載されている「website」です。
WordPressでいうところの「twentytwenty」などが該当します。
今回はサイドバーの年別アーカイブについて、解析したいと思います。

右側にあるのがサイドバーです。

それでは、ビューを見てみましょう。
HTMLと照らし合わせて確認したところ、この箇所が年度別の役割をしているようです。

<mt:setvartemplate name="date_based_list">
<mt:setvarblock name="date_based_list_result">
<mt:setvar name="date_based_exists" value="0">

<mt:archivelist type="$archive_type" container="entry" sort_order="desc">
<mt:if name="__first__">
<div class="card mb-3">
  <h3 class="card-header lead"><small><mt:var name="date_archive_title"></small></h3>
  <div class="card-body card-inner-list">
  <ul class="list-group list-group-flush">
</mt:if>
<mt:if tag="entriescount" ignore_archive_context="category"><mt:setvar name="date_based_exists" value="1">
    <li class="list-group-item">
      <a href="<mt:archivelink>"><mt:archivetitle format="$date_format"> (<mt:entriescount ignore_archive_context="category" include_workspaces="this">)</a>
    </li>
</mt:if>
<mt:if name="__last__">
  </ul>
  </div>
</div>
</mt:if>
</mt:archivelist>

</mt:setvarblock>

<mt:if name="date_based_exists">
<mt:var name="date_based_list_result">
</mt:if>

</mt:setvartemplate>

<mt:ifarchivetype archive_type="fiscal-yearly">

  <mt:setvar name="archive_type" value="fiscal-yearly">
  <mt:trans phrase="Fiscal-Yearly" language="$language" setvar="date_archive_title">
  <mt:trans phrase="\F\i\s\c\a\l Y" language="$language" setvar="date_format">
  <mt:var name="date_based_list">
</mt:ifarchivetype>

<mt:ifarchivetype archive_type="yearly">
   <mt:setvar name="archive_type" value="yearly">
  <mt:trans phrase="Yearly" language="$language" setvar="date_archive_title">
  <mt:trans phrase="Y" language="$language" setvar="date_format">
  <mt:var name="date_based_list">
</mt:ifarchivetype>

<mt:ifarchivetype archive_type="monthly">
  <mt:setvar name="archive_type" value="monthly">
  <mt:trans phrase="Monthly" language="$language" setvar="date_archive_title">
  <mt:trans phrase="F, Y" language="$language" setvar="date_format">
  <mt:var name="date_based_list">
</mt:ifarchivetype>

以下の3つは変数の設定です。
「date_based_list」は、アーカイブページへのリンクを出力する処理をテンプレートとして変数に格納しています。
「date_based_list_result」は、リンクを出力したHTMLを保存する変数です。
「date_based_exists」は、表示するliがあるかどうかの判定になります。

<mt:setvartemplate name="date_based_list">
<mt:setvarblock name="date_based_list_result">
<mt:setvar name="date_based_exists" value="0">

変数の下にある<mt:archivelist>タグは、アーカイブページへのリンクを出力するためのタグです。
typeにはアーカイブの種類を指定でき、'yearly', 'monthly', 'daily', 'fiscal-yearly'の4種類があります。

今回は「年度別」「年別」「月別」の3種類のアーカイブが想定されているため、「$archive_type」の形にすることでどの種類でも対応することができます。

<mt:archivelist type="$archive_type" container="entry" sort_order="desc">

次に、if文を見てみましょう。
「__first__」「__last__」は以前に紹介したため、省略します。

このif文には「entriescount」というタグが入力されています。
ここでは記事が0以上か確認し、画面に表示するliがあれば「date_based_exists」の値(value)を1に書き換えます。

<mt:if tag="entriescount" ignore_archive_context="category">
 <mt:setvar name="date_based_exists" value="1">
<li class="list-group-item">
<a href="<mt:archivelink>">
   <mt:archivetitle format="$date_format"> 
    (<mt:entriescount ignore_archive_context="category" include_workspaces="this">)
   </a>
</li>
</mt:if>

上記の処理後「date_based_exists」の値が1以上ならば、「date_based_list_result」を呼び出し、リンクを出力したHTMLを表示します。

<mt:if name="date_based_exists">
<mt:var name="date_based_list_result">
</mt:if>

最後に、以下のコードはそれぞれ「年度別」「年別」「月別」のリンクを表示するコードです。
登録したURLマップに応じたリンクを表示します。

年度別
<mt:ifarchivetype archive_type="fiscal-yearly">

<mt:setvar name="archive_type" value="fiscal-yearly">
<mt:trans phrase="Fiscal-Yearly" language="$language" setvar="date_archive_title">
<mt:trans phrase="\F\i\s\c\a\l Y" language="$language" setvar="date_format">
  <mt:var name="date_based_list">
</mt:ifarchivetype>

年別
<mt:ifarchivetype archive_type="yearly">

   <mt:setvar name="archive_type" value="yearly">
   <mt:trans phrase="Yearly" language="$language" setvar="date_archive_title">
<mt:trans phrase="Y" language="$language" setvar="date_format">
  <mt:var name="date_based_list">
</mt:ifarchivetype>

月別
<mt:ifarchivetype archive_type="monthly">

  <mt:setvar name="archive_type" value="monthly">
  <mt:trans phrase="Monthly" language="$language" setvar="date_archive_title">
  <mt:trans phrase="F, Y" language="$language" setvar="date_format">
  <mt:var name="date_based_list">
</mt:ifarchivetype>

URLマップを二つ登録していた場合は両方表示されますので、用途に合わせたコードを書き換えや、削除をしてください。
画像は「年度別」「月別」の2種を登録した時の表示です。

最後に

今回は「Website」テーマの年別アーカイブについて解析しました。
変数の設定・呼び出し位置を応用することで、このような複雑なテンプレートも作成できるようです。 

ここまで読んでいただきありがとうございました。

最近の記事

カテゴリ

アーカイブ

スタッフ別