Drupal 7-分類ページでノードの出力を抑制


10

モジュールをインストールせずに(つまり、template.phpにのみ)、分類ページのノードの出力を抑制する方法はありますか?

分類用語でタグ付けされたノードは、「分類インデックスページ」に表示されます(例:yoursite.com/taxonomy/term/[id])。

Drupal 7の新機能で、分類インデックスページにフィールドを添付できます。ただし、(たとえば、ノードの表示方法を制御するために)ビューを使って分類ページを上書きしようとすると、分類インデックスページのフィールドは表示されません。

したがって、Taxonomy ViewページをTaxonomy Indexページのブロックとして配置しました。このようにして、ノードの表示方法を制御し、分類インデックスページのフィールドを引き続き使用できます。

このため、分類ページはまだノードを出力しています。ノードのティーザーを非表示に設定することで非表示にできますが、それでもノードがロードされます(したがって、ノードが表示されていなくても、ノードに接続されているCSS / Jqueryはすべて読み込まれます)。ノードが表示されないようにするには、理想的にはtemplate.php内からノードを抑制できますか?


モジュールをインストールしたくないのはなぜですか?モジュールを使用すると、いくつかのことが簡単に実現できます。
Martin Schlagnitweit 2012年

回答:



8

http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/の解決策は私にとってうまくいきます:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

注:サイトのキャッシュをリセットする必要があります。


注:これはのためにリストノードが無効になります任意のサイト上の分類用語のページを。
Duncanmoo 2013年

@Peter Lozovitskiy私はこれを行い、「通知:未定義の定数「分類法」の使用」エラーに直面しました!
shekoufeh

@shekoufeh、私はコードを修正しました(置き換えられたコンマ)今すぐこのコードを試してください。
Peter Lozovitskiy 2015年

2

$ page変数からノードを削除する必要があります。

template.phpあなたはこのようにそれを行うことができます。

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

あなたのpage.tpl.phpでこのコードを使用してください:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

これにより、すべての語彙と用語からノードが削除されます。特定の用語のみまたはすべての用語についてそれらを削除したい場合は、用語をロードしarg(2)tidからifステートメントを更新するを含む語彙の使用から。


動作しますが、ページャーはオンのままです。つまり、ノードが読み込まれ、サーバーのリソースを浪費しています。とにかく、先端のおかげで、私はすでにあなたの方法を使用しています:)しかし、理論的にはより良いものがまだ存在しています。
int_ua

0

template.phpでは実質的に何でもできますが、それはお勧めできません。CMSを使用するポイントは、データ、動作、および外観を分離することです。template.phpファイルはテーマレイヤーの一部であり、サイトの視覚スタイルを調整するために使用する必要があります。

サイトの動作を調整する場合(この場合は、特定のリストに表示される項目を制御します)、動作を変更する必要があるため、モジュールをインストールして構成します。コンテンツのカスタムリストを作成する場合は、Viewsモジュールがまさに必要です。

あなたの場合(私が正しく理解している場合)、分類用語のフィールドがその用語でタグ付けされたノードのリストの上に表示されるようにする必要があります。URLから用語IDを取得し、必要な情報を表示するビューブロックを作成することにより、ビューでそれを再作成できます。


返信いただきありがとうございます!分類法ページをオーバーライドするためにすでにビューを使用しています。ただし、分類ページのフィールドを表示したままにする必要があるため、ページの代わりにViews Overrideブロックを使用しています。唯一の問題は、分類ページがまだノードをロードしていることです。これは不要なようです。
big_smile

「分類ページのフィールド」の意味がわかりませんが、ページのコンテンツを非表示にしてブロックに置き換えるのは、正しい解決策のようには思えません。分類ページを通常のページビューでオーバーライドするだけの場合、どの機能が欠けていますか?(多分あなたはあなたの元の質問を更新することができます、そして私はそれに応じて私の答えを改善します。)
marcvangend '18 / 06/19

回答も更新されました。
marcvangend 2011年

残念ながら、あなたの答えはうまくいかないようです。分類フィールドをビューに表示しようとすると、すべてのフィールドのコンテンツが表示されます(表示されている特定のページに属しているフィールドではありません)。
big_smile

0

CSSを使用して分類法を非表示にしていましたが、表示をカスタムに設定し、より良いオプションのように非表示にしています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.