web-dev-qa-db-ja.com

Joomlaはリンクを介してテンプレート代替レイアウトを設定しました、それは可能ですか?

奇妙な動作に遭遇し、カテゴリへのリンクを介して使用するレイアウトを設定することでこれを解決できるかどうかを確認しようとしています。

これが起こったことです

  • カテゴリブログレイアウトのテンプレートオーバーライドがあります
  • メニューから割り当てましたが、問題なく動作します
  • カスタムレイアウトオーバーライドを使用したメニュータイプのカテゴリブログレイアウトには、子カテゴリリンクも表示されます。
  • 子カテゴリの1つをクリックすると、カスタムテンプレートのオーバーライドが親カテゴリとして使用されず、デフォルトでデフォルトのブログレイアウトに戻ります。

だから私はcustom_children.php(blog_children.php)で以下のようなことを試みています

<a href="<?php echo JRoute::_(ContentHelperRoute::getCategoryRoute($child->id).'&layout=customlayout');?>">

しかし、それはうまくいかないようです。

子カテゴリにはメニュー項目がリンクされておらず、カテゴリの数を考えると、それぞれにメニュー項目はありません。

だから質問は:

  1. 子カテゴリはデフォルトでデフォルトのblog.phpに戻ると予想されますか?

  2. リンクを介してレイアウトのオーバーライドを設定することは可能ですか?

私はこれをMAMPでPHP 7.0と最新のjoomla 3.7.5でテストしています

1
edger

与えられた情報は100%正確ではない可能性が高いので、いくつかのことを明らかにして、結論に到達しようとします。

オーバーライドはさまざまな方法で行うことができ、それらを処理するために構成設定の多くの組み合わせが存在する可能性があります。

オーバーライドアプローチ

  1. レイアウトオーバーライド(グローバル):ビューのすべてのアイテム-ビューのtmplファイルをテンプレートのhtmlフォルダー内の対応するフォルダーにコピーするだけです。次に、これらのファイルは、すべてのカテゴリーのデフォルトのファイルの代わりに、無視してロードされます。

  2. Alternative Layouts:上記に似ていますが、今回はtmplファイルの名前を変更し、使用するレイアウトをアイテムレベルで指定する必要があります。

  3. 代替レイアウト/メニュー項目-tmpl xmlファイルもコピーして名前を変更/編集します。これにより、この新しいカスタムメニュー項目でこのレイアウトを選択/割り当てることができます。

あなたの説明から、私はあなたが3番目のオプションに従っていると思うかもしれません...しかし明確にしてください。

この場合、レイアウトは、カスタムメニュー項目で選択したカテゴリに対してのみ使用されます。

&layout=customlayoutを使用してサブカテゴリリンクを「だます」ようにすることは、公正な試みであり、理にかなっています。実際には&layout=template:customlayoutの方が近いですが、これも機能しません。

過去のある時点(1年ほど前)で、これをさらに深く調べて、それがどのように機能するのか、なぜこのように機能しないのかについて結論を出しましたが、今はその理由をはっきりと覚えていません。私の全体的な結論は、あちこちでさまざまなカスタマイズを行ったカスタムMVCを作成する必要があるということでした。しかし、これはずっと前のことだったので、今はいくつかのことが変わったのかもしれません。

しかし、これらのことを念頭に置いて、いずれにせよ、あなたが望むものを達成することはまだ可能であり、それはかなり単純でありえます。全体的な設定によって多少異なりますが、ここでできることは次のとおりです。

上書きオプション

  • 上記の3番目のオプションに従っていると仮定して、overridesフォルダー内のcustomlayout.phpを複製し、customlayoutsubs.phpのような名前に変更します。必要に応じて、そのレイアウトの他のtmplファイルに同様のオーバーライドを作成します。次に、バックエンドで、このレイアウトを使用するカテゴリに移動して編集し、layout optionOptionsタブの下)でこのcustomlayoutsubs.phpを選択します。これで、サブカテゴリはこの新しいレイアウトを使用します。これは、customlayout.php代替メニュー項目と同じです。

  • これがサイトにあるカテゴリブログのセクションのみの場合、代替のメニュー項目は必要ありません。オーバーライド(最初のオプション)を作成し、すべてのカテゴリにそれを使用させるだけです。

  • そのレイアウトを使用するために一部のカテゴリのみが必要な場合-(メニュー項目ではなく)代替レイアウトのみを作成し、そのレイアウトをそれらのカテゴリに割り当てます。


いくつかの最終的な考え。

Joomlaのオーバーライド機能には、実際にいくつかの改善と改善が必要だと思います。たとえば、親カテゴリにレイアウトオーバーライドを割り当て、設定を介してこれをそのサブに継承できるか、または上記の代替メニュー項目のトピックに対するより深いサポートがあればいいでしょう。

メニュー項目レベルにそのような設定を構成するオプションがある場合にも意味があります。

それでも、これらすべてが混乱する可能性があるにもかかわらず、素晴らしいことを達成するためのオプションはまだたくさんあります。

0
FFrewin