この記事は この記事は、ビットスター Advent Calendar 2021 の 7日目 になります。
仕事で Movable Type のテーマを構築するとき、毎回似たようなところで困っては
ググってるんですが、どうもこのCMSに関する記事が少ないように感じるので、
今回は2つほどメモっておきます。
記事を全件取得したい
Movable Type は、テーマのカスタマイズに使用するテンプレートタグ(MTタグ)に
『モディファイア』 を組み合わせることで、MTタグの出力結果を加工・修正出来ます。
「TOPページ」や「お知らせ一覧」ページでよく使う、記事を取得する <mt:Entries>
ですが、モディファイアを何も設定しなかった場合は、管理画面の値を参照してその値分の記事を取得します。
(「設定」→「全般」→「表示に関する初期設定」→「表示数」の値で、デフォルトが10)
私みたいに「モディファイア設定してないから全記事取得できるっしょ」って思っていると、
更新した記事が全て反映されず困ります。
よって、記事を全件取得する場合はなにかしらモディファイアの指定が必要になります。
パッと思いつく方法では、取得する記事数を指定する lastn
モディファイアを使って、
登録されている記事数 < latsnモディファイアの値
としてあげれば実質全記事取得なので
<mt:Entries lastn="99999">
コンテンツ記載
</mt:Entries>
みたいな設定をしてたんですが、あんまりカッコよくないのと、
遠い未来に99999記事以上更新された場合に全記事取得出来なくなります。
ちゃんとマニュアル読んだり、色々試してみた結果、lastn に指定する値を「0」にする ことで
カッコよく(?)解決できます。
<mt:Entries lastn="0">
コンテンツ記載
</mt:Entries>
他にも、管理画面内、「設定」→「全般」→「表示に関する初期設定」→「表示数」の値を0にする という方法もあったのですが、この値は <$mt:EntriesCount$>
等、他のタグも参照する値なので、変更するのは要注意かなと思ってます。
更新した記事がTOPページに反映されない
個人的に結構な回数引っかかってるやつです。
↓みたいな構成でサイトを制作した際に、「お知らせ」で更新した記事を「TOPページ」側に表示したい場合、記事を更新しただけでは「TOPページ」には表示されません。
サイトA(親サイト、TOPページの役割で子サイトの記事を並べて表示したい)
お知らせ(子サイト)
スタッフブログ(子サイト)
商品一覧(子サイト)
Movable Type は管理画面で構成したコンテンツを静的ファイルに書き出してサーバに設置する 『再構築』 という手順があります。
基本的に再構築は1サイトごとで、「お知らせ」で記事を更新すると「TOPページ」側には再構築が発生しないため、
「子サイトで記事の更新」 → 「TOPページの再構築」
という手順を踏む必要があります。
この手順を毎度忘れてしまうため、何度もTOPページのスーパーリロードを繰り返しては
「記事反映されんな・・・」と困ってます。
意識して各サイト再構築していけばいいのですが、この悲しい時間を無くすことが出来る
機能がMovable Type 7から 「再構築トリガー」 という名前で導入されました。
(Movable Type 6以前にも MultiBlogプラグイン としてあったけど、ついに)
再構築トリガーについては公式のマニュアルにも記載がありますが、
設定画面を開けば指示に従ってポチポチ選択するだけで、かんたんに設定できます。
このあたり、なんとなくIFTTTを思い出しました。
記事の公開、または削除のタイミングで再構築が走るように設定ができるので、
この 再構築トリガー を設定しておくと大きなサイトを構築する際に運用がかなり楽になります。