Drupal 7 - Unterdrückt die Ausgabe von Knoten auf Taxonomieseiten

10

Gibt es eine Möglichkeit, die Ausgabe von Knoten auf Taxonomieseiten zu unterdrücken, ohne ein Modul installieren zu müssen (dh nur in template.php)?

Mit einem Taxonomiebegriff gekennzeichnete Knoten werden auf der Seite "Taxonomieindex" angezeigt (z. B. Ihre Website.com/taxonomy/term/[id]).

Neu in Drupal 7 können Taxonomie-Indexseiten Felder enthalten. Wenn Sie jedoch versuchen, die Taxonomieseite mit einer Ansicht zu überschreiben (um beispielsweise zu steuern, wie die Knoten angezeigt werden), werden die Felder auf den Taxonomieindexseiten nicht angezeigt.

Ich habe daher meine Taxonomie-Ansicht als Block auf der Seite Taxonomie-Index platziert. Auf diese Weise kann ich steuern, wie die Knoten angezeigt werden und die Seitenfelder des Taxonomieindex weiterhin angezeigt werden.

Aus diesem Grund gibt die Taxonomieseite immer noch ihre Knoten aus. Ich kann sie ausblenden, indem ich den Teaser der Knoten auf "Ausgeblendet" setze, aber die Knoten werden trotzdem geladen (und daher alle an Knoten angehängten CSS / JQuerys, obwohl die Knoten nicht angezeigt werden). Wie kann ich verhindern, dass die Knoten angezeigt werden, idealerweise innerhalb von template.php?

big_smile
quelle
Warum möchten Sie kein Modul installieren? Einige Dinge sind mit Modulen einfacher zu erreichen.
Martin Schlagnitweit

Antworten:

8

Die Lösung von http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ funktioniert für mich gut:

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']);
   }
}

Hinweis: Sie sollten den Cache Ihrer Site zurücksetzen.

Peter Lozovitskiy
quelle
HINWEIS: Dadurch wird die Knotenliste für alle Taxonomie-Begriffsseiten auf der Site deaktiviert .
Duncanmoo
@Peter Lozovitskiy Ich mache das und habe den Fehler "Hinweis: Verwendung einer undefinierten konstanten 'Taxonomie'" festgestellt!
Shekoufeh
@ Shekoufeh, ich habe den Code korrigiert (durch Kommas ersetzt). Versuchen Sie diesen Code jetzt.
Peter Lozovitskiy
2

Sie müssen die Knoten aus der Variablen $ page entfernen.

In template.php können Sie dies folgendermaßen tun:

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

Verwenden Sie in Ihrer page.tpl.php diesen Code:

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

Dadurch werden die Knoten aus allen Vokabularen und Begriffen entfernt . Wenn Sie sie nur für bestimmte Begriffe oder alle Begriffe aus einem Vokabular entfernen möchten, verwenden Sie arg(2)das tid, um den Begriff zu laden und dann die if-Anweisung zu aktualisieren.

Martin Schlagnitweit
quelle
Es funktioniert, lässt aber den Pager eingeschaltet. Das bedeutet, dass Knoten geladen werden und die Serverressourcen verschwenden. Wie auch immer, danke für den Tipp, ich benutze bereits deine Methode :) Aber theoretisch gibt es noch eine bessere.
int_ua
0

Sie können praktisch alles in template.php tun, aber das wird nicht empfohlen. Bei der Verwendung eines CMS müssen Daten, Verhalten und Erscheinungsbild getrennt werden. Die Datei template.php ist Teil der Themenebene, und Sie sollten sie verwenden, um den visuellen Stil Ihrer Site anzupassen.

Wenn Sie das Verhalten einer Site anpassen möchten (in diesem Fall: Steuern Sie, welche Elemente in einer bestimmten Liste angezeigt werden), müssen Sie das Verhalten ändern, damit Sie Module installieren und konfigurieren. Wenn Sie benutzerdefinierte Inhaltslisten erstellen möchten, ist das Ansichtsmodul genau das, was Sie benötigen.

In Ihrem Fall (wenn ich das richtig verstehe) möchten Sie, dass die Felder des Taxonomiebegriffs über der Liste der mit diesem Begriff gekennzeichneten Knoten angezeigt werden. Sie können dies in Ihrer Ansicht neu erstellen, indem Sie einen Ansichtsblock erstellen, der die Term-ID aus der URL übernimmt und die benötigten Informationen anzeigt.

Marcvangend
quelle
Danke für die Antwort! Ich verwende bereits Ansichten, um die Taxonomieseite zu überschreiben. Ich verwende jedoch die Ansichtsüberschreibung als Block anstelle einer Seite, da die Felder auf der Taxonomieseite sichtbar bleiben müssen. Das einzige Problem ist, dass die Taxonomieseite immer noch die Knoten lädt, was unnötig erscheint.
big_smile
Ich verstehe nicht, was Sie mit "den Feldern auf der Taxonomieseite" meinen, aber das Ausblenden des Seiteninhalts und das Ersetzen durch einen Block klingt nicht nach der richtigen Lösung. Wenn Sie die Taxonomieseite nur mit einer regulären Seitenansicht überschreiben, welche Funktionen fehlen Ihnen genau? (Vielleicht können Sie Ihre ursprüngliche Frage aktualisieren, und ich werde meine Antwort entsprechend verbessern.)
Marcvangend
Antwort ebenfalls aktualisiert.
Marcvangend
Leider scheint Ihre Antwort nicht zu funktionieren. Wenn Sie versuchen, Taxonomiefelder in eine Ansicht zu bringen, wird der Inhalt jedes einzelnen Felds angezeigt (und nicht die, die nur zu der bestimmten Seite gehören, die angezeigt wird).
big_smile
0

Ich habe CSS verwendet, um das Taxonomie-Material auszublenden, aber die Anzeige auf "Benutzerdefiniert" und "Ausblenden" eingestellt, was eine bessere Option zu sein scheint.

Joseph Coco
quelle