pgkuroneru’s MEMO

プログラミングで躓いたことなどについて記録していくブログ

MODXでトップページとその他のページでタイトル表示を変える方法

MODXで、通常タイトルを出力するには、以下のように書けば、ページ毎に切り替わります。

<title>[*pagetitle*]│[(site_name)])</title>

もちろん、これでも問題ないのですが、トップページに「ホーム」というページタイトルを設定していた場合、「ホーム│サイト名」と表示されてしまいます。
今回は、トップページで、「サイト名だけ」を表示する方法について調べてみました。

MODXでの分岐処理

MODXでは、IF文を使って、分岐処理を書くことが出来るようです。(想像していた書き方とは違いましたが・・・。)

<@IF: [*変数名*]>空でなければ出力<@ENDIF>
<@IF: ![*変数名*]>空であれば出力<@ENDIF>
<@IF: [*変数名*]>
空でなければ出力
<@ELSE>
空であれば出力
<@ENDIF-->
引用元:http://modx.jp/docs/tags/

書き方は特殊ですが、考え方は、普通のif文と同じようです。「モディファイア」というものを使えば、空か、空でないか以外も判定できるようですね。

実際に書いてみる

早速、公式サイトを参考にしながら書いてみました。

[*変数:is(aaa):then(あいうえお):else(かきくけこ)*]
判定機能を持つモディファイア。上記の例では、変数の値が「aaa」の場合は「あいうえお」、そうでない場合は「かきくけこ」を表示します。 引用元:モディファイア|MODX 日本公式サイト

id指定の場合

id指定の場合、トップページがどのidになっているか調べます。(今回は「1」) 今回は、idが1なので、idが1か、そうでないかを判定し、1の場合は「サイト名」を、それ以外のページの場合は「ページ名│サイト名」と表示するようにします。

<title>[*id:is(1):then([(site_name)]):else([*pagetitle*]│[(site_name)])*]</title>

エイリアス指定の場合

エイリアスの場合も、idと同じように、トップページのリソースがどのエイリアスになっているか、で判別します。(今回は「home」) エイリアスが「home」なので、homeの場合は「サイト名」を、それ以外の場合は「ページ名│サイト名」と表示します。

<title>[*alias:is("home"):then([(site_name)]):else([*pagetitle*]│[(site_name)])*]</title>

まとめ

最近になって、「モディファイア」という機能がMODXに標準搭載されたようで、プログラムを組まなくても簡単に分岐処理が出来るようになったようです。

[modx]タイトルタグをちょっと便利に表示するスニペット [- 網的脚本実験室 -] ※2010年頃の記事です。こちらではスニペットにPHPプログラムを書いて、分岐させていたみたいですね。

今回は、タイトル表示の分岐に利用しましたが、他にも別の使い方が出来るかもしれません。