MODxでユーザ登録・ログインといえば、WebLoginPE。
独自項目も自由に増やせるとわかってからはなんて便利な!と思って疑いませんでした。
が、一筋縄ではいかないのがやっぱりMODx。
独自項目がDBに登録されないのです。
WebLoginPEをDLするとdocディレクトリの中に丁寧な解説ドキュメントがついてきます。
英語ではあるものの、一つ一つのパラメータについて説明してくれてるのでそれを見ながら動かしてみました。
今回やりたかったのは新規ユーザ登録時に独自の項目を登録させることとあとからそれを編集すること。
&customFieldに入れたい項目名を指定して、&inputHandlerで内容とかを指定して…。
スニペットコールは以下のようになりました。
[!WebloginPE? &lang=`ja` &type=`simple` ®Type=`verify` ®isterTpl=`wlpe_register` &profileTpl=`wlpe_edit` &customTable=`web_user_profile` &customFields=`usr_town` &inputHandler=`住んでいるところ:UserTown:usr_town:usr_town:select:東京23区,23区以 外`!]
これで登録フォーム用チャンク(wlpe_register)とプロフィール編集用チャンク(wlpe_edit)にプレイスホルダ[+form.usr_town+]を置くと、ちゃんとプルダウンリストが表示されました。
先にユーザ登録を行っていたので「プロフィール編集」から登録しようとすると…。
「保存」ボタンを押しても、何も起こりません。
再度プロフィール編集を押しても何も変わらないまま。
デフォルトの「フルネーム」とかを変えてみても同様です。
エラーさえ出ない。
しかしDBの中身を除いてみると、指定のテーブルweb_user_profileと、その中にusr_townという項目は作られています。でも中身は空っぽ。
プロフィール編集機能自体が無効なのか、こちらの設定ミスなのか…。
悩むのも疲れたのでMODx forumにお邪魔し情報収集。
余談ですがこういうとき英語フォーラムだとトピも投稿数も多いので、多少面倒でも最初っからさくっと英語で検索しちゃいます。
で、見つけたのがこれ↓
http://modxcms.com/forums/index.php/topic,22083.0.html
betoranaldiさんが同じようなことで悩まれていて、自己解決されています。
Once I created a custom form I changed the save button's value="saveprofile" to value="saveprofilesimple" and it started working.
意訳:saveボタンのvalueを「saveprofilesimple」に変えたら使えちゃったよ、えへへ。
saveprofilesimple、とのは一体どこから出てきたのでしょうか。付属のドキュメントにはそんなこと書いてないっすよ。
と、ソースを追ったら確かに、&type=`simple`のときは「saveprofilesimple」にしなきゃいけない仕組みになってます。
ドキュメントに書いて欲しかった…。
そもそも&type=`simple`なんて、デフォルトじゃないですか。パラメータにわざわざ書かないので意識してない人は多いはず。だからデフォルトテンプレートをちょこっと変えればすぐ使えると思ってたのに…。
ちなみにデフォルトのプロフィール編集用テンプレートだとvalueは「saveprofile」になってます。
試しにvalueを変えてみたら…本当にできました。
同じノリで、プロフィール削除のボタンはvalue="deleteprofilesimple"にしなければいけないし、&type=`profile`のときはそのままvalue="saveprofile"で大丈夫です。
ってことをまとめようと思ったら付属のドキュメントの「Views(templates)」の中にまとまってました。
The services in WebLoginPE are:の下のところです。

何回も見ていたページですが、これ、ただ各タイプ別の機能を記しただけにしか見えないです…。脱力。
まあいいか。気付けたんだし。