« お知らせ | メイン | cfFormMailerダウンロード不備について »

[modx]タイトルタグをちょっと便利に表示するスニペット

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)

トラックバック

このエントリーのトラックバックURL:
http://www.clefarray-web.net/blog/tb/19

カテゴリーs

Powered by Movable Type 5.01

墨田区 錦糸町のホームページ制作工房 クレファレイ・ファクトリーによるブログです。

クレファレイ・ファクトリー