LOG IN

setTemplateでエントリー化してない部分の多言語対応

by aicocco/かんろ

同一テーマ内で多言語対応させて困ったこと

エントリーはエイリアスIDで表示を切り変えることでスムーズにできました。
困ったのはエントリーと同一htmlにあるエントリー化されていない、直書きしているテキスト。

今まで多言語対応したことがなくて、表示を変えたい時はincludeで済ませてました。
ただ、今回多数のページにエントリー化されていないテキストがちょこちょこあって、エントリー自体はエイリアエスで多言語に切り替わるのに、直書きのテキストのみ日本語の状態に。

直書きのテキストをincludeさせて%{ALIAS_ID}で出し分けもできるけど、テキストごとに個別にincludeファイルを作るのはいやだし、めんどくさい!なにか良い方法ないのかなーと調べてたところ、去年の夏前に参加したa-blog cms Training Camp OKINAWAで、SetなんとかとかGetなんとかを『便利だなー』って言ってたのをうっすらと思い出して再検索。

SetTemplateの記事がいくつかヒットしたので、参考にしてやってみたらincludeファイル1つで済みました!

Set Templateにidを付与して出し分けする

setTemplate setRenderedを使いこなそうを参考に、テーマ内のincludeフォルダにset_template.htmlを作成

<!-- インクルードファイル -->
<!-- BEGIN_SetTemplate id="summary_a" -->
<p>Aが呼ばれました。</p>
<!-- END_SetTemplate -->

<!-- BEGIN_SetTemplate id="summary_b" -->
<p>Bが呼ばれました。</p>
<!-- END_SetTemplate -->

上のコードをset_template.htmlにコピペ

<!-- 上のインクルードファイルをインクルード 。この時点では何も表示されません。-->
<!--#include file="/include/set_template.html" -->

<!-- 以下の一行のコードを呼び出すと、Aが呼ばれました。と表示されます。-->
<!-- GETは一度だけではなく何度でも呼び出せます。 -->
<!-- GET_Template id="summary_a" -->

そのあと表示させたいhtmlファイルに上のコードをコピペ

すると、ページには<!-- GET_Template id="summary_a" -->で指定した、
idの"summary_a"の内容【Aが呼ばれました。】が表示されます

このidにエイリアス番号を付与して多言語の出し分けをしてみました

set_template.htmlに記述

<!-- ▼▽▼ serval.html ▼▽▼ -->

<!-- 日本語 -->
<!-- BEGIN_SetTemplate id="serval" -->
<p>すごーい!</p>
<!-- END_SetTemplate -->

<!-- 英語 -->
<!-- BEGIN_SetTemplate id="serval1" -->
<p>Wow!</p>
<!-- END_SetTemplate -->


<!-- ▼▽▼ toki.html ▼▽▼ -->

<!-- 日本語 -->
<!-- BEGIN_SetTemplate id="toki" -->
<p>わたしはトキ</p>
<!-- END_SetTemplate -->

.
.
.
続けて記述

serval.htmlに記述

<!--#include file="/include/set_template.html" -->
<!-- GET_Template id="serval%{ALIAS_ID}" -->

エイリアス設定で英語はID1、コードネームはenに設定しているので、エイリアスが設定されてない時はid="serval"の日本語を読み込み。
エイリアエスIDが付いている時はid="serval1"が読み込まれ、英語が表示されます。
toki.htmlには<!-- GET_Template id="toki%{ALIAS_ID}" -->とidを書き換えたものを記述。

idで表示の出し分けができるので、エントリー化していないテキストはset_template.htmlにばばばーっと書いて、それぞれにidとエイリアスあり/なしを記述していくと、includeファイルは1つで済みました。
下の画像みたいなイメージ。

今回はエントリー化していないテキストがパラパラあるくらいだったので、ひとつのhtmlにまとめて記述しましたが細かく分ける場合はカテゴリーごとにファイルを分けた方が分かりやすいかもしれません。

普段多言語対応とかしたことなくて、そんなに難しい機能も使ってないので少し苦戦しました。
でもSetTemplate使ってみたらincludeファイル減るし便利!
次からも使っていきたいなーと思います。


参考にしたサイト

【a-blog cms】テーマを変えずにサイト多言語化

【a-blog cms】SetTemplate SetRenderedを使った新しいサイト制作

setTemplate setRenderedを使いこなそう


aicocco/かんろ
OTHER SNAPS