フォルダ名でウェブページのデザインを分ける
MT4の「ウェブページ」、つまりはブログを書くかのごとくスタティックなページを生成できる機能。mdも使ってみました。MTは3.2以来なので、いろいろ間違っているかも知れませんが...
あ、その前に
MT4のデフォルトのテンプレートが入り組んでいてサッパリ分からなかったので、人力でMT3のころのテンプレートのように展開しました(涙)
で、このサイトはMT4のMultiBlogとウェブページの2つの機能を使って、とにかく全部MT4で作る設計です。できもしないのによくもまぁそんな仕様にしたもんだというツッコミは置いといて、主なカテゴリとウェブページの生成ルール(仮)は
- トップページ(Blog ID=1か4)
- ブログ(Blog ID=1)
- ホームページ作成(Blog ID=2)
- フリー素材(Blog ID=3)
- リンク(Blog ID=4)
- プロフィール(Blog ID=1か4のウェブページ)
- このサイトについて(Blog ID=1か4のウェブページ)
- お問い合わせ(Blog ID=1か4のウェブページ)
みたいな感じになる...予定(^^;)。「こんなにブログ増やしたらテンプレート管理大変じゃない?」と思うかも知れませんが、mdの場合、テンプレートは全部Dreamweaver側で直接MTにアップロードするので、その辺は簡単。
更新頻度の高いページはブログ、あんまり変わらないページはウェブページ、といった感じです。ちなみにMT4は「ウェブページ」で作ったページにも、トラックバックやコメント、タグクラウドが使えます
トップページを独自のID(4)にするかBlogで使ったID(1)で行くかはまだ未定。きちんと決めてからやればいいのはわかっているんですが、なにせMT4、かなり変わったので、いじってみないとわからないのです。なので、かなり見切り発車的な記事ですので、間違っていたらすみません(^^;)
ウェブページをカテゴリごとにデザイン分岐
このサイトの場合、グローバルナビの表示がカテゴリごとに変わるので、ウェブページのカテゴリ(正確には保存先のフォルダ)に応じて、ページのデザインを変える必要があります。
しかし、普通に動かすとウェブページのテンプレートは1つだけなので、カテゴリを切り替える場合ウェブページのテンプレート内でカテゴリ別にデザインを分岐することにしました。違うアーカイブマッピングを用意しておけばデザイン変更はできるっぽい気もしましたが(試してないのでなんとも...)、ていうか、うちの場合そこまで大げさではないので(^^;)
必殺(?)CSSシグネチャを準備
このサイトは、<body>タグにidを振ることによって、グローバルナビの表示が切り替わるように作ってあります。グローバルナビが「TOP」で光っている場合、<body>タグは
<body id="top">
となっています。ブログのページなら
<body id="blog">
とすることによって、グローバルナビの「ブログ」が光るわけです。Dreamweaverな方なら分かると思いますが、オプション領域で<body>タグのidに値を渡すやつですね。これと似たような方法で、グローバルナビにCSSシグネチャを使います。
MTIfFolderの値をそのままCSSシグネチャに使う
例えば、「このサイトについて」のウェブページのファイルを保存するフォルダを「thissite」にしたとすると、
<MTIfFolder name="thissite">
<MTSetVar name="bodyid" value="thissite">
</MTIfFolder>
で、変数bodyidにthissiteが代入されます。これをそのまま<body>タグのidにGetVarするとこんな感じ。
<MTIfFolder name="thissite">
<MTSetVar name="bodyid" value="thissite">
</MTIfFolder>
<body id="<$MTGetVar name="bodyid"$>">
例えば、フォルダをthissite,profile,contactと作ったとしたら、こんな感じでウェブページのテンプレート内でbodyにidを渡します。ついでにフォルダのタイトルも付けたり、いろいろ(あくまでもうちのサイトの場合ですが)するとすれば
<MTIfFolder name="thissite">
<MTSetVar name="bodyid" value="thissite">
<MTSetVar name="foldertitle" value="-このサイトについて">
</MTIfFolder>
<MTIfFolder name="profile">
<MTSetVar name="bodyid" value="profile">
<MTSetVar name="foldertitle" value="-プロフィール">
</MTIfFolder>
<MTIfFolder name="contact">
<MTSetVar name="bodyid" value="contact">
<MTSetVar name="foldertitle" value="-お問い合わせ">
</MTIfFolder>
<MTSetVarBlock name="pagetitle"><$MTPageTitle$></MTSetVarBlock>
<title>studio md<$MTGetVar name="foldertitle"$>-<$MTGetVar name="pagetitle"$></title>
<meta name="description" content="<$MTPageBody remove_html="1" trim_to="90"$>..." />
<MTIfNonEmpty tag="MTPageKeywords">
<meta name="keywords" content="<$MTPageKeywords$>" />
<MTElse>
<meta name="keywords" content="ホームページ作成代行,hogehoge,hogehoge,hogehoge," /></MTElse>
</MTIfNonEmpty>
<MTUnless name="bodyid" eq="top">
<link rel="start" href="https://studiomd.jp/" title="Home" />
</MTUnless>
<MTPagePrevious>
<link rel="prev" href="<$MTPagePermalink$>" title="<$MTPageTitle encode_html="1"$>" />
</MTPagePrevious>
<MTPageNext>
<link rel="next" href="<$MTPagePermalink$>" title="<$MTPageTitle encode_html="1"$>" />
</MTPageNext>
<body id="<$MTGetVar name="bodyid"$>" onload="individualArchivesOnLoad(commenter_name)">
キーワードはカンマ区切りの人だけですかね。かわりにタグを展開してもいいかも知れません。
各フォルダの一覧表示はどうすればいい?
すみません、ここが分かりませんでした(^^;)。今現在は
<MTIfFolder name="contact">
<h4><$MTGetVar name="foldertitle"$></h4>
<ul>
<MTPages folder="contact" sort_by="created_on" sort_order="ascend">
<li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li>
</MTpages>
</ul>
</MTIfFolder>
<MTIfFolder name="thissite">
<h4><$MTGetVar name="foldertitle"$></h4>
<ul>
<MTPages folder="thissite" sort_by="created_on" sort_order="ascend">
<li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li>
</MTpages>
</ul>
</MTIfFolder>
<MTIfFolder name="profile">
<h4><$MTGetVar name="foldertitle"$></h4>
<ul>
<MTPages folder="profile" sort_by="created_on" sort_order="ascend">
<li><a href="<$MTPagePermalink$>"><$MTPageTitle$></a></li>
</MTpages>
</ul>
</MTIfFolder>
これだとフォルダ階層を深くしたときにアウトなんですよねぇ。ていうか、あんまりエレガントさもないよなぁ。うーん、うーん。
自己レス
MTSubFolders/MTTopLevelFoldersとかありました...このタグの存在知らなかったです。タグ増え杉(^^;)