modxの管理画面がカスタマイズしやすくなったらしいので・・・
皆さんこんにちは。
最近ブログ投稿をサボっていたので
引き続きshimojoが投稿します。
たまには技術の話でも・・・ということで
今回はMODX Evolutionの話です。
先月あたりに新しいバージョンが出まして、
管理画面のカスタマイズが行いやすくなったとのことなので早速使ってみました。
まだあまり情報が無かったので今回はとりあえずツリーペインをカスタマイズしてみることにしました。
元々のツリーペインは皆さん知っていると思いますがこんな感じ。

作業手順は以下のとおり
1.プラグインコードの記述
とたどり新しいプラグインを作成します。
今回は簡易的に↓の様な、指定した親IDを持つリソースの
一覧と新規作成のみを表示するものを作りました。
if($action!=1 || $_GET['f']!==’tree’) return;
$pids = array(2,3,4);
echo <<<EOT
<style type=”text/css”>
#treeView {
line-height: 2em;
}
#treeView dt {
margin-top: 10px;
background-color:#ccf;
font-size: 20px;
}
#treeView dd {
font-size: 16px;
}
</style>
EOT;
echo ‘<dl id=”treeView”>’;
foreach ($pids as $pid) {
$res = $modx->getDocument($pid, “pagetitle”, 1);
if (empty($res)) {
$res = $modx->getDocument($pid, “pagetitle”, 0);
}
echo “<dt>{$res['pagetitle']}</dt>”;
echo “<dd><a href=\”index.php?a=4&pid={$pid}&newtemplate={$tids[$pid]}\” target=\”main\”>{$res['pagetitle']}の新規追加</a></dd>”;
echo “<dd><a href=\”index.php?a=3&id={$pid}&newtemplate={$tids[$pid]}&tab=0\” target=\”main\”>{$res['pagetitle']}の一覧</a></dd>”;
}
echo ‘</dl>’;
if($_SESSION['mgrRole'] != ’1′) {
$modx->event->setGlobalVariable(‘action’,998);
}
一つずつ説明すると、
これがツリーペインの判別方法。
このままコピペすればツリーペイン以外ではreturn(元々の処理が実行)されます。
次に
ここで表示対象の親リソースIDを指定しています。
次に
?
EOT
で見た目を適当に調整するようCSSを記述しています。
次に
?
echo ‘</dl>’;
の処理で新規追加と一覧へのリンクを生成します。
最後に重要ポイント。
$modx->event->setGlobalVariable(‘action’,998);
}
この処理でv1.0.6Jで実装された何もしないというアクション(998)を設定します。
これを入れることでデフォルトのメニューペインを表示しないようにしています。
ちなみに今回はデバッグの利便性も考え、ロールがAdministrator(ロールID:1)の場合には
デフォルトのメニューペインも表示するようにしています。
2.システムイベントの設定
今回実装するのはツリーペインなので、
プラグイン編集画面のシステムイベントタブから、
管理画面のページ初期化処理(OnManagerPageInit)にチェックを入れます。
3.保存
最後に右上の保存ボタンを押下して完了。
これでツリーペインがカスタマイズされているはずです。
ツリーペインは管理画面内のページを遷移しても再描画されませんので、
手っ取り早くログアウト → ログインして見ます。
そうするとこんな感じに表示が変わります。

こうすると余計なメニューは表示されないので、
あまり知識の無い人へ管理画面の情報を教えるときに
このカスタマイズをしておくと安心ですね。




















