質問: 特定のメニュー項目のコンポーネントビューをオーバーライドする 特定のメニュー項目のコンポーネントビューをオーバーライドするにはどうすればよいですか?グローバル上書きの場合、template/html/com_xxx/。 しかし、特定のメニュー項目に対してのみどうすればよいですか?例:joomla!記事のブログビューがあります。 特定のメニューアイテムのこのビューのマークアップを変更し、同じブログビューにリンクしている他のメニューアイテムのデフォルトのマークアップを保持するにはどうすればよいですか?
回答: 方法1:cssクラスを使用して、説明したとおりに機能させる。 クラスをメニュー項目に追加します(ページ表示タブで、[ページクラス]フィールドに書き込みます)。例:「スペシャルページ」(ページクラスの前のスペースに注意してください。スペースがないと、コンポーネントのレンダリング出力に追加されます)。複数の状況で使用できるクラスを使用することをお勧めします。 オーバーライドでは、「フィルター」をスクリプト化する必要があります。 if(strpos($this->pageclass_sfx, ' special-page') !== false) { $templatea = true; } if($templatea){ (put your customized override here) } 方法2:ビューにテンプレートオーバーライドを使用してください! オーバーライド用のhtmlフォルダーで、目的のビュー(例:アーティクルビュー)を複製し、名前を変更して、パラメーターを含む.xmlファイルを作成する必要があります(コンポーネントのビューからコピーし、.xmlオーバーライドされたビューと同じ名前です!)。 例:記事のオーバーライドビューを作成し、それを「特別」と呼びましょう。default.phpをテンプレートのhtmlフォルダーにコピーする必要があります(次のフォルダー構造に入れます:com_content/article/名前をspecial.php)に変更します。オーバーライドと同じフォルダーに.xml(必要に応じてコピーし、さらには変更する必要がある)を忘れずに、名前をspecial.xmlに変更します。 オーバーライドされたコード/スタイルなどでビューを更新します。 次に、メニュー項目に移動し、新しいメニュータイプに変更します(記事の下でspecialを選択)、テストします!