Whizzo Blog

Web制作やコンテンツ制作、イベントなどについての Whizzo Production のブログです。

【Movable Type入門】新着情報をCMS化の続き

  • (2019.12.07更新)

【Movable Type入門】シリーズ 、前回の新着情報をCMS化の続きだ。

前回は、トップページにMovable Typeの更新情報を表示するようにした。管理画面で「記事」を更新すると、日付とタイトルが表示される。

今回は、リンク先のデザインをカスタマイズしよう。引き続き、前回使ったソースを使っていく。

「記事」テンプレートを差し替え

まずは「デザイン→テンプレート」の中から、「アーカイブテンプレート」にある「記事」をクリックする。ここが記事用のテンプレートだ。

Individual001.png

今回は既存のHTMLがあるという前提なため、前回同様、中の記述を__全部削除__だ。

前回も利用したデモサイトのソースのうち、「/news/2015/08/post-1.html」などは記事詳細のページなので、これを使おう。テキストエディタなどでHTMLのソースを表示し、すべてコピーしてテンプレートに貼り付けてみる。

Individual002.png

ここで、「保存と再構築」をしてみよう。そして、トップページからInformationの中のタイトルをクリックすると、デザインが変わっているのが確認できるだろう。

しかし、まだHTMLを貼り付けただけなので、どのタイトルをクリックしても同じ内容のページが表示されるはずだ。

各ページにMovable Typeで更新した情報が反映されるように編集していく。

相対パスをMTタグを使った絶対パスに変更

Movable Typeで個別の記事ページを作成するとき、どういうURLにするかはテンプレートの下にある「テンプレートの設定」をクリックし、 アーカイブマッピング で確認できる。 yyyy/mm/entry-basename.html となっているのではないだろうか。yyyy が作成日の年であり、mm が月である。entry-basename というのは記事更新時に変更することもできる「 出力ファイル名 」だ。

Individual003.png

現状、テンプレート内からのスタイルシートや画像の読み込みは、 <link rel="stylesheet" href="../../../common/css/base.css"> というような相対パスになっている。たまたまアーカイブマッピングとあっているので、デザインが崩れていないが、アーカイブマッピングを変更したら崩れる可能性があるため、 ../../../ の部分を / だけにしてトップディレクトリからの ルートパス に変更するか、Movable Typeの 公開パス に合わせた絶対パスに合わせるようにMTタグを使うようにする。

ここでは、公開サイトがトップディレクトリに置かれても、特定のディレクトリ内に置かれても問題ないように、MTWebsiteURL というMTタグで絶対パスを出力するようにする。

これは、「設定→全般」の公開パスにある ウェブサイトURL が出力されるというものだ。

数が多いので、一括置換できるテキストエディタなどで変換して、貼り付け直すと早い。ページ間のリンクなども含めてなので20か所ほどある。

Individual004.png

一括置換で変換したソースを「記事」テンプレートに貼り付け直して「保存と再構築」をしよう。

Individual005.png

今回は絶対パスに変換したが、公開サイトのURLが決まっている場合などは、ルートパス の方が扱いやすいこともあるので、状況によって使い分かるとよい。

記事部分をMTタグに差し替え

次にページごとに、入力した記事の内容が反映されるようにMTタグを埋め込んでいこう。今回のソースで言えば下記の部分。

<div class="content">

  <h2 class="btm06">標準では最新5件がトップに表示されます</h2>
  <p>2015/08/20</p>

  <div class="entryBody">

  最新5件の記事タイトルがトップに表示されるよう設定されています。<div>これは管理画面の設定用テンプレートモジュールから簡単に変更が可能です。</div>


  </div>

  <p class="top40 textBtn2"><a href="<mt:WebsiteURL>index.html">新着情報一覧に戻る</a></p>

</div><!-- /content -->

トップページでも使用した、MTEntryTitle を記事タイトルにする。また、投稿日部分は MTEntryDate だ。

なお、記事テンプレートで、繰り返しもないので、MTEntries は不要だ。

記事の本文には、MTEntryBody を使う。MTEntryMore も書いておこう。

記事の投稿画面には、タブで「本文」を「続き」に切り替えることができる。「本文」に書いた内容がMTEntryBody、「続き」に書いた内容がMTEntryMoreに書き出される。

