一部のテンプレート変数がリソースと紐付けできない
Posted: 2014年7月05日(土) 23:12
-----
ご利用のサーバ:lv9.org
MODXのバージョン:1.0.14j
PHPのバージョン:5.4.26
MySQLのバージョン:5.0.10
ブラウザ:Chrome 35.0.1916.153 m
-----
お世話になります。
MODxでブログを構築しようと思って(MODxに関する備忘録とかを書きたかったので)、テンプレート変数を使ってカテゴリやタグを実装しようと考えました。
そこで、別所でMODxの1.0.12jを弄ったときにMODxでブログができるかどうか実験し、カテゴリやタグのような運用が実装できたので、そのときと同じ方法で構築しました。
----------
実装した方法)
※カテゴリ・タグ共に全く同じ方法です。
リソースツリー
■ブログ
┝■記事
| ┝■2014年7月
| |┝□記事1
| |└□記事2
| └■2014年6月
| ┝□記事1
| └…
┝■カテゴリ
|┝□雑記
|┝□MODx関連
|└…
└■タグ
┝□スニペット
┝□プラグイン
└…
上記のように、ブログコンテナの下に記事コンテナ(記事コンテナの下に月ごとに記事をまとめてある)、
カテゴリコンテナ、タグコンテナ(カテゴリ・タグ両コンテナ下にはカテゴリやタグになるサブリソースがある)がある構造です。
この状態で、テンプレート変数には
変数名:[*tags*]
登校画面内の見出し:タグ
入力フォーム:Check Box
オプション:@SELECT pagetitle FROM site_content WHERE parent='(上記タグコンテナのリソースID)' ORDER BY id ASC;
規定値:(空)
プロセッサ:Delimited List
プロセッサの設定:パラメータ→Delimiter
値:,
として、使用しているテンプレートと関連付けし、
プロパティは紐付けしたテンプレートの属しているカテゴリを既存のカテゴリを設定しました(他はデフォルト)。
----------
こうすることで、タグコンテナのサブリソースである「スニペット」や「プラグイン」のリソース名がpagetitleで引っ張られ、
関連付けられたテンプレートを使用したリソース(記事コンテナのサブリソース)の編集画面にてチェックボックスで選択できます。
実際、別所で構築した1.0.12jではこれでチェックボックスでチェックを入れたテンプレート変数とリソースが紐付けられ、
データベースのsite_tmpvar_contentvalues内に紐付けられたIDやvalueを確認できました。
ところが、今回インストールした1.0.14jでは、上記の方法で実装したところ、
確かに関連付けしたテンプレートを使用したリソースの編集画面ではカテゴリやタグの名前がちゃんと表示され、
チェックボックスをチェックしたりチェックを外したりすることができます。
しかし、チェックボックスにチェックを入れてリソースを「保存」または「更新」しても、
site_tmpvar_contentvaluesの中で紐付けされた行が作られていませんでした。
ただし、カテゴリもタグも、複数項目にチェックを入れると区切り文字である「,(データベース内では「||」)」だけがvalueに保存されている状態で
site_tmpvar_contentvaluesに行が作られたことが確認できました。
値が正常に保存されていないのは文字コードの問題かと思いましたが、
サイト自体は文字化けしておらず他のテーブルも正常にデータが保存されています(照合順序はutf8_general_ciでした)。
グローバル設定のセキュリティタブにアットマークバインドの有効/無効の項目があったので、ひょっとするとこれが関連するのかと思って有効にしてみましたが変化はなし。
(1.0.12jでもこのアットマークバインドは無効の状態でした)
何故、このような現象が発生してしまうのでしょうか?
(実装方法は同じとはいえ、phpやmysqlのバージョンやサーバの環境が違いますし、MODxのバージョンも違うので、どこに起因する現象なのか分からず)
また、ちゃんとsite_tmpvar_contentvaluesにリソースとテンプレート変数を紐付けるようにするにはどうすれば良いのでしょうか?
何かご存知の方がいらしたら、ご教示頂けると幸いです。
ご利用のサーバ:lv9.org
MODXのバージョン:1.0.14j
PHPのバージョン:5.4.26
MySQLのバージョン:5.0.10
ブラウザ:Chrome 35.0.1916.153 m
-----
お世話になります。
MODxでブログを構築しようと思って(MODxに関する備忘録とかを書きたかったので)、テンプレート変数を使ってカテゴリやタグを実装しようと考えました。
そこで、別所でMODxの1.0.12jを弄ったときにMODxでブログができるかどうか実験し、カテゴリやタグのような運用が実装できたので、そのときと同じ方法で構築しました。
----------
実装した方法)
※カテゴリ・タグ共に全く同じ方法です。
リソースツリー
■ブログ
┝■記事
| ┝■2014年7月
| |┝□記事1
| |└□記事2
| └■2014年6月
| ┝□記事1
| └…
┝■カテゴリ
|┝□雑記
|┝□MODx関連
|└…
└■タグ
┝□スニペット
┝□プラグイン
└…
上記のように、ブログコンテナの下に記事コンテナ(記事コンテナの下に月ごとに記事をまとめてある)、
カテゴリコンテナ、タグコンテナ(カテゴリ・タグ両コンテナ下にはカテゴリやタグになるサブリソースがある)がある構造です。
この状態で、テンプレート変数には
変数名:[*tags*]
登校画面内の見出し:タグ
入力フォーム:Check Box
オプション:@SELECT pagetitle FROM site_content WHERE parent='(上記タグコンテナのリソースID)' ORDER BY id ASC;
規定値:(空)
プロセッサ:Delimited List
プロセッサの設定:パラメータ→Delimiter
値:,
として、使用しているテンプレートと関連付けし、
プロパティは紐付けしたテンプレートの属しているカテゴリを既存のカテゴリを設定しました(他はデフォルト)。
----------
こうすることで、タグコンテナのサブリソースである「スニペット」や「プラグイン」のリソース名がpagetitleで引っ張られ、
関連付けられたテンプレートを使用したリソース(記事コンテナのサブリソース)の編集画面にてチェックボックスで選択できます。
実際、別所で構築した1.0.12jではこれでチェックボックスでチェックを入れたテンプレート変数とリソースが紐付けられ、
データベースのsite_tmpvar_contentvalues内に紐付けられたIDやvalueを確認できました。
ところが、今回インストールした1.0.14jでは、上記の方法で実装したところ、
確かに関連付けしたテンプレートを使用したリソースの編集画面ではカテゴリやタグの名前がちゃんと表示され、
チェックボックスをチェックしたりチェックを外したりすることができます。
しかし、チェックボックスにチェックを入れてリソースを「保存」または「更新」しても、
site_tmpvar_contentvaluesの中で紐付けされた行が作られていませんでした。
ただし、カテゴリもタグも、複数項目にチェックを入れると区切り文字である「,(データベース内では「||」)」だけがvalueに保存されている状態で
site_tmpvar_contentvaluesに行が作られたことが確認できました。
値が正常に保存されていないのは文字コードの問題かと思いましたが、
サイト自体は文字化けしておらず他のテーブルも正常にデータが保存されています(照合順序はutf8_general_ciでした)。
グローバル設定のセキュリティタブにアットマークバインドの有効/無効の項目があったので、ひょっとするとこれが関連するのかと思って有効にしてみましたが変化はなし。
(1.0.12jでもこのアットマークバインドは無効の状態でした)
何故、このような現象が発生してしまうのでしょうか?
(実装方法は同じとはいえ、phpやmysqlのバージョンやサーバの環境が違いますし、MODxのバージョンも違うので、どこに起因する現象なのか分からず)
また、ちゃんとsite_tmpvar_contentvaluesにリソースとテンプレート変数を紐付けるようにするにはどうすれば良いのでしょうか?
何かご存知の方がいらしたら、ご教示頂けると幸いです。