すべてのJoomlaユーザーが遭遇した典型的なシナリオは次のとおりです:記事リストページにモジュール(カテゴリブログなど)がありますが、このモジュールを記事にも表示したくない場合コンテンツページ。ただし、記事ページはブログページのitemidを継承するため、モジュールもそのページに表示されます。 Joomlaのドキュメントによると、これを回避するために各記事に非表示のメニュー項目を作成することができますが、私は実際にはこのアプローチが好きではありません。2つの理由があります。
1)私が何百もの記事を持っている場合、それは苦痛な苦労です。 2)パンくずリストはhomepage>article
の代わりに homepage>category>article
これは1.5以降のJoomlaユーザーを悩ませてきたと思います。joomla3.8.2がリリースされたので、この問題を解決するためのより良いアプローチはありましたか? 「どこでもモジュール」は知っていますが、この単純な問題を解決するためにサードパーティの拡張機能を利用する必要がありますか?はいの場合は、Wordpressがより一般的です。
Regular LabのAdvanced Module Manager を使用してこれを行うことができます。
インストールしてアクティブ化し、モジュールの設定で次のように選択します。
AssigmentsにはJoomla!を使用してください。コンテンツ、ページタイプを含む、選択カテゴリブログ。
これにより、カテゴリブログページにのみモジュールが提供され、個別の記事ビューページには提供されません。
成功!
Joomla 3.8.2は問題の解決策を追加しません。
言及しなかった1つの解決策は、CSSを使用して記事のレイアウトページで不要なモジュールを非表示にすることです。
長所:実装は簡単で、テンプレートがクラス変数をどのように設定するかに応じて、高度に構成可能です。
短所:非表示のモジュールは、joomlaによってビルド/レンダリングされ、DOMに追加される必要があります。ただし、表示/使用されません。ああ。
Joomlaの批判に応えて、ここで丁寧に意見を述べさせてください。
コアに追加するのは簡単なように思えるかもしれませんが、私はそのような機能を必要としなかったので、1.5日以来Joomlaを使用しています。だから、これが本当にあなたが疑っているかもしれないほどの欠けている機能の大きさであるかどうかはわかりません。
その時点で、サードパーティの拡張ソリューションをインストールすることの何が問題になっていますか? JoomlaとWordpressの両方のインストールの場合、両方のCMSシステムのほぼすべてのインスタンスにインストールするサードパーティの拡張機能が複数あります。Wordpress両方のCMSの標準的な運用方法のように見えます(そして、私はDrupalは同じ方法であると想定しています)。
ここ で説明されているように、これはテンプレートレベル(これを行う最もクリーンな方法です)で解決できます。
基本的に、テンプレートのindex.php
ファイルを変更して、現在のビューが記事のビューではないかどうかを確認する条件を含め、その場合はモジュールタグを追加する必要があります。次に条件の例を示します(注:リンクされているブログ投稿の条件は異なりますが、どちらも機能するはずです)。
$option = JFactory::getApplication()->input->getCmd('option');
$view = JFactory::getApplication()->input->getCmd('view');
if ($option == 'com_content' && $view == 'category'){
//add the module tag
}
この方法が最も安定した方法です。