モディファイアを使用した場合に子テンプレートが使用できない

質問全般・改善要望
masco
メンバー
メンバー
記事: 105
登録日時: 2014年9月26日(金) 10:43

モディファイアを使用した場合に子テンプレートが使用できない

投稿記事by masco » 2015年4月04日(土) 22:25

----------------
1.0.14J-r9
php 5.5.19
mysql 5.0.95
apache 2.2
----------------

親テンプレートを適用したときに
親テンプレートを[*content*]であれば問題なく利用できますが、
[*content:モディファイア*]にすると子テンプレートの[*content*]以外の変数が反映されなくなります。
また、管理画面の子テンプレートの編集画面で親テンプレート内容が表示されないようです。

作成テンプレート
親テスト
子テスト

テンプレート「子テスト」を使用
http://150404220911-8775.evo.demo.modx.jp/1.html

管理画面
http://150404220911-8775.evo.demo.modx.jp/manager/
アバター
yama
管理人
記事: 2908
登録日時: 2009年7月29日(水) 02:50

Re: モディファイアを使用した場合に子テンプレートが使用できない

投稿記事by yama » 2015年4月05日(日) 10:03

http://150404220911-8775.evo.demo.modx.jp/1.html
修正しました
document.parser.class.inc.zip
manager/includes/
(28.78 KiB) ダウンロード数: 57 回

mutate_tmplvars.dynamic.zip
manager/actions/
(7.52 KiB) ダウンロード数: 57 回
masco
メンバー
メンバー
記事: 105
登録日時: 2014年9月26日(金) 10:43

Re: モディファイアを使用した場合に子テンプレートが使用できない

投稿記事by masco » 2015年4月05日(日) 22:23

yamaさま

ありがとうございます。

ファイルを上書きしたところ
変数は表示されて機能するようになりましたが、
管理画面側の子テンプレートの編集画面はそのまま変化なしで、
親テンプレートに記入している内容が表示されていません。
(デモサイトで再現できませんでした)

また、今度は[*content*]にモディファイアを使用していない親テンプレートにした場合、
その子テンプレートがうまく機能しませんでした。
(デモサイトで再現できました)
http://150404220911-8775.evo.demo.modx.jp/1.html

管理画面
http://150404220911-8775.evo.demo.modx.jp/manager/



別件でnl2brモディファイアですが、オプションが機能しませんでした。
下記コメントアウトしたら機能しましたので、そのあたりでうまく動かないように思います。

変更前

コード: 全て選択

case 'nl2br':
            if($opt!=='')
            {
               $opt = strtolower($opt);
               if($opt==='false') $opt = false;
               elseif($opt==0)    $opt = false;
               else               $opt = true;
            }
               elseif($modx->config['mce_element_format']==='html'){
                                      $opt = false;}
            else{                   $opt = true;}
               $value = nl2br($value,$opt);
               break;
      case 'nl2br':
            if($opt!=='false') $opt = true;
            else               $opt = false;
            $value = nl2br($value, $opt);
            break;


変更後

コード: 全て選択

case 'nl2br':
   //         if($opt!=='')
   //         {
   //            $opt = strtolower($opt);
   //            if($opt==='false') $opt = false;
   //            elseif($opt==0)    $opt = false;
   //            else               $opt = true;
   //         }
            //   elseif($modx->config['mce_element_format']==='html'){
            //                          $opt = false;}
      //      else{                   $opt = true;}
            //   $value = nl2br($value,$opt);
            //   break;
         //   case 'nl2br':
            if($opt!=='false') $opt = true;
            else               $opt = false;
            $value = nl2br($value, $opt);
            break;
アバター
yama
管理人
記事: 2908
登録日時: 2009年7月29日(水) 02:50

Re: モディファイアを使用した場合に子テンプレートが使用できない

投稿記事by yama » 2015年4月06日(月) 07:46

編集画面は添付ファイルが間違っていました。修正ぶんと合わせて添付します
添付ファイル
mutate_templates.dynamic.zip
(4.29 KiB) ダウンロード数: 61 回
document.parser.class.inc.zip
(28.78 KiB) ダウンロード数: 60 回
phx.parser.class.inc.zip
(8 KiB) ダウンロード数: 62 回
masco
メンバー
メンバー
記事: 105
登録日時: 2014年9月26日(金) 10:43

Re: モディファイアを使用した場合に子テンプレートが使用できない

投稿記事by masco » 2015年4月06日(月) 20:55

yamaさま

ありがとうございます。

問題はすべて解決しました。