• Home
  • MTAppjQuery
  • MTAppjQuery でのカスタマイズをウェブサイト内のブログにまとめて適用させる方法

MTAppjQuery でのカスタマイズをウェブサイト内のブログにまとめて適用させる方法

MTAppjQueryの設定をWEBサイト内のBlogに一括で適用させる。 - 継続は力なり!なのか?」の記事にも書かれていますが、MTAppjQuery でウェブサイト内のブログに同じカスタマイズをまとめて適用したいという需要は結構ありますね。

この記事で紹介されている方法もその一つですが、他にもいくつか方法がありますので、それらの方法を紹介します。

1. システムメニューのプラグインの設定を利用する

MTAppjQuery v1.4.0 から、システムメニューのプラグインの設定で、システム全体に適用できるフリーエリアが利用できるようになりました(Released v1.4.0)。このフリーエリアというのは、管理画面のソースの中のいくつかの場所にテキストエリアに書いた内容をそのまま挿入できる機能です。これを利用すれば、システム全体に一括でカスタマイズを適用することができます。

1-1. ウェブサイトIDで分岐する

今回やりたいことは「ウェブサイト内のブログにまとめて適用」させることです。その場合「各ブログの親のウェブサイト ID が N の場合はこの user.js 等を読みこむ」というように出来れば良いことになります。

管理画面では、親のウェブサイト ID は <mt:Var name="curr_website_id"> で取得できます。ウェブサイトの管理画面にいるときはこの変数にそのウェブサイトの ID が入ります。ちなみに、 <mt:Var name="mtappVars" key="curr_website_id"> でも取得できます。

さて、例えば下記のような構成のウェブサイト/ブログがあったとします。

Website 1 [ID:1]
    ├── Blog 1-1 [ID:2]
    ├── Blog 1-2 [ID:3]
    └── Blog 1-3 [ID:4]
Website 2 [ID:5]
    ├── Blog 2-1 [ID:6]
    ├── Blog 2-2 [ID:7]
    └── Blog 2-3 [ID:8]

この構成で Website 1 とその配下の Blog にカスタマイズを適用させる場合の条件式は下記のようになります。

<mt:If name="curr_website_id" eq="1">
    カスタマイズ
</mt:If>

ちなみに、このブログ ID が 2 と 3 のブログに適用させたい、といった場合は下記のようにすればOKです。

<mt:If name="blog_id" like="^(2|3)$">
    カスタマイズ
</mt:If>

このようにウェブサイト ID で条件分岐して、その中に適用したい内容を書いていけばOKです。

1-2. 親ウェブサイトの user.js を読み込む

親ウェブサイトの user.js を、そのウェブサイトと子ブログ全部に読み込ませたい場合は下記のようになります。

<mt:If name="curr_website_id" eq="1">
    <mt:Link template="user.js" blog_id="$curr_website_id">
</mt:If>

1-3. 親ウェブサイトのテンプレートモジュールを読み込む

親ウェブサイトのテンプレートモジュールを読み込ませたい場合は下記のようになります。

<mt:If name="curr_website_id" eq="1">
    <mt:Include module="mdl-user.js" blog_id="$curr_website_id">
</mt:If>

なお、このフリーエリアに書いた内容はそのまま管理画面に挿入されるので、JavaScript や CSS を書く場合は、モジュールもしくはフリーエリアの方に <script><style> タグで囲むようにする必要があります。

2. 各ブログの user.js で親ウェブサイトのテンプレートモジュールを読み込む

この方法は「ウェブサイト内のブログすべてに共通の部分もあるけど個別の部分もある」というときに役立ちます。

この方法は、親ウェブサイトでテンプレートモジュールを作り、それを user.js で MTInclude すればOKです。

<mt:WebsiteID setvar="website_id">
<mt:Include module="mdl-user.js" blog_id="$website_id">

3. その他

他にもグローバルテンプレートモジュールに共通部分を作ったり、外部ファイル化してフリーエリアで読み込んだりといろいろ方法はありますのでお試しください。

MTAppjQuery について

Movable Type の管理画面をフロントエンドの知識だけで簡単にカスタマイズすることができます。

クライアントの満足度を高めるためにぜひお使いください。

MTAppjQuery の詳細を見る

Iamge Description

Recent Entries

Pickup Categories

Movable Type

CMSとして国内5万サイト以上に導入されている Movable Type に関する記事です。

Craft CMS

CMS 業界で注目の Craft CMS に関する記事です。Craft CMS はチーム全体をハッピーにしてくれる素晴らしい CMS です。