ページ 11

独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 11:19
by li4ch
いつもお世話になっています。

Evo内に、独自でグローバル設定の延長のような設定画面を作りたいと思うのですが、それは可能でしょうか?

現在は、同じようなことをリソースとテンプレート変数、GETFIELDで作って使用していますが、モジュールもしくは独自で設定画面を出来たらと思い、いろいろ調べたのですがわかりませんでした。

ちょっとしたヒントでもいいので、よろしくお願いします。

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 12:15
by yama
特に無理せず実装できると思います。(設定画面を作るということなのでコード量はそれなりになるかもしれませんが)
いろいろアプローチがありますが(PHPは分かりますでしょうか?)
manager/index.phpで $_GET['a']==='17' の場合、このアクションを横取りして独自の設定画面出力を行なうということができると思います。Revoだと標準でCMPという本格的な仕組みが備わってますが、Evoの場合は仕組みに頼らずにライトに実装できると思います。

manager/actions/mutate_settings.dynamic.php がグローバル設定の画面のコードなので、これをコピーしていろいろ実験してみるとコツをつかめると思います。

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 12:43
by li4ch
さっそくのお返事ありがとうございます。

PHPに関しては、すでにあるコードを改造したりするのは、多少ならできる程度です。

もし何か参考になるようなコード、またはページがあれば、教えて頂けませんでしょうか?

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 13:05
by yama

コード: 全て選択

if($_REQUEST['mode'] == 'update')
{
更新処理
exit;
}
include_once "header.inc.php";
?>
<form>
サイト名<input type="text" name="site_name" value="<?php echo $modx->config['site_name'];?>" />
<input type="submit" value="更新" />
</form>
<?php
include_once "footer.inc.php";
大雑把ですが、モジュールで対応する場合はこんな感じでどうでしょう?更新処理に関してはmanager/processors/save_settings.processor.phpが参考になると思います

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 13:38
by li4ch
ありがとうございます。

なんか出来るような気がしてきました。

アドバイスをもとに自分なりにやってみますね。

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 14:46
by yama
たぶん多少の試行錯誤は必要だと思うのでこまめに質問いただければと

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 16:53
by li4ch
yama様、なんとかアドバイスを参考に既存の値をモジュール内で更新出来ることが出来ました。
(適当にいろいろコピペしたら動いちゃったみたいな感じですが・・・。なので、意味はわからない所が多数あります。)

そこで、グローバル変数にはない新しい項目を作りたいのですが、変数を作るにはどうしたらよいでしょうか?

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月16日(金) 17:42
by yama
単純にinput要素を増やしたぶんだけ、変数を追加できます。

サイト名<input type="text" name="site_name" value="<?php echo $modx->config['site_name'];?>" />
たとえば先ほど例示した上記の記述では$modx->config['site_name']という変数を扱っていますが、

変数X<input type="text" name="x" value="<?php echo $modx->config['x'];?>" />
上記のように書けば、xという変数を追加できます。name="x"というのがそれにあたります

assets/cache/siteCache.idx.php
上記のファイルをテキストエディタで開いてみると、
$c['site_name'] = "My MODX Site";
こんな感じで値が管理されていることが分かると思います
この値はデータベースでも連動して管理されています。(データベースで管理されている値のほうがデータ本体です)

Re: 独自設定画面を作りたいのですが・・・

Posted: 2012年3月17日(土) 04:34
by li4ch
おお、いけました!!

とりあえず、ここからふくらませてみようと思います。

yama様ありがとうございました。