Drupal 7 - Supprimer la sortie des nœuds sur les pages de taxonomie

10

Existe-t-il un moyen de supprimer la sortie des nœuds sur les pages de taxonomie, sans avoir à installer un module (c'est-à-dire juste dans template.php)?

Les nœuds étiquetés avec un terme de taxonomie apparaissent sur la "page Index de taxonomie" (par exemple, yoursite.com/taxonomy/term/[id]).

Nouveau dans Drupal 7, les pages d'index de taxonomie peuvent avoir des champs qui leur sont attachés. Cependant, si vous essayez de surfer sur la page de taxonomie avec une vue (par exemple, pour contrôler la façon dont les nœuds sont affichés), les champs des pages d'index de taxonomie n'apparaîtront pas.

J'ai donc placé ma vue taxonomique en tant que bloc sur la page Index de taxonomie. De cette façon, je peux contrôler la façon dont les nœuds apparaissent et avoir toujours les champs de la page Index de taxonomie.

Pour cette raison, la page de taxonomie génère toujours ses nœuds. Je peux les masquer en définissant l'accroche des nœuds sur caché, mais cela charge toujours les nœuds (et donc tout CSS / Jquery attaché aux nœuds même si les nœuds ne sont pas affichés). Comment puis-je empêcher les nœuds d'apparaître, idéalement de l'intérieur de template.php?

grand sourire
la source
Pourquoi ne voulez-vous pas installer un module? Certaines choses sont plus faciles à réaliser avec les modules.
Martin Schlagnitweit

Réponses:

8

La solution de http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ fonctionne bien pour moi:

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

Remarque: vous devez réinitialiser le cache de votre site.

Peter Lozovitskiy
la source
REMARQUE: cela désactivera la liste des nœuds pour toutes les pages de termes de taxonomie du site.
Duncanmoo
@Peter Lozovitskiy Je le fais et face à l'erreur "Remarque: utilisation d'une taxonomie constante indéfinie"!
shekoufeh
@shekoufeh, j'ai corrigé le code (virgules remplacées) essayez ce code maintenant.
Peter Lozovitskiy
2

Vous devez supprimer les nœuds de la variable $ page.

Dans template.php, vous pouvez le faire comme ceci:

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

Dans votre page.tpl.php utilisez ce code:

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

Cela supprime les nœuds de tous les vocabulaires et termes . Si vous souhaitez les supprimer uniquement sur certains termes ou sur tous les termes d'un vocabulaire, utilisez arg(2)le tidpour charger le terme, puis mettez à jour l'instruction if.

Martin Schlagnitweit
la source
Cela fonctionne mais laisse toujours le téléavertisseur allumé. Cela signifie que les nœuds sont chargés et gaspillent les ressources du serveur. Quoi qu'il en soit, merci pour l'astuce, j'utilise déjà votre méthode :) Mais théoriquement, une meilleure existe toujours.
int_ua
0

Vous pouvez faire pratiquement n'importe quoi dans template.php, mais ce n'est pas recommandé. Le but de l'utilisation d'un CMS, c'est que vous séparez les données, le comportement et l'apparence. Le fichier template.php fait partie de la couche thématique, et vous devez l'utiliser pour ajuster le style visuel de votre site.

Si vous souhaitez ajuster le comportement d'un site (dans ce cas: contrôler quels éléments sont affichés dans une certaine liste), vous devez changer le comportement, donc vous installez et configurez des modules. Si vous souhaitez créer des listes de contenu personnalisées, le module Vues est exactement ce dont vous avez besoin.

Dans votre cas (si je comprends bien), vous souhaitez que les champs du terme de taxonomie soient affichés au-dessus de la liste des nœuds marqués avec ce terme. Vous pouvez recréer cela dans votre vue en créant un bloc de vues qui prend le terme ID de l'URL et affiche les informations dont vous avez besoin.

marcvangend
la source
Merci pour la réponse! J'utilise déjà Views pour remplacer la page de taxonomie. Cependant, j'utilise le remplacement de vues comme bloc au lieu d'une page, car je dois garder les champs de la page de taxonomie visibles. Le seul problème est que la page de taxonomie charge toujours les nœuds, ce qui semble inutile.
big_smile
Je ne comprends pas ce que vous entendez par «les champs de la page de taxonomie», mais masquer le contenu de la page et le remplacer par un bloc ne semble pas être la bonne solution. Si vous remplacez simplement la page de taxonomie par une vue de page régulière, quelle fonctionnalité vous manque exactement? (Peut-être que vous pouvez mettre à jour votre question d'origine, et
j'améliorerai
Réponse également mise à jour.
marcvangend
Malheureusement, votre réponse ne semble pas fonctionner. Si vous essayez de mettre des champs de taxonomie dans une vue, il affichera le contenu de chaque champ (et non ceux qui appartiennent uniquement à la page spécifique consultée).
big_smile
0

J'utilisais CSS pour masquer les éléments de taxonomie, mais en définissant leur affichage sur personnalisé et en supprimant cela semble être une meilleure option.

Joseph Coco
la source