member変数を使うtemplateの上書きについて

0
いいねをした人: 居ません
  • このトピックには4件の返信、2人の参加者があり、最後にHatsukiにより5年、 9ヶ月前に更新されました。
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • 投稿者
    投稿
  • #10927
    Hatsuki
    閲覧者
    6

    【お使いの 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
    いいねをした人: 居ません
    #11076
    アバター画像キタジマ タカシ
    参加者
    2421

    明確に提示しているわけではないのですが、一応 Snow Monkye の各テンプレートファイルは

    • レイアウトファイル (templates/layout)
    • ビューファイル (templates/view)
    • それ以外のテンプレート (いわゆるテンプレートパーツ、基本的には template-parts の中)

    と分類されています。そして、 Helper::get_template_partget_template_part() で呼び出すのはテンプレートパーツを想定しています。なのでレイアウトファイルやビューファイルをそれらの関数で呼び出したときにエラーになるのはあえて特に対策をしていません。

    ご提案のとおり、なんとかやればなんとかなるのかもしれませんが、それで複雑になるとメンテも難しくなっていくので、そうなっているほうがなんとなく便利くらいであれば、現状のままのほうが良いかと思います。

    0
    いいねをした人: 居ません
    #11116
    Hatsuki
    閲覧者
    6

    Helper::get_template_part や get_template_part() で呼び出すのはテンプレートパーツを想定
    その想定通りに使用していませんでした。

    ViewやLayoutを変更するのが想定外という認識で考えた場合は、現状のままで問題ないと思います。

    通常の場合は、ほとんど書き換えることは無いと思いますが、レイアウトやビューを変更する場合は
    子テーマで行うと言う形でしょうか?

    0
    いいねをした人: 居ません
    #11135
    アバター画像キタジマ タカシ
    参加者
    2421

    「レイアウトやビューを変更」が何を指すのかにもよりますが、子テーマでの上書きように、プラグインでの上書きはできるかもしれません。

    ちょっと立て込んでいまして実際に試せてはいないのですが、

    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_layoutsnow_monkey_view フックでできます(ただしこれも子テーマ内での差し替えを想定しているので、プラグインで差し替えたければ snow_monkey_template_part_root でルートを変更する必要があります)。

    0
    いいねをした人: 居ません
    #11138
    Hatsuki
    閲覧者
    6

    ご返信有難うございます。

    差し替えについては snow_monkey_layout 、 snow_monkey_view フックでできます

    そのフックを含めて、もう少しシステム面で使い道などまだ色々と考えているところです。上手くまとまりましたら、共有するようにします。

    仕様の想定やその他の部分で理解も深まり、トピックの題についての理解としても
    解決致しましたので、トピックを閉じさせていただきます。
    ありがとうございました。

    0
    いいねをした人: 居ません
5件の投稿を表示中 - 1 - 5件目 (全5件中)
  • トピック「member変数を使うtemplateの上書きについて」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。