エンジニアブログ

エンジニアブログ
MT技術情報

MT5でウェブサイト配下のブログにウェブサイトのIDなどを簡単に引き継ぐ方法

小林 2009年10月28日

MT5.0では、ウェブサイトとブログの結びつきという新しい概念になりましたが、ウェブサイトのタイトルやID、テンプレートをブログに引き継ぐことができません。厳密に言うと可能なのですが、ちょっとタグが複雑になります。

たとえば<$MTWebsiteName$>とブログに書いても、ウェブサイト名は出力できません。ブログでウェブサイト名を出力するには<MTBlogParentWebsite><$MTWebsiteName$></MTBlogParentWebsite>という長いタグを書かなければなりません。これではテンプレートの視認性が悪くなってしまいますね…

そこで、ウェブサイトの情報をブログに簡単に引き継げるようにするために、こんなアイデアはいかがでしょうか?ウェブサイトとブログの連携性を保てば、メンテナンス性が向上するんじゃないかと思います。

※MT5.0ではこのやり方が楽だとおもいますが、もっと簡単なやり方があれば教えてください!

ウェブサイトにテンプレートを作る

ウェブサイトに「共通設定」などの名前でテンプレートモジュールを作成します。

モジュール内で変数に値をセットする

テンプレートモジュールの中に、以下の宣言を書きます。お好みでいろいろ追加したい場合は、MTSetVarsタグの使い方をご覧ください。

<MTSetVars>
  website_id=<$MTWebsiteID$>
  website_url=<$MTWebsiteURL$>
  website_title=<$MTWebsiteName encode_html="1"$>
  website_description=<$MTWebsiteDescription encode_html="1" strip_linefeeds="1"$>
  common_filepath =<$MTWebsiteURL$>common/
</MTSetVars>

ブログのテンプレートから共通設定テンプレートを呼び出す

先日公開したParentalIncludeプラグインでウェブサイトの共通設定テンプレートを呼び出します。呼び出すときにcache="1"を指定すると、このテンプレートはキャッシュされるので、たくさんのテンプレートからインクルードしたとしてもキャッシュのおかげで再構築が遅くなることはありません。

そして共通設定テンプレートをインクルードした後はMTGetVarで各値を呼び出します。いかに例を示します。

共通設定テンプレートをインクルードする
<$MTParentarInclude module="共通設定" cache="1" ttl="60"$>

タイトルタグにブログ名とウェブサイト名を出す
<title><$MTBlogName$> | <$MTGetVar name="website_title"$></title>

ウェブサイトと同じ概要を使う
<meta name="description" content="<$MTGetVar name="website_description"$>" />

ウェブサイトと同じスタイルシートを読み込ませる
<link rel="stylesheet" href="<$MTGetVar name="common_filepath"$>styles.css" type="text/css" media="screen" />

ウェブサイトのID
<$MTGetVar name="website_id"$>

ウェブサイトのURLへリンクする
<a href="<$MTGetVar name="website_url"$>"><$MTGetVar name="website_title"$></a>

みたいな使い方です。

たとえばウェブサイトのカスタムフィールドで「キーワード」とか作って、全サイトのmeta keywordsを共通化したり、共通化したい値があるのであれば用途はいろいろ使えるのではないでしょうか?

ちょっとやり方として強引感は否めませんが、いまのところこれがベストなやりかたかなぁと思っています。