独自設定画面を作りたいのですが・・・ トピックは解決済みです

プログラム(機能)関連の開発の話題
返信する
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

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

投稿記事 by li4ch »

いつもお世話になっています。

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

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

ちょっとしたヒントでもいいので、よろしくお願いします。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 by yama »

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

manager/actions/mutate_settings.dynamic.php がグローバル設定の画面のコードなので、これをコピーしていろいろ実験してみるとコツをつかめると思います。
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

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

投稿記事 by li4ch »

さっそくのお返事ありがとうございます。

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

もし何か参考になるようなコード、またはページがあれば、教えて頂けませんでしょうか?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 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が参考になると思います
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

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

投稿記事 by li4ch »

ありがとうございます。

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

アドバイスをもとに自分なりにやってみますね。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 by yama »

たぶん多少の試行錯誤は必要だと思うのでこまめに質問いただければと
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

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

投稿記事 by li4ch »

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

そこで、グローバル変数にはない新しい項目を作りたいのですが、変数を作るにはどうしたらよいでしょうか?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

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

投稿記事 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";
こんな感じで値が管理されていることが分かると思います
この値はデータベースでも連動して管理されています。(データベースで管理されている値のほうがデータ本体です)
li4ch
メンバー
メンバー
記事: 18
登録日時: 2009年10月09日(金) 14:41

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

投稿記事 by li4ch »

おお、いけました!!

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

yama様ありがとうございました。
返信する