[modx]タイトルタグをちょっと便利に表示するスニペット
2010-02-1223:00
modxでタイトルを指定する場合、通常は
<title>[*pagetitle*] [(site_name)]</title>
のようにテンプレートなどに記述しますが、
- トップページのように[*pagetitle*]が必要無い場合がある。
- 階層化されているコンテンツのときは、親コンテンツ名も合わせて表示させたい
というような場合にちょっと不便です。少なくとも、私には不便です。
いろいろ回避や対処方法はあると思いますが、
私は上記対応に特化した、簡単なスニペット(名付けて「viewTitle」!)を使っています。
リニューアルした私のサイトで実際に使っていますが、
すべてのページのタイトルタグは、テンプレートに次のように記述しています。
<title>[!viewTitle?hideId=`1`&addParent=`1`!]</title>
これで、トップページはサイト名([(site_name)])だけを表示し、2階層以上あるページでは、ページ名の他に親となっているページのタイトルも表示されるようになっています。
汎用的で実用的かと言われると、ちょっとアレですがw
気が向いたら使ってみてください。
下のコードをコピーし、"viewTitle"という新規スニペットを作成して、「スニペットコード」内にペーストしてください。
呼び出しパラメーターは
hideId ・・・ ページ名([*pagetitle*])を隠すドキュメントID。デフォルトは「1」。コンマ区切りで複数指定可。
addParent ・・・ 親ページ名を表示するフラグで0または1を指定。デフォルトは「1」(表示する)。
separator ・・・ ページ名、親ページ名、サイト名の区切りに使う文字列。デフォルトは「 | 」。
<?php /* viewTitle @PARAMETER hideId: ページタイトルを表示させないドキュメントID(コンマ区切り) (デフォルト: 1) addParent: 親のページタイトルを表示するか[0:しない / 1(デフォルト):する] separator: ページタイトルとサイト名の区切り (デフォルト: | ) */ $addParent = isset($addParent) ? $addParent : 1; $hideId = (isset($hideId) && !$hideId) ? $hideId : '1'; $separator = isset($separator) ? $separator : ' | '; $ids = explode(',', $hideId); if (in_array($modx->documentObject['id'], $ids)) { return $modx->config['site_name']; } else { $parent = ''; if ($addParent && $modx->documentObject['parent']) { $parent = $modx->getParent($modx->documentObject['id'], 1, 'pagetitle'); } return $modx->documentObject['pagetitle'] . $separator . (is_array($parent) && isset($parent['pagetitle']) ? $parent['pagetitle'] . $separator : "") . $modx->config['site_name']; } ?>
カテゴリ:MODx | トラックバック (0)