Hatena::ブログ(Diary)

ウェブ屋のCMS→modxヒキダス流(備忘録)

2015-03-16

SwitchDefaultTemplate更新

MODXリソース作成時のデフォルトテンプレートを切り替える「SwitchDefaultTemplate」をアップしました。

http://www.hikidas.com/hikidas/modx_resource/modx_elements/SwitchDefaultTemplate.ja.html

MODX-1.0.14J-r9の仕様変更で、リソース作成・編集画面のイベント発火とテンプレート変数を読み込む順番が前後したことを受けての更新です。

一応、MODX-1.0.14J-r8以前でも動作するように考えて更新しましたが、検証はできていません。

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」は、警告アイコン(三角形に「!」マーク)とメッセージを表示しますが、
ドキュメントルート以外の場所(例:http;//hogehoge.com/fugafuga/)にMODXインストールした場合、そのままでは警告アイコンが出ません。(メッセージは出ます)
それは「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の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

----

Dittoのプレイスフォルダ(リソース変数以外)には、

以下のようなものがあるようです。(未検証)

[+author+]作成者のフルネーム(未登録ならユーザー名)
[+title+]リソース名([+pagetitle+]と同じ)
[+ditto_iteration+]表示上の順番(1件目が0、2件目が1、…)
[+url+]URL(フレンドリーURL対応)
[+date+]日時(dateSource、dateFormatで指定した内容)

----

ちなみに、

一覧表示での切替ですが、

奇数件目、偶数件目の切り替えだけなら、

Dittoパラメータtpl」と「tplAlt」を使う方法があります。

さらに、最初や最後は「tplFirst」「tplLast」が使えます。

Connection: close