Movable Typeのテンプレート内でブログIDなどを指定することがありますが、同じコードでテスト環境を用意しようとすると、テスト環境と本番環境でIDが異なり管理が煩雑になることがあります。
今回はブログIDを1つのテンプレートで管理して、テスト環境と本番環境を構築する際にも極力コードを揃えられるようにしてみます。
サンプルコード
今回は以下のようなサイトで試してみます。
- 親サイト(ブログID:1)
- 子サイト(ブログID:2)
親サイトで子サイトの記事一覧を表示する場合、以下のように記述します。
1 2 3 | < mt:Entries include_blogs = "2" > < p >< mt:EntryTitle ></ p > </ mt:Entries > |
次に変数で管理できるようにしてみます。
親サイトで「config」という名前のテンプレートモジュールを作成してみます。
config
1 2 | < mt:SetVar name = "SITEID" value = "1" > < mt:SetVar name = "BLOGID" value = "2" > |
親サイトのブログIDを「SITEID」、子サイトのブログIDを「BLOGID」という変数に格納しました。
次にこのテンプレートモジュールを使用するテンプレート内でインクルードします。
1 | < mt:Include module = "config" > |
これで変数を使用できるようになったので、include_blogsの値を変数で指定します。
1 2 3 | < mt:Entries include_blogs = "$BLOGID" > < p >< mt:EntryTitle ></ p > </ mt:Entries > |
これで親サイトで子サイトの記事一覧を表示することができました。
親サイトから子サイトのコンテンツタイプを表示する場合も同様です。
変数管理する前は以下のような記述になります。
1 2 3 | < mt:Contents include_sites = "2" content_type = "コンテンツタイプ名" > < p >< mt:ContentLabel ></ p > </ mt:Contents > |
変数設定後はinclude_sitesの値を変数で指定できます。
1 2 3 | < mt:Contents include_sites = "$BLOGID" content_type = "コンテンツタイプ名" > < p >< mt:ContentLabel ></ p > </ mt:Contents > |
注意点として、以下のようにfieldでコンテンツフィールドのユニークIDを使う場合、変数管理するのが難しそうな印象です。
1 2 3 | < mt:Contents include_sites = "2" content_type = "コンテンツタイプ名" field:d387a1cb2cea2994397c5cc7b821e801755642e4 = "1" > < p >< mt:ContentLabel ></ p > </ mt:Contents > |
コメントが承認されるまで時間がかかります。