2011-10-20
MODX管理画面(ManagerManager)で必須入力と項目名変更を同時に指定する際の注意
MODX管理画面をManagerManagerでカスタマイズする際、
必須入力の指定「mm_requireFields」を使うと、項目名の横に赤色の星マーク「*」が付きますが、
必須入力の指定「mm_requireFields」より後で、同じ項目に対して、項目名の変更「mm_renameField」を行うと、赤色の星マーク「*」が消えます。
(必須入力のバリデート(チェック)そのものは有効です)
2011-08-19
MODX管理画面でフォルダ(コンテナ)内だけを編集可能にする
MODXの管理画面で、ユーザの権限(投稿者等)によっては、・特定のフォルダ(コンテナ)以下は編集可能にしたいが、
・フォルダ(コンテナ)自体は編集できないようにしたい。
という場合、
・グローバル設定/インターフェースとその他の機能で、
「権限のないリソースの表示」を「はい」にして、
・フォルダ(コンテナ)の所属グループを設定する。
という方法がありますが、
これだと、ツリーで見せたくないリソースやフォルダ(コンテナ)等があっても、ユーザに見えてしまいますね。
そこで、
編集させたくないフォルダ(コンテナ)の所属グループは設定せず(制限なし)にしておいて、
MODXプラグインManagerManagerの「mm_widget_accessdenied」を使って、 画面上の表示で編集不可にするという方法があります。
http://modx.jp/docs/extras/plugins/mm/widgets.html
使い方は、リソースIDとメッセージとロールを指定するだけです。
他のManagerManagerの機能を使ったことがある人なら問題なく使えると思いますので、 以下、「mm_widget_accessdenied」応用編ということで…
1)テンプレート単位でアクセス不可にする。
「mm_widget_accessdenied」の指定がリソース単位(リソースIDによる指定)ですので、そのままでは、テンプレートによって編集不可にするということができません。そこで、以下のような感じで、該当のページが指定のテンプレートを使用していたら「mm_widget_accessdenied」を呼び出すという関数を定義して使うという方法があります。
// テンプレートID指定でアクセス不可を設定する関数
if (! function_exists("mm_deny_templates")) {
function mm_deny_templates($role_users, $tpl, $denied_message) {
global $mm_current_page;
$templates = makeArray($tpl);
if (in_array($mm_current_page['template'], $templates)) {
$docid = (int)$_GET[id];
mm_widget_accessdenied($docid, $denied_message, $role_users);
}
}
}
$role = '!1'; // 管理者(ロールID:1)以外のユーザに対して
$tpl = '1,2'; // テンプレートIDが1,2の場合、ユーザは編集不可にする。
$msg = 'このフォルダ自体は編集できません。子リソースを作成・編集して下さい。';
mm_deny_templates($role, $tpl, $msg);
2)ドキュメントルート以外にMODXをインストールした場合
※この問題は、MODX 1.0.5J-r6で修正されました。ドキュメントルート(例:http;//hogehoge.com/)にMODXをインストールした場合、 「mm_widget_accessdenied」は、警告アイコン(三角形に「!」マーク)とメッセージを表示しますが、
それは「assets/plugins/managermanager/widgets/accessdenied/accessdenied.css」内に警告アイコンのパスが「/assets/plugins/managermanager/widgets/accessdenied/alert.png」と設定されているからです。
ですので、この部分をサイトにあわせて(例:「/fugafuga/assets/plugins/managermanager/widgets/accessdenied/alert.png」に)変更すれば、警告アイコンも出るようになります。
2011-04-12
MODXデフォルトテンプレートを切り替える「SwitchDefaultTemplate」
今までたくさんのMODXサイトを立ち上げてきた中で、色々なMODXのカスタマイズをやってきました。中には一般的に使えそうなものもたくさんあります。
そのうちの一つが、なんとか整理できたので、公開しました。
リソース新規作成時のデフォルトテンプレートを、任意のルールに基づいて切り替えるMODXプラグイン「SwitchDefaultTemplate」です。
たとえば、イベント用のフォルダ内にリソースを新規作成する時は、イベント記事用のテンプレートが自動的にデフォルトになるようにする等、デフォルトテンプレートを、設定したルールに従って自動的に切り替えることができます。
以下のようなルールが設定できます。
詳しくは、
http://www.hikidas.com/hikidas/modx_resource/modx_elements/SwitchDefaultTemplate.ja.html
をご覧ください。
2010-10-28
MODxの一覧表示で、一定件数毎等、データ毎に細く制御する
MODxの使い方・設定TIPS, Ditto&Reflect
※とりあえずメモだけ(未検証)
MODxのDittoで一覧表示する際、
○件毎に改行(<div>〜</div>や<tr>〜</tr>とかで囲む)したい等、
表示上何件目のデータかで、細かく表示を制御したい場合、
プレイスフォルダ
[+ditto_iteration+]
に、表示上何件目か(1件目が0、2件目が1、…)が入るので、
これを使って、PHx等で制御すれば可能。
(チャンク等、tpl等で指定したDitto用の出力テンプレート内で使用します)
で、既に使っている方がいらっしゃいました。
http://modxcms-jp.com/bb/viewtopic.php?f=7&t=190#p1234
http://modxcms-jp.com/bb/viewtopic.php?p=1430#p1430
----
以下のようなものがあるようです。(未検証)
| [+author+] | 作成者のフルネーム(未登録ならユーザー名) |
| [+title+] | リソース名([+pagetitle+]と同じ) |
| [+ditto_iteration+] | 表示上の順番(1件目が0、2件目が1、…) |
| [+url+] | URL(フレンドリーURL対応) |
| [+date+] | 日時(dateSource、dateFormatで指定した内容) |
----
ちなみに、
一覧表示での切替ですが、
Dittoパラメータ「tpl」と「tplAlt」を使う方法があります。
さらに、最初や最後は「tplFirst」「tplLast」が使えます。
2010-09-10
テンプレート変数の情報(getTemplateVar、getTemplateVars)
テンプレート変数の入力値を含め、テンプレート変数の情報を取得するMODxのAPI(getTemplateVar、getTemplateVars等)を使った場合、連想配列で情報が返されますが、その内容は、
・入力値「value」
です。
スニペットで「getTemplateVar」を使う時は、以下のような感じです。
$tmplvar_info = $modx->getTemplateVar('hogehoge'); // テンプレート変数「hogehoge」の情報を取得
if ($tmplvar_info !== FALSE) { // 問題なく情報が取得できた場合
$tmplvar_value = $tmplvar_info['value']; // テンプレート変数の入力値を取得
}
http://d.hatena.ne.jp/hikidas_ikeda/20090306/1236344122
▼API
getTemplateVar($idname= "", $fields= "*", $docid= "", $published= 1)
getTemplateVars($idnames= array (), $fields= "*", $docid= "", $published= 1, $sort= "rank", $dir= "ASC")