サイト内の会員様用お気に入りを実装したいです
Posted: 2012年5月10日(木) 23:50
-----
ご利用のサーバ:
MODXのバージョン:1.0.6J
PHPのバージョン:5.2.17
MySQLのバージョン:
ブラウザ:IE8
-----
お世話になっております
HP内のページを会員それぞれで、お気に入りとして登録できるシステムを作ろうとしています。
頑張って数日間、試行錯誤を繰り返してみましたが、うまくいきませんでした。
イメージとしては、
各ページのテンプレート変数にお気に入りを希望された人の会員No.を羅列して記憶させておき、お気に入り一覧を要求されたらDittoを使って、ページ一覧から(正規表現を使い)本人の会員No.が入っているページだけピックアップすれば実現できるかな?と考えています
テンプレート変数への情報の書き込みの方法がわからず、FDMを使ってやろうとしています。
呼び出しは
[!FDM? &canmoderate=`publicuser` &eform_tpl='fdmEformbookmark' &gotoid=`96` &id=`137` &parent=`137` &model='137' &aliastype=`article_%createdon%` &disableadd=`1` &disableedit=`0` &disablepublish=`1` &disableunpublish=`1` &disabledelete=`1`!]
こんな感じで、
チャンクfdmEformbookmarkの中身は
<label for="address">お気に入り</label><br />
<input name="tvお気に入り登録用" value="[[testbookmark2]]" type="text" eform="お気に入り登録用::1" />
スニペットtestbookmark2の中身は
<?php
$tmplvar_info = $modx->getTemplateVar('お気に入り登録用');
if ($tmplvar_info !== FALSE) { // 問題なく情報が取得できた場合
$tmplvar_value = $tmplvar_info['value']; // テンプレート変数の入力値を取得
}
// 正規表現
$pattern = '*,90,*';
if (!(preg_match($pattern , $tmplvar_value))) {
$tmplvar_value=$modx->$tmplvar_value . '90,';//90は仮の会員No.で、最終的にはログインユーザーのIDに変える予定です。
echo $tmplvar_value;
} else {
print('条件外です~~~~~~!!!!!');
}
?>
おそらく、会員No.が追加されるところまではうまくいっていると思うのですが、「スニペットtestbookmark2」が出力した結果がフォームのテキスト入力に書き出されても、画面上では会員No.を追加する前のデータに戻されてしまっているようです。(FDMの仕組みなのでしょうか?変数の中身が最初からあるとそれを優先して表示しているのでしょうか?)
会員No.がしっかり追加されてフォームに表示されれば、あとはFDMの送信ボタンを押せばテンプレート変数に情報が追加される。そういうイメージで作成してきましたが、ここで行き詰りました。
実力不足で、説明も足りないと思いますが、ぜひご知恵をお貸しください。よろしくお願いします
ご利用のサーバ:
MODXのバージョン:1.0.6J
PHPのバージョン:5.2.17
MySQLのバージョン:
ブラウザ:IE8
-----
お世話になっております
HP内のページを会員それぞれで、お気に入りとして登録できるシステムを作ろうとしています。
頑張って数日間、試行錯誤を繰り返してみましたが、うまくいきませんでした。
イメージとしては、
各ページのテンプレート変数にお気に入りを希望された人の会員No.を羅列して記憶させておき、お気に入り一覧を要求されたらDittoを使って、ページ一覧から(正規表現を使い)本人の会員No.が入っているページだけピックアップすれば実現できるかな?と考えています
テンプレート変数への情報の書き込みの方法がわからず、FDMを使ってやろうとしています。
呼び出しは
[!FDM? &canmoderate=`publicuser` &eform_tpl='fdmEformbookmark' &gotoid=`96` &id=`137` &parent=`137` &model='137' &aliastype=`article_%createdon%` &disableadd=`1` &disableedit=`0` &disablepublish=`1` &disableunpublish=`1` &disabledelete=`1`!]
こんな感じで、
チャンクfdmEformbookmarkの中身は
<label for="address">お気に入り</label><br />
<input name="tvお気に入り登録用" value="[[testbookmark2]]" type="text" eform="お気に入り登録用::1" />
スニペットtestbookmark2の中身は
<?php
$tmplvar_info = $modx->getTemplateVar('お気に入り登録用');
if ($tmplvar_info !== FALSE) { // 問題なく情報が取得できた場合
$tmplvar_value = $tmplvar_info['value']; // テンプレート変数の入力値を取得
}
// 正規表現
$pattern = '*,90,*';
if (!(preg_match($pattern , $tmplvar_value))) {
$tmplvar_value=$modx->$tmplvar_value . '90,';//90は仮の会員No.で、最終的にはログインユーザーのIDに変える予定です。
echo $tmplvar_value;
} else {
print('条件外です~~~~~~!!!!!');
}
?>
おそらく、会員No.が追加されるところまではうまくいっていると思うのですが、「スニペットtestbookmark2」が出力した結果がフォームのテキスト入力に書き出されても、画面上では会員No.を追加する前のデータに戻されてしまっているようです。(FDMの仕組みなのでしょうか?変数の中身が最初からあるとそれを優先して表示しているのでしょうか?)
会員No.がしっかり追加されてフォームに表示されれば、あとはFDMの送信ボタンを押せばテンプレート変数に情報が追加される。そういうイメージで作成してきましたが、ここで行き詰りました。
実力不足で、説明も足りないと思いますが、ぜひご知恵をお貸しください。よろしくお願いします