EntryHasImage 記事内の画像があるかで分岐する条件タグ
個別記事ページにおいて、画像があるかないかで判断して処理する時用のコンディショナルタグを作ってみました
OGP(Open Graph Protocol) や、Pinterest の Pin it ボタンなど、記事中の画像を抽出してメタ情報をあたえるといった機会がでてきました
MTEntryHasImage タグのブロック内でエントリを対象として、img 要素が存在するかで処理を分けます。
<mt:EntryHasImage> <!-- 画像があるとき --> <p>この記事には画像があります。</p> <MTElse> <!-- 画像がないとき --> <p>この記事には画像はありません。</p> </mt:EntryHasImage>
なお、ダイナミックパブリッシングには対応していません。ハイブリッドな運用をされているときは MTIfStatic
か MTIfDynamic
で処理をわけます
ダウンロードとインストール
展開後のフォルダ、EntryHasImage をMovable Type の plugins ディレクトリにアップロードします。
テーマの再適用とバックアップされたテンプレートの変更履歴について
Movable Type のテーマの再適用ボタンとバックアップされたテンプレートにおける変更履歴の件です
こんなことをするのは自分だけかと思いますが、あるテーマの config.yaml に手を加えたとき、追加したテンプレートが反映されてないというので、テーマ設定のところの現在のテーマの「再適用」というボタンを押しました。
このときの動作ですが、同じテーマの適用しなおしです。 リセットといったほうがわかりがいいのかもしれません。(とはいっても、Movable Type のテンプレートの初期化動作は種類を選べますから、一概にリセットで括られない部分はあります)
これをわからずにやってしまうと、以前にテンプレートに追加したカスタマイズが初期状態に戻されます。(その原因のひとつに、「再適用」を押したら、「テンプレートの初期化」を押したときと違って、確認画面もでずにすぐに実行されてしまうこともあるとおもいます。ローカル環境用意していながら、確かめずに行なう自分も悪いですが)
こうなってしまった場合に対処としてできることは、バックアップされたテンプレートから直前のバックアップ時刻のものを表示させコピーして持ってくる、ということです。
ちなみに、バックアップされたテンプレート側にテンプレートの変更履歴が保存されています(再適用されたほうは変更履歴はありません)。何度かカスタマイズで変更をやっている場合に前の状態に戻したいとき便利です。但し、これが行なえるのは、設定で変更履歴を保存するようになっている場合です。
以上、MTOS v5.2 におけるテーマ再適用動作に関する内容でした。
mtVicuna simple のウェブページ一覧ウィジェットで除外したいフォルダのあるときは
mt.Vicuna simple にある、ウェブページ一覧を表示するウィジェットで一部のフォルダを除外してフォルダリストを表示させるひとつの方法です
この件はおそらく Movable Type からフォルダを作成しなければ、そのフォルダはフォルダまわりのテンプレートタグが認識できないので、そのような運用をするほうがセオリーぽいですが、細かなツッコミはこの際なかったことにして、とりあえずどうしたら指定したフォルダを一覧で表示しないように出来るか、というのをやっていきます。
mt.Vicuna simple のページ一覧ウィジェットでは、MTPages によるウェブページリストと、MTTopLevelFolders による、フォルダリストで構成されています。
今回カスタマイズをおこなうのが、MTTopLevelFoldersによるループの部分ということになります。
上のキャプチャ中のリンクが入ってない部分を取り除きたい、というわけです。
ウィジェットテンプレート中の、
<li class="page page-<$MTPageID$>">
よりも先のループの部分にフィルタをかける必要があります。
フォルダラベルを評価してフィルタリングしたいので、トップレベルフォルダーから、cur_folder
に変数セットしている箇所以下に次のタグを追加します。
<MTTopLevelFolders> <MTFolderLabel setvar="cur_folder" /><MTSetVar name="folder_index_id" value="" /><MTSetVar name="folder_page_count" value="0" /> <mt:Unless name="cur_folder" like="^(aaa|bbb|ccc)">
aaa、bbb、cccはそれぞれフォルダラベルを指します。除外したい分だけlikeモディファイアに書き加え、各フォルダラベルは | でつなぎます。
MTUnlessの終了タグは、ul 要素の終了タグの前で MTTopLevelFolders 内にする必要がありますので、以下の場所になります。
</MTPages> </li> <$MTSubFolderRecurse$></mt:Unless> </MTTopLevelFolders>