MT|ウェブページも含めた更新情報を表示

実案件で作ったので備忘録。

クライアントは某自治体(代理店も入っているので名前は明かせない)。今回の要望は「更新をすべてトップページに表示したい」。当初は更新情報の子ブログを立ち上げて手動で入力した発信することを提案したが、担当者さまは自動生成へのこだわりが強いようす。話を聴いていくと市民からのニーズが確実にあること、更新者が多数いて更新した情報を集めるだけでも大変で、多少不完全なものであっても自動生成のほうが合理的と分かりました。

そこでこんな仕様で組んでいます。

◆「更新情報」は最近30日に更新のあったものを表示。
◆ウェブページはすべて監視して、「最終更新日」をキーに「更新日:<ページタイトル>を更新しました」と表記
◆新着情報などブログにしてあるものは「公開日:<記事タイトル>を更新しました」
◆一覧を日付順に並べる

ひと工夫する必要があったのが「一覧を日付順に並べる」という部分。いったん配列変数に格納してLoopで並び替えながら取り出すことに。

配列変数を入れ子にする必要があって、下層の日付をキーにして並べ替えしたかったけど方法が見つからない。MTLoopの並び替えは「sort_by=」の値に「key」or「value」以外の選択肢は無さそう。なのでここは日付+記事IDをkeyに設定することで解決。

 

----------
参考ソース
----------

【ブログ記事を配列変数に格納】

<mt:Entries days="30" blog_ids="9,17,14">
    <mt:SetVarBlock name="entryKey"><$mt:EntryDate format="%Y%m%d"$><$mt:EntryID$></mt:SetVarBlock>
    <mt:SetHashVar name="updateEntries">
        <mt:SetHashVar name="$entryKey">
            <mt:SetVarBlock name="date"><$mt:EntryDate format="%Y.%m.%d"$></mt:SetVarBlock>
            <mt:SetVarBlock name="ttl"><$mt:EntryTitle$> を更新しました</mt:SetVarBlock>
            <mt:SetVarBlock name="cate"><$mt:EntryBlogName$></mt:SetVarBlock>
            <mt:SetVarBlock name="url"><$mt:EntryPermalink$></mt:SetVarBlock>
        </mt:SetHashVar>
    </mt:SetHashVar>
</mt:Entries>

 

【ウェブページについても似た感じで配列変数に格納】

※ソースは省略
※ただしこちらは公開日でなく更新日がキーなのでdaysモディファイアが使えない。
 ごにょごにょと書いて30日前までに更新された記事を抽出するように。

 

【表示部】

<mt:Loop name="updateEntries" sort_by="key reverse">
    <mt:GetVar name="__value__" setvar="updateEntry">
    <dl class="homeNewsItem">
        <dt><$mt:GetVar name="updateEntry{date}"$></dt>
        <dd class="entryDate" datetime="<$mt:GetVar name='updateEntry{date}'$>"><a href="<$mt:GetVar name='updateEntry{url}'$>"><$mt:GetVar name='updateEntry{ttl}'$></a></dd>
    </dl>   
</mt:Loop>

 

実際にはブログによって定型文に変えたりリンク先を記事ページ以外にしたりと激しく分岐させてるけど、上記で骨子の部分は思い出せるかな。

このブログ記事について

このページは、ef-studioが2019年3月 8日 15:52に書いたブログ記事です。

ひとつ前のブログ記事は「【MovableType】インデックステンプレートでアーカイブテンプレートのように複数ページを書き出す」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.02

エフスタジオの中の人は(株)メキメキに勤めています。