見出し画像

PowerCMS X のビューにアクセスできない場合の対処方法

PowerCMS X を構築していると、ビューのデータにアクセスできない時があります。500エラーになったり、プレビュー画面が表示されたりする事象です。

原因は該当のビューで使用していたコードに問題があるためと思います。
例えば、モデルのカラムを削除した、モデル自体を削除したなどで、そのタグが使えない状態だったり、そもそも閉じタグがなかったり、IF文の中の不適切な場所に <mt:else>が置かれているなど、原因はさまざまです。

回避方法1

環境変数に「"compile_check" : true」を設定してください。
参考:環境変数の設定方法
これだけでビューにアクセスできるようになったと思います。
管理画面で compile_check を true で設定すると保存後に値が 0 になるかと思いますが、そこは気にしないでください。
下記は試さないで大丈夫です。

回避方法2

※ 作業前に class.Prototype.php をバックアップしておくことをオススメします。

PowerCMS X アプリケーションディレクトリ直下にある class.Prototype.php を開きます。

下記のコードの場所にコメントアウトを入れてください。2箇所あります。

                    $ctx->vars['can_delete'] = $app->can_do( $model, 'delete', $obj );
                    if ( $model === 'template' ) {
                        if ( $app->compile_check ) {
                            $regex = '<\${0,1}' . $ctx->prefix;

                    $ctx->vars['can_delete'] = $app->can_do( $model, 'delete', $obj );
                    if ( $model === 'template' ) {
/*
                        if ( $app->compile_check ) {
                            $regex = '<\${0,1}' . $ctx->prefix;


                                        $ctx->vars['parser_errors'][]
                                            = $app->translate( 'Writing PHP code in views is not allowed.' );
                                    }
                                }
                            }
                        }
                        $ctx->vars['_has_mapping'] = isset( $ctx->vars['_has_mapping'] ) ? $ctx->vars['_has_mapping'] : 1;
                    }
                } else {

                                        $ctx->vars['parser_errors'][]
                                            = $app->translate( 'Writing PHP code in views is not allowed.' );
                                    }
                                }
                            }
                        }
*/
                        $ctx->vars['_has_mapping'] = isset( $ctx->vars['_has_mapping'] ) ? $ctx->vars['_has_mapping'] : 1;
                    }
                } else {

class.Prototype.php を保存して、ビューにアクセスできることを確認します。ビューにアクセスしたら、プレビューボタンをクリックして、期待する結果になっているか確認します。
大丈夫そうなら、コメントアウトした箇所を削除して元に戻します。

この記事が気に入ったらサポートをしてみませんか?