Individual008.png

コーディング次第だが、「本文」を表示しておいて、何かをクリックしたら「続き」が表示されるような仕組みや、「本文」と「続き」の間に、何かを定型的に挟み込むなどもできる。

さて、書き換えたソースは下記のようになる。

<div class="content">

  <h2 class="btm06"><mt:EntryTitle></h2>
  <p><mt:EntryDate format="%Y/%m/%d"></p>

  <div class="entryBody">

    <mt:EntryBody>
    <mt:EntryMore>

  </div>

  <p class="top40 textBtn2"><a href="<mt:WebsiteURL>news/index.html">新着情報一覧に戻る</a></p>

</div><!-- /content -->

「保存と再構築」をして、トップページからのリンクを確認しよう。ページごとに内容が変わるはずだ。

Individual009.png

最後に、ページのタイトル部分も MTEntryTitle に差し替え、記事テンプレートは終了しよう。

<title>標準では最新5件がトップに表示されます | Information | MTレスポンシブテーマ</title>

 ↓

<title><mt:EntryTitle> | Information | MTレスポンシブテーマ</title>

 

記事一覧を編集

あとは、同一のページであるが、トップページの「過去の一覧を見る」と記事ページの「新着情報一覧に戻る」をクリックした先のページだ。/news/index.html のファイルにあたる部分。ここもデザインを反映して記事内容が表示されるようにしよう。

デフォルトの状態では、この一覧のページを生成するテンプレートは存在しないはず。新たにテンプレート自体を作る。

メニューから「デザイン→テンプレート」を選び、「インデックステンプレートの作成」をクリックすると、空のテンプレートが表示される。

Individual010.png

テンプレート名を「Information」にしておこう。そして、空のテキストエリアに「/news/index.html」のソースを貼り付ける。そして、出力ファイル名news/index.html と記入し、保存しよう。

Individual011.png

最後に、下記のソースの部分をMTタグを使って置き換える。

<div class="content">
   <script src="../common/js/pager.js"></script>
   <ul class="paginatedList" data-list-length="10">

    <li><span class="date">2016/12/16</span>
      <a href="2016/12/css.html">用意されているCSSスタイル一覧</a></li> 

    <li><span class="date">2016/12/01</span>
        「本文」欄が空の記事にはリンクが張られません(件名以外の詳細が必要ない場合などに利用)</li> 

    <li><span class="date">2016/06/12</span>
      <a href="2016/06/multiblog.html">プラグイン「MultiBlog」の設定を必ず行ってください</a></li> 

    <li><span class="date">2016/02/05</span>
      <a href="2016/02/10.html">新着情報一覧ページにおいて、標準では記事10件ごとにページ送りが発生します</a></li> 

    <li><span class="date">2015/08/20</span>
      <a href="2015/08/post-1.html">標準では最新5件がトップに表示されます</a></li> 

    <li><span class="date">2015/03/15</span>
      表示確認用のテスト投稿</li> 

    <li><span class="date">2015/01/10</span>
      表示確認用のテスト投稿</li> 

  </ul>

  <div class="pagination"></div>

</div><!-- /content -->

差し替えの方法は、前回のトップページと同じではあるが、MTEntriesの部分のみ、トップページでは5件までという表示にしたが、lastn="0"として全件表示するようにしてみる。記事が多すぎるようになってきたら100件などに絞ってもいいかもしれない。

<div class="content">

<script src="../common/js/pager.js"></script>
  <mt:Entries lastn="0">
    <mt:EntriesHeader>
      <ul class="paginatedList" data-list-length="10">
    </mt:EntriesHeader>
        <li><span class="date"><mt:EntryDate format="%Y/%m/%d"></span>
          <a href="<mt:EntryPermalink>"><mt:EntryTitle></a></li> 
    <mt:EntriesFooter>
      </ul>
    </mt:EntriesFooter>
  </mt:Entries>    
<div class="pagination"></div>

</div><!-- /content -->

これでカスタマイズは完了だ。「保存と再構築」をして、動作確認をしてみよう。

次回は、パーツの共通化あたりをやってみたい。

Ranking

Archives