私のニュースカテゴリのオーバーライド(完全に機能します)と、次のように私のニュース記事の別の記事のオーバーライドを作成しました
// Category Override
my_template/html/com_content/category/news.php
my_template/html/com_content/category/news_item.php
my_template/html/com_content/category/news_children.php
my_template/html/com_content/category/news_links.php
// Article Override
my_template/html/com_content/article/news.php
私の質問は次のとおりです。「Article Edit Options」または「Article Manager Options」を介してグローバルに各記事に対して手動で実行せずに、上記の記事オーバーライド(news.php)をニュースカテゴリのすべての記事に(自動的に)適用するにはどうすればよいですか。
Joomlaの中でそれを自動的に行うことはできないと思います。
ロードされた記事のカテゴリーIDをチェックし、デフォルトのレイアウトとニュースのレイアウトのどちらをロードするかを決定する新しいレイアウト(デフォルトとしてグローバルに設定)を作成するだけです。
少しハックでハードコードされていますが、動作するはずです。
特定のカテゴリのアイテムのみの記事オーバーライドの場合、
/ your_template/html/com_content/article/default.phpで次のようにできると思います
if ($this->catid==2) {
$this->loadTemplate('news');
} else {
$this->loadTemplate('original');
}
私はこれをテストしませんでしたが、あなたは私が望む画像を取得します。
これに関する少しの更新:Joomla 3.8以降、メニュー項目>記事>ブログでレイアウトを直接選択できます
そのメニュー項目はもちろん公開する必要がありますが、非表示にすることもできます(メニュー項目のオプションでもあります)。そして、選択したカテゴリのすべての記事には、レイアウトが割り当てられます。
涼しい !
すべての記事に添付されている単一のメニュー項目を使用できる場合は、メニュー項目を使用して、新しいテンプレートまたは新しいスタイルを適用します。
私は同様の問題を抱えており、ここで既に述べた1つの回避策を少し変更することで望ましい結果を達成しました。
/ my_template/html/com_content/article /にファイルがありますdefault.php、default_default.phpおよびdefault_altered.php。 default.phpは、他のファイルのどれをロードするかを決定するだけです。 2つの方法でテストしました。
カテゴリIDに基づく:
if ($this->item->catid==19) {
echo $this->loadTemplate('altered');
} else {
echo $this->loadTemplate('default');
}
または、アクティブなメニューアイテムIDに基づく:
$menuid = JFactory::getApplication()->getMenu()->getActive()->id;
if ($menuid==107) {
echo $this->loadTemplate('altered');
} else {
echo $this->loadTemplate('default');
}
それが理想的な解決策であるかどうかはわかりませんが(自分で学習しているだけです)、うまくいきました。 :-)