MovableType 5.01でサイトを構築しています。

トップページとその他のコンテンツページでテンプレートを分けたいのですが方法がよくわかりません。
例えばトップページは3カラムにして、コンテンツページは2カラムにしたいのです。
できれば読み込むCSSやJSも変えたいのでヘッダー部分<head>〜</head>もトップページとは別のテンプレートを読み込みたいです。
(現在header部分はインクルードテンプレートにしています。)
3カラム及び2カラムでも左サイドバーは共通でローカルメニューにしたいです。

トップページとその他のコンテンツページでテンプレートを分ける方法をできるだけ詳しく教えて下さい。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/05/02 04:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:kaz No.1

回答回数200ベストアンサー獲得回数42

ポイント35pt

MovableType 5 では、

複数の「ブログ」を1つの「サイト」で統括する事が簡単にできるようになっているため、

トップページと、それ以下のページをどのように構築するかによって変わってきます。

(「」は、一般的な意味ではなく MovableType における用語を表しています)


■MovableType 5 で(おそらく)推奨されている形式

「サイト」のトップを、そのまま WEB サイトのトップページとする場合です。

「サイト」の「スタイル」を3カラム、「ブログ」の「スタイル」を2カラムにすれば、

トップページと、コンテンツページのデザインを分ける事ができます。

(この場合「ブログ」のトップはコンテンツと同じデザインになります)


「テーマ」がデフォルトのものであると仮定して話をすすめると、

「ブログ」の「デザイン - スタイル」で「Minimalist Red」を選択すると、

右側の「選択されたデザイン」右下に「レイアウト」の選択肢が現れますので、

そこから「2カラム、大・小」または「2カラム、小・大」を選び「デザインを適用」します。

再構築すれば「ブログ」のデザインは 2 カラムとなります。

※「ブログ」操作時は、再構築アイコン等がある帯の色が、緑色か確認してください(グレーの時は「サイト」を操作中)


変更された設定は「ブログ」側だけなので、

「サイト」の設定で表示されるトップページは3カラム、

「ブログ」の設定で表示されるコンテンツページは2カラムとなります。




■MovableType 4 までの形式

MovableType 5 で加わった「サイト」-「ブログ」の形式を無視して、

「ブログ」をひとつの WEB サイトと見なす場合は、テンプレートに手を入れる必要があります。

(「ブログ」のトップを、WEB サイトのトップページとする場合)


この場合、現在の「テンプレート」によって状況が変わってきますが、

デフォルトの「テンプレート」と仮定して話をすすめると、

「page_layout」と「page_columns」の値を指定する事で変更が可能です。

こちらは、詳しく解説されたページがありますので、それを紹介いたします。

http://taeko.w-museum.com/wing/200809081424.html

「例2:トップ頁だけ3カラム、他は2カラムにしたい場合」を参考にしてください。

id:MarkBowie

詳しく教えていただき、ありがとうございます。

現状でウェブページをもう作ってしまったので、できればブログで分ける形ではなく、MT4と同じテンプレートに手を入れる形でいきたいと思います。

参考のサイトを見て勉強します。

ありがとうございました。

2010/04/25 23:52:29

その他の回答1件)

id:kaz No.1

回答回数200ベストアンサー獲得回数42ここでベストアンサー

ポイント35pt

MovableType 5 では、

複数の「ブログ」を1つの「サイト」で統括する事が簡単にできるようになっているため、

トップページと、それ以下のページをどのように構築するかによって変わってきます。

(「」は、一般的な意味ではなく MovableType における用語を表しています)


■MovableType 5 で(おそらく)推奨されている形式

「サイト」のトップを、そのまま WEB サイトのトップページとする場合です。

「サイト」の「スタイル」を3カラム、「ブログ」の「スタイル」を2カラムにすれば、

トップページと、コンテンツページのデザインを分ける事ができます。

(この場合「ブログ」のトップはコンテンツと同じデザインになります)


「テーマ」がデフォルトのものであると仮定して話をすすめると、

「ブログ」の「デザイン - スタイル」で「Minimalist Red」を選択すると、

右側の「選択されたデザイン」右下に「レイアウト」の選択肢が現れますので、

そこから「2カラム、大・小」または「2カラム、小・大」を選び「デザインを適用」します。

再構築すれば「ブログ」のデザインは 2 カラムとなります。

※「ブログ」操作時は、再構築アイコン等がある帯の色が、緑色か確認してください(グレーの時は「サイト」を操作中)


変更された設定は「ブログ」側だけなので、

「サイト」の設定で表示されるトップページは3カラム、

「ブログ」の設定で表示されるコンテンツページは2カラムとなります。




■MovableType 4 までの形式

