web-dev-qa-db-ja.com

特定のカテゴリにある記事のリストのテンプレートを自動的に上書きする方法は?

私のニュースカテゴリのオーバーライド(完全に機能します)と、次のように私のニュース記事の別の記事のオーバーライドを作成しました

// 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)をニュースカテゴリのすべての記事に(自動的に)適用するにはどうすればよいですか。

enter image description here

6
Taimur Aziz
  1. コンテンツに移動->カテゴリーマネージャー
  2. カテゴリーを編集する
  3. [オプション]タブに移動します
  4. 「代替レイアウト」オプションでレイアウトを割り当てます。
3
Nagarjun

Joomlaの中でそれを自動的に行うことはできないと思います。

ロードされた記事のカテゴリーIDをチェックし、デフォルトのレイアウトとニュースのレイアウトのどちらをロードするかを決定する新しいレイアウト(デフォルトとしてグローバルに設定)を作成するだけです。

少しハックでハードコードされていますが、動作するはずです。

3
Bakual

特定のカテゴリのアイテムのみの記事オーバーライドの場合、
/ your_template/html/com_content/article/default.phpで次のようにできると思います

if ($this->catid==2) {
    $this->loadTemplate('news');
} else {
    $this->loadTemplate('original');
}

私はこれをテストしませんでしたが、あなたは私が望む画像を取得します。

これに関する少しの更新:Joomla 3.8以降、メニュー項目>記事>ブログでレイアウトを直接選択できます

そのメニュー項目はもちろん公開する必要がありますが、非表示にすることもできます(メニュー項目のオプションでもあります)。そして、選択したカテゴリのすべての記事には、レイアウトが割り当てられます。

涼しい !

2
Woluweb

すべての記事に添付されている単一のメニュー項目を使用できる場合は、メニュー項目を使用して、新しいテンプレートまたは新しいスタイルを適用します。

1
Arlen

私は同様の問題を抱えており、ここで既に述べた1つの回避策を少し変更することで望ましい結果を達成しました。

/ my_template/html/com_content/article /にファイルがありますdefault.phpdefault_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');
}

それが理想的な解決策であるかどうかはわかりませんが(自分で学習しているだけです)、うまくいきました。 :-)

0
Matej