-
投稿者投稿
-
2019年2月22日 2:47 PM #10927
【お使いの Snow Monkey のバージョン】v5.1.2
【お使いのブラウザ】Safari例えばなんですが、プラグイン側で
Helper::get_template_part( 'templates/layout/wrapper/one-column-full' );
とすると、
Fatal error: Uncaught Error: Call to a member function view() on null in /app/public/wp-content/themes/snow-monkey/templates/layout/wrapper/one-column-full.php:35
等となるようで、上書きが出来ない場合が存在してしまうようです。
Helper::get_template_partで呼び出された場合だと、テーマ側のテンプレートに定義されている$_view_controllerはそのままではプラグイン側から呼び出された場合にnullになる(?)ようです。
ほとんどのテンプレートはgetViewを事前に使い、requireするなどで対応可能なので問題ないのですが、
追加されたView::getView()などを使えば、この場合でもテーマ側でエラーを対策できるのでは?と思いました。
どうでしょうか?♥ 0いいねをした人: 居ません2019年2月26日 10:10 AM #11076明確に提示しているわけではないのですが、一応 Snow Monkye の各テンプレートファイルは
- レイアウトファイル (templates/layout)
- ビューファイル (templates/view)
- それ以外のテンプレート (いわゆるテンプレートパーツ、基本的には template-parts の中)
と分類されています。そして、
Helper::get_template_part
やget_template_part()
で呼び出すのはテンプレートパーツを想定しています。なのでレイアウトファイルやビューファイルをそれらの関数で呼び出したときにエラーになるのはあえて特に対策をしていません。ご提案のとおり、なんとかやればなんとかなるのかもしれませんが、それで複雑になるとメンテも難しくなっていくので、そうなっているほうがなんとなく便利くらいであれば、現状のままのほうが良いかと思います。
♥ 0いいねをした人: 居ません2019年2月26日 6:43 PM #11116Helper::get_template_part や get_template_part() で呼び出すのはテンプレートパーツを想定
その想定通りに使用していませんでした。ViewやLayoutを変更するのが想定外という認識で考えた場合は、現状のままで問題ないと思います。
通常の場合は、ほとんど書き換えることは無いと思いますが、レイアウトやビューを変更する場合は
子テーマで行うと言う形でしょうか?♥ 0いいねをした人: 居ません2019年2月27日 9:35 AM #11135「レイアウトやビューを変更」が何を指すのかにもよりますが、子テーマでの上書きように、プラグインでの上書きはできるかもしれません。
ちょっと立て込んでいまして実際に試せてはいないのですが、
Helper::get_template_part( 'templates/layout/wrapper/one-column-full' );
のようにユーザーが直接
Helper::get_template_part()
で呼び出すことを想定していないだけで、内部的にはレイアウトファイルもビューファイルもHelper::get_template_part()
で呼び出されるので、snow_monkey_template_part_root
フックでルートをプラグインに変更すれば、プラグイン内でも「上書き」はできるのじゃないかなぁと。試せてはいないので動かなかったらすみません…。差し替えについては
snow_monkey_layout
、snow_monkey_view
フックでできます(ただしこれも子テーマ内での差し替えを想定しているので、プラグインで差し替えたければsnow_monkey_template_part_root
でルートを変更する必要があります)。♥ 0いいねをした人: 居ません2019年2月27日 12:17 PM #11138ご返信有難うございます。
差し替えについては snow_monkey_layout 、 snow_monkey_view フックでできます
そのフックを含めて、もう少しシステム面で使い道などまだ色々と考えているところです。上手くまとまりましたら、共有するようにします。
仕様の想定やその他の部分で理解も深まり、トピックの題についての理解としても
解決致しましたので、トピックを閉じさせていただきます。
ありがとうございました。♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「member変数を使うtemplateの上書きについて」には新しい返信をつけることはできません。