MovableType 5 で加わった「サイト」-「ブログ」の形式を無視して、

「ブログ」をひとつの WEB サイトと見なす場合は、テンプレートに手を入れる必要があります。

(「ブログ」のトップを、WEB サイトのトップページとする場合)


この場合、現在の「テンプレート」によって状況が変わってきますが、

デフォルトの「テンプレート」と仮定して話をすすめると、

「page_layout」と「page_columns」の値を指定する事で変更が可能です。

こちらは、詳しく解説されたページがありますので、それを紹介いたします。

http://taeko.w-museum.com/wing/200809081424.html

「例2:トップ頁だけ3カラム、他は2カラムにしたい場合」を参考にしてください。

id:MarkBowie

詳しく教えていただき、ありがとうございます。

現状でウェブページをもう作ってしまったので、できればブログで分ける形ではなく、MT4と同じテンプレートに手を入れる形でいきたいと思います。

参考のサイトを見て勉強します。

ありがとうございました。

2010/04/25 23:52:29
id:kick_m No.2

回答回数1372ベストアンサー獲得回数54

ポイント35pt

ヘッダー部分に任意のタグを条件づけて読み込む方法は以下に書かれています。4ですが、5でも使えると思います。

http://phpm.seesaa.net/article/135090126.html

id:MarkBowie

ご回答ありがとうございます。教えていただいたサイトを拝見しましたが、条件づけて分けるのはなんとなくわかるのですが、

条件の名前で<MTIf name="main_index">のmain_indexというのがどこにかかれているのかがわかりません。トップページの事だというのはわかるのですが、そうすると他のページに名前をつけた場合、そのページにはどのタグでどのように書けば良いかがわかりません。

なのでもう少し詳しく書いてあるサイトを教えていただけると助かります。

2010/04/26 00:02:37
  • id:kaz
    回答番号1の kaz です。
    すみません、「できれば読み込むCSSやJSも変えたい」の部分を忘れていました。
    回答の内容に加え、以下を行えば OK です。(デフォルトのテンプレートの場合)


    1:テンプレートの作成
    既存の「HTML ヘッダー」を「複製(アクションから選択)」し、
    中身(今回の場合 CSS / JS の指定)と名前を変更する。

    2:テンプレートの指定
    「ブログ記事」テンプレートの「<$mt:Include module="HTMLヘッダー"$>」の指定を
    1 で作成・変更したテンプレートの名前に変える。
  • id:MarkBowie
    詳しい解説に加え、さらに教えていただき、ありがとうございます。ヘッダー部分の読み込みを変えるのは理解できました。
    ありがとうございます。
    先ほどのカラムの変更ですが、参考サイトにてブログのカラムを変えるのは理解できたのですが、カテゴリごとに変えるというところがよくわかりませんでした。
    MTOS5なのですが、カテゴリはそれぞれのウェブページに指定できるのでしょうか?
    また、特定のウェブページのみカラムを変えたい場合はどうすればよいのでしょうか?
    トップページと他のページは通常3カラムで、会社概要ページだけ2カラムにしたい場合等です。
    変数で条件分岐するやり方なのかなとは思うのですが、変数に入るそのページを指定する場合、ページ名なのかそのページに特定のタグを入れるのかがよくわかりません。
    例えば会社概要ページの「タグ」のところにcompanyと入れておいて、
    <MTIf name="company">
    <MTSetVar name="page_layout" value="layout-wt">
    <MTSetVar name="page_columns" value="2">
    </MTIf>
    と書けばそのページはカラムを変えられるとなれば理解できるのですが、たぶん違いますよね。。。
    なんかそんな感じでできないでしょうか?

  • id:kaz
    この場合、まず MT における
    「ブログ記事」と「ウェブページ」の違いを理解する必要があります。
    位置づけ的な違いは、時系列のありなし等いろいろあるのですが、
    実際の機能としての大きな違いは、
    「ブログ記事」には「カテゴリ」がありますが「ウェブページ」にはありません。

    そのため「ウェブページ」全体を区別する事は簡単ですが、
    特定の「ウェブページ」だけを区別するのは少し面倒です。


    他のページというのが「ブログ記事」で作成されており、
    会社概要だけが「ウェブページ」であれば、切り替えは簡単です。

    「アーカイブテンプレート」を見ていただくと分かりますが
    「ウェブページ」と「ブログ記事」という2つのテンプレートがあり、
    それぞれのページは、名前に対応したテンプレートで表示されているので、
    この「ウェブページ」の方に、紹介したページの仕込みを行えば OK です。


    上記の組合せでない場合、構成によって対処法が変わってきますが、
    最も簡単な(代わりに応用が効かない)のが、ファイル名を指定する方法です。

    「ウェブページ」のテンプレートに、MarkBowie さんが
    コメントしたものを埋め込みますが、最初の部分を以下のようにします。

    <MTIf tag="MTPageBasename" eq="ページのファイル名">
    "ページのファイル名" というのは、post.html であれば「post」です。
    ※ただし、-(ハイフン)や _(アンダーバー)を使っている場合、
     ブラウザに表示されているものと、実際のファイル名が違う場合がありますので、
     「ウェブページ編集」画面の「公開」にある「ファイル名」を確認してください。
  • id:MarkBowie
    kazさん、いろいろ詳しくありがとうございます。
    ウェブページとブログの違いがわかりました。

    ウェブページのテンプレートに以下のタグを入れてみたのですがうまくいきませんでした。
    ファイル名を指定する方法だと以下のようではダメでしょうか。

    <MTIf tag="MTPageBasename" eq="/company/index">
    <MTSetVar name="page_layout" value="layout-wt">
    <MTSetVar name="page_columns" value="2">
    </MTIf>

    またこちらのパターンもダメでした。
    ファイル名をcompanyに変更
    <MTIf tag="MTPageBasename" eq="company">
    <MTSetVar name="page_layout" value="layout-wt">
    <MTSetVar name="page_columns" value="2">
    </MTIf>

    サイトは7ページくらいあるのですが、各ページはほとんどウェブページで作っており、
    ページを分ける方法としてはディレクトリ名(ページ名)/index.htmlにしております。

    ただうまくいかないので、やはり各ページをブログで作り直した方がいいのでしょうか?
  • id:kaz
    >ページを分ける方法としてはディレクトリ名(ページ名)/index.htmlにしております。

    MTPageBasename はファイル名なので、上記の場合「index」になります。

    ファイル名を company に変更した場合、2番目の例でいける筈なのですが、
    ファイル名は正しく変更されているでしょうか?
    試しに、それらのタグの前に <MTPageBasename> を書いてください。

    これで、「そのページのファイル名」が表示されます。
    目的のページできちんと「company」になっているか確認してください。

    > ただうまくいかないので、やはり各ページをブログで作り直した方がいいのでしょうか?
    MT 自体の仕組みとしては、どのような構造でも、ほぼ好き放題にできるのですが、
    簡単なカスタマイズで、コンテンツを細かく分類したい場合、
    「カテゴリー」の存在する「ブログ記事」を使った方が無難です。
  • id:MarkBowie
    >試しに、それらのタグの前に <MTPageBasename> を書いてください。
    書いてみましたが、ファイル名は表示されませんでした。
    でもURLでアクセスするとちゃんとそのページ表示されているのですが・・・

    もしかして

    <MTIf tag="MTPageBasename" eq="company">
    <MTSetVar name="page_layout" value="layout-wt">
    <MTSetVar name="page_columns" value="2">
    </MTIf>

    のタグの書く場所が悪いのでしょうか。

    インデックステンプレートのメインページ(index.html)のドキュメントタイプ宣言の前つまり、
    1行目に書いたのですが、そもそもそこが間違いでしょうか。
  • id:kaz
    > 書いてみましたが、ファイル名は表示されませんでした。

    ファイル名が表示されないということは、
    編集するテンプレートが間違っています。
    (編集の仕方が間違っているのではなく、
     関係のないテンプレートを編集している、という事です)


    > インデックステンプレートのメインページ...

    何をそこに書いたのでしょうか?
    <MTPageBasename> ですか?
    それとも <MTIf tag="MTPageBasename" eq="company"> ですか?

    インデックステンプレートのメインページというのは、
    いわゆるトップページなので、そこに何を書いても
    ウェブページの表示には全く関係がありません。


    MT5 は「サイト」の中に「ブログ」がある構造のため、

    ・自分が作成した「ウェブページ」は
     「サイト」に属するものか、「ブログ」に属するものか

    ・自分が現在編集しているテンプレートは
     「サイト」のものか、「ブログ」のものか

    を、常に把握しておく必要があります。
  • id:MarkBowie
    kazさん、いろいろ詳しく教えていただき、ありがとうございました。
    やっとできました!
    やはり編集するテンプレートが間違っていました。
    ファイル名でわける方法で、カラム分けができました。
    ありがとうございました。
    MT初心者なのでまたここで質問すると思います。
    その時はまたお願いします。
    本当に助かりました!ありがとうございました!
  • id:MarkBowie
    kazさん、もう一つ聞きたい事がありまして、再度質問しました。
    もしできたら回答していただけないでしょうか。
    質問は下記となります。
    http://q.hatena.ne.jp/1272475902

    よろしくお願い致します。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません