image

02-16-10

ウェブサイトとの連携2

ウェブサイトの連携に対する対処の走り書き。あくまで自分の環境での話。
現状、website/blog/archives/の中に全てのアーカイブが納まっている。
その中で各カテゴリ毎のフォルダとmonthフォルダがありそれぞれなかにアーカイブファイルがある。
何をどうしたいか。そしてそれに対する問題点など。
1.あくまで一つのウェブサイト。その中のブログというコンテンツ、という一体感というかが欲しいので
共通のメニュー項目を用意したい。
2そのメニュー項目を変更した際の再構築の手間をできるだけ省きたい。(可能なものはphpでインクルードしたい)
特にブログの個別記事は量が膨れ上がっていくのでPHPインクルード化は必須。
・・・分割の関係でメインインデックスはhtml。また、システムテンプレートはphpインクルード不可。
mt:includeとの共存が必要。
3.変更があったときにいじるファイルはできるだけ少なく、できれば一つであるのが望ましい。
・・・blogからwebsiteのモジュール読み込みはちと仕様上面倒。ブログのテンプレートの中に
指定されたモジュールやらウィジェットが無かった場合、システムのテンプレートを探しに行く。
この際ウェブサイトのテンプレートは無視。これってどうよ?とつくづく…
4.FTPソフト等は使わない。
などを踏まえまして。
うちではバナーヘッダーにメニューをおいてをすべてのコンテンツで共用することに。
メニュー部分はシステムのテンプレートウィジェットとして作成。これを50menuとする。
ウェブサイトのインデックステンプレートで<$mt:Include widget=”50menu”$>という内容だけの
テンプレートを作成(PHP読み込み時のファイルを作成することになる)。
これをbanner.phpとする。
それでブログのバナーヘッダーモジュールの中の読み込みたい部分に以下のように記入。
<mt:if name=”archive_template”>
<mt:If name=”search_results”>
<$mt:Include widget=”50menu”$>
<mt:ElseIf name=”page_archive”>
<$mt:Include widget=”50menu”$>
<mt:Else>
<?php
include(“../../../banner.php”);
?>
</mt:If>
<mt:Else>
<$mt:Include widget=”50menu”$>
</mt:If>
正規表現の仕方がわからなかったのでまぁ、こんな感じ。
mt:ifでよく使われることになるアーカイブの種類ごとの予約変数に関してはこちら
本来なら2行目のsearch_resultsは不要なはずだけど、分割とページ送りの関係で、
こうしないとうまくいかなかった。
全てのアーカイブが同じ階層にあり読み込むphpファイルへのパスは共通なので
こんな感じでできたが、違った場合どうしたもんだろ。
まぁ、それぞれの条件でまた絞り込む形になるのかな。
これでまぁ、大体目的は達した、はず。

Leave a Comment