PHP化急ぐ!その1

昨日、書いたとおりMovableTypeの「ダイナミック・パブリッシング」はあきらめました。
故に今まで使わなかったディスク容量を消費することになります。また、記事を投稿する度にそれなりの負荷がかかることになります。そこで取ったわたしの作戦を紹介します。
その1:「個別エントリー」も共通化してしまえ!


個別エントリを表示しているページはいくつあるでしょうか?
わたしのBLOGの場合、個別エントリはもちろんのこと、トップページ/カテゴリアーカイブ/月別アーカイブ/日別アーカイブの合計5ページにも及びます。
ということは同じ内容がこの5ページ分に書かれてしまうわけです。
これはディスクの無駄づかいです。
ということで下記のように共通化を図ることにしました。

  1. テンプレートに新しい個別エントリ用のテンプレートを追加する。

    <div class=”entry-body” id=”entry<$MTEntryID pad=”1″$>”>

    <h3><a href=”<$MTEntryPermalink valid_html=”yes”$>” title=”"<$MTEntryTitle$>" の固定リンク”><$MTEntryTitle$></a></h3>

    <$MTEntryTrackbackData$>

    <ul class=”posted”>
    <li><$MTEntryAuthor$></li>
    <li><a href=”<$MTEntryPermalink valid_html=”yes”$>” title=”"<$MTEntryTitle$>" の固定リンク”><$MTEntryDate format=”%X”$></a></li>
    <MTEntryIfAllowComments>
    <li><MTIfNonZero tag=”MTEntryCommentCount”><a href=”<$MTEntryPermalink archive_type=”Individual”$>#comments” title=”"<$MTEntryTitle$>" にコメントする・見る”>コメント (<$MTEntryCommentCount$>)</a>
    <MTElse><a href=”<$MTEntryPermalink archive_type=”Individual”$>#comment-post” title=”"<$MTEntryTitle$>" にコメントする”>コメントする</a></MTElse>
    </MTIfNonZero></li>
    </MTEntryIfAllowComments>
    <MTEntryIfAllowPings>
    <li><MTIfNonZero tag=”MTEntryTrackbackCount”><a href=”<$MTEntryPermalink archive_type=”Individual”$>#trackbacks” title=”"<$MTEntryTitle$>" にトラックバックする・見る”>トラックバック (<$MTEntryTrackbackCount$>)</a>
    <MTElse><a href=”<$MTEntryPermalink archive_type=”Individual”$>#trackback-url” title=”"<$MTEntryTitle$>" にトラックバックする”>トラックバックする</a></MTElse>
    </MTIfNonZero></li>
    </MTEntryIfAllowPings>
    <MTEntryCategories glue=” | “>
    <li>カテゴリー:<a href=”<$MTCategoryArchiveLink$>” title=”カテゴリー"<$MTCategoryLabel$>"”><$MTCategoryLabel$></a></li>
    </MTEntryCategories>
    </ul>

    <$MTEntryBody$>

    <?php if ($PAGE == ‘HEAD’) : ?>
    <MTEntryIfExtended>
    <p class=”extended”><a href=”<$MTEntryPermalink$>#more” title=”"<$MTEntryTitle$>"の続きを読む”>"<$MTEntryTitle$>"の続きを読む</a></p>
    </MTEntryIfExtended>
    <?php endif; ?>
    <?php if ($PAGE != ‘HEAD’) : ?>
    <MTEntryIfExtended>
    <div id=”more”>
    <$MTEntryMore$>
    </div>
    </MTEntryIfExtended>
    <?php endif; ?>

    <!–div.entry-entry END–>
    </div>

      赤く書いているPHPの構文が重要です。
     各アーカイブにてヘッダのみ表示する場合と個別エントリにて本文まで表示する場合を考慮しています。

  2. [ウェブログの設定][アーカイブの設定]で個別に上記テンプレートを追加します。
  3. アーカイブ・ファイルのテンプレートで名称を「<$MTEntryID$>.inc」とします。
  4. 各アーカイブのテンプレートに以下のとおり記入します。

    <MTPaginate>
    <MTPaginateContent max_sections=”10″>

    <MTEntries>
    <MTDateHeader>
    <div class=”day”>
    <h2><$MTEntryDate format=”%x”$></h2>
    </MTDateHeader>

    <?php
    $PAGE = ‘HEAD’;
    include “<$MTBlogArchiveURL$><$MTEntryID$>.inc”;
    ?>

    <MTDateFooter>
    <!– div.day-day END –>
    </div>
    </MTDateFooter>

    <$MTPaginateSectionBreak$>
    </MTEntries>

    </MTPaginateContent>

     PHPの構文で作成した個別エントリのソースをインクルードしヘッダを表示するように指示しています。

  5. 個別エントリのテンプレートに以下のとおり記入します。

    <div class=”day” id=”day<$MTEntryDate format=”%Y%m%d”$>”>
    <h2><$MTEntryDate format=”%x”$></h2>

    <?php
    $PAGE = ‘FULL’;
    include “<$MTBlogArchiveURL$>Indivisual/<$MTEntryID$>.inc”;
    ?>

    <!–div.entry id-day END–>
    </div>

     PHPの構文で作成した個別エントリのソースをインクルードしヘッダと本文すべてを表示するように指示しています。

わたしのBLOGでは上記の手順でリビルドし共通化を図っています。

コメントを残す