一部のテンプレート変数がリソースと紐付けできない  【解決済み】

質問全般・改善要望
返信する
アバター
アルム=バンド_modx
メンバー
メンバー
記事: 11
登録日時: 2014年6月29日(日) 13:19

一部のテンプレート変数がリソースと紐付けできない

投稿記事 by アルム=バンド_modx »

-----
ご利用のサーバ: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にリソースとテンプレート変数を紐付けるようにするにはどうすれば良いのでしょうか?
何かご存知の方がいらしたら、ご教示頂けると幸いです。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 一部のテンプレート変数がリソースと紐付けできない

投稿記事 by yama »

http://mng.demo.modx.jp/
上記で症状再現サンプルを作っていただいてよいでしょうか?少し手間がかかりそうなので申し訳ないですが・・
アバター
アルム=バンド_modx
メンバー
メンバー
記事: 11
登録日時: 2014年6月29日(日) 13:19

Re: 一部のテンプレート変数がリソースと紐付けできない

投稿記事 by アルム=バンド_modx »

お忙しい中お返事頂きありがとうございます。 取り急ぎですが、ブログ部分をソースのコピペ(リソースIDなどは書き換え)して再現しました。グローバル設定もキャッシュを無効化したり、一部弄ってあります。
デモサイトでもやはり同じ症状が出ています。
管理者・パスワードはデフォルトのままです。

-----
それと、テンプレート作成時に親テンプレートを「None」にするとSQLクエリエラー(parentの列に整数値を入れろ!)と怒られてしまい、親なしの新規テンプレートが作成できませんでした(これはデモサイトの仕様でしょうか…?)。
そこで、minimalTemplateを親にして、サイトに使っているcssとjavascriptをbody内に直書きするという方法でレイアウトを組んだので非常にhtmlのソースが混沌としてしまいました。
※本題とは関係ないですが一応SQLのエラー載せておきます。

コード: 全て選択

« MODX Parse Error »

MODX encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - Incorrect integer value: '' for column 'parent' at row 1 »
SQL > INSERT INTO `demo_140707185822-23930`.`modx_site_templates` (templatename,description,content,locked,category,parent) VALUES('blog_temp','','\r\n\r\n\r\n	\r\n	\r\n	\r\n	\r\n\r\n	\r\n	\r\n	\r\n	\r\n	\r\n	[*jsLoad*]\r\n\r\n	\r\n	\r\n	\r\n [*cssLoad*]\r\n\r\n	\r\n\r\n\r\n\r\n\r\n
\r\n\r\n{{header}}\r\n\r\n	\r\n
\r\n
\"ラック\"
\r\n
\r\n	\r\n\r\n{{menuBar}}\r\n\r\n	\r\n
\r\n\r\n	 \r\n
\r\n\r\n	 \r\n
\r\n	 [!TopicPath!]\r\n
\r\n	 \r\n\r\n{{blog_sidebar}}\r\n\r\n	 \r\n
\r\n
\r\n	 [*content*]\r\n
\r\n
\r\n	 \r\n\r\n
▲

\r\n\r\n
\r\n	 \r\n\r\n
\r\n	\r\n\r\n{{footer}}\r\n\r\n
\r\n\r\n\r\n\r\n','0','0','')
Basic info
REQUEST_URI :	/manager/index.php
Manager action :	20 - Saving template
Referer :	http://140707185822-23930.evo.demo.modx.jp/manager/index.php?a=19
User Agent :	Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
IP :	127.0.0.2
Benchmarks
MySQL :	0.0020 s (4 Requests)
PHP :	0.0191 s
Total :	0.0211 s
Memory :	2.48 MB

Backtrace

1	include_once()
manager/index.php on line 350
2	DBAPI->insert()
manager/processors/save_template.processor.php on line 66
3	DBAPI->__insert()
manager/includes/extenders/dbapi.mysql.class.inc.php on line 270
4	DBAPI->query()
manager/includes/extenders/dbapi.mysql.class.inc.php on line 323
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 一部のテンプレート変数がリソースと紐付けできない

投稿記事 by yama »

http://140707185822-23930.evo.demo.modx.jp/manager/
ありがとうございます、修正しました。どうでしょうか?
アバター
アルム=バンド_modx
メンバー
メンバー
記事: 11
登録日時: 2014年6月29日(日) 13:19

Re: 一部のテンプレート変数がリソースと紐付けできない

投稿記事 by アルム=バンド_modx »

yama様

対応頂きありがとうございます!
タグが意図した通りに動いることが確認できました。

これは、どこを修正してくださったのでしょうか?
投稿画面でテンプレート変数が別タブに分離されているのはさすがに一目で分かったのですが…。

---
それと、別所でTvTagCloudスニペットによるタグの実装について知りました。
ある目的の実装の為に複数の手法で実現できる奥深さを思い知りました…。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: 一部のテンプレート変数がリソースと紐付けできない

投稿記事 by yama »

https://github.com/modxcms-jp/evolution ... 0406272c4a
上記部分を修正しました

http://forum.modx.jp/viewtopic.php?p=7689#p7689
ベータ版は修正済みです
アバター
アルム=バンド_modx
メンバー
メンバー
記事: 11
登録日時: 2014年6月29日(日) 13:19

Re: 一部のテンプレート変数がリソースと紐付けできない  【解決済み】

投稿記事 by アルム=バンド_modx »

yama様

何度も申し訳ありませんでした。
修正箇所確認いたしました。ありがとうございます。
(ファイル管理の方で更新日を確認すれば良い、という概念がすっぽり抜け落ちてました…。)
これでようやく実際運用に持っていけそうです。本当に助かりました。
また、テンプレートの操作に関してもmutate_templates.dynamic.phpを修正してくださったこと、重ねて感謝申し上げます。
返信する