MODXスニペット

MODXのスペニットを変更

 これまでMODXでサイト作成してたんですが、PCごとデータが吹っ飛びました。
 アップロードしていたデータを元に、再度MODXでデータを手作業復旧したのですが、 ついでにスペニットなども作り直したので公開します。 作り直したおかげで以前は新しいページ作るたびにスペニットやテンプレートにID記述してたんですが、そういう面倒もなくなりました。 コードもシンプルになってスッキリしたし。なんだ、いいこと沢山あるじゃないか。(涙目)

アクティブなページの識別

スニペット名 : [[ActiveID]]
指定したIDのリソースで使用すると、「active」という文字列になります。

基本的な使い方 : パラメータtidの指定が必ず必要です。テンプレート内などで使用します。

パラメータ:
&tid  「active」と表示したいリソースID。省略するとどのページでも何も表示しません。 カンマ区切りで指定すると複数のIDを指定できます。

使用例 : [!ActiveID?tid='2,3'!]
IDが2か3のリソースで記述すると「active」という文字列になります。それ以外だと何も表示しません。 テンプレートなどに記述して使用します。「active」という文字列はBootstrap3では度々使用する事があります。


// 現在のリソースID
$id = $modx->documentIdentifier;

// 引数取得
if (isset($tid)==FALSE){ $tid = '0'; }
$tids = explode(',', $tid);

// リストの中にidが見つかったら「 active 」を出力
if ( in_array($id, $tids) ){
    echo ' active ';
}

アクティブなページの親を識別

スニペット名 : [[ActiveParentID]]
指定したIDを親に持つリソースで使用すると、「active」という文字列になります。

基本的な使い方 : パラメータtidの指定が必ず必要です。テンプレート内などで使用します。

パラメータ:
&tid  「active」と表示したいリソースの親のID。省略するとどのページでも何も表示しません。 カンマ区切りで指定すると複数のIDを指定できます。

使用例 : [!ActiveParentID?tid='2,3'!]
親のIDが2か3のリソースで記述すると「active」という文字列になります。それ以外だと何も表示しません。 テンプレートなどに記述して使用します。「active」はBootstrap3では度々使用する事があります。


// 現在のリソースの親リソースID
$docId = $modx->documentIdentifier;
$arrayParent = $modx->getParent($docId, 1,'id');
$id = $arrayParent['id'];

// 引数取得
if (isset($tid)==FALSE){ $tid = '0'; }
$tids = explode(',', $tid);

// リストの中にidが見つかったら「 active 」を出力
if ( in_array($id, $tids) ){
    echo ' active ';
}

相対パスにする

スニペット名 : [[AddPath]]
リソースの階層に応じて「../」を追加します。 baseタグを使わずに相対パス記述を実現します。

基本的な使い方 : [[AddPath]] と書くだけで動作します。パラメータはありません。

使用例 :<a href="[[AddPath]][~123~]">~</a>
相対パスを使用する場合は次の設定も必要です。
メイン > ダッシュボード > グローバル設定 > フレンドリーURL
「フレンドリーURLを使用」を「はい」
「エイリアスパスを使用」を「はい」
そして<BASE>タグも使用しません。


$id = $modx->documentIdentifier;
$levelcount = count($modx->getParentIds($id));
$output = str_repeat('../' , $levelcount);
return $output;

関連記事

  1. MODXを導入してみた MODXとは? CMSのひとつ。 Webサイトの更新やメンテ...
  2. MODXを再導入した 目次 やらかしたのでやり直し リソースへのパスを相対パスにす...