特定のメニュー項目のコンポーネントビューをオーバーライドするにはどうすればよいですか?
グローバル上書きの場合、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
を選択)、テストします!一般的なソリューション:
メニュー項目ごとに、リンクされたページに適用するテンプレートを選択できるため、テンプレートを複製し、複製したテンプレートにビューのオーバーライドを作成できます。
その後、メニュー項目パラメーターで複製されたテンプレートを選択できます。オーバーライドは、そのメニュー項目に対してのみ有効です。
K2付き:
たとえば、K2を使用できます。これを使用すると、異なる名前で複数のビューオーバーライドを作成できます。
オーバーライドは次のようになります。
template_name/html/com_k2/override_1
/override_2
/...
次に、メニューパラメータでK2アイテムを選択するときに、その特定のページに適用するオーバーライドを選択できます。これにより、複数のテンプレートを作成する必要がなくなります。