Question

Je voudrais imprimer des termes de taxonomie (de field_tags sur le terrain) dans un bloc sur une page vue noeud (dans un sous-thème Zen).

Alors, ce que je faisais était.

template.php

function michal_preprocess_block(&$vars, $hook) {
 if ( arg(0) == 'node' && is_numeric(arg(1)) ) {
   $node = node_load(arg(1));
   $vars['node'] = $node;
   $vars['node_field_tags'] = $node->field_tags;
   $vars['node_content_field_tags'] = $node->content['field_tags'];
 }
}

Cependant, lorsque je tente d'imprimer en block.tpl.php, aucun de ces termes de taxonomie de 2 variables du champ.

print render($node_content_field_tags);
print render($node_field_tags);

Connaissez-vous une fonction Drupal pour rendre un champ termes de taxonomie?


EDIT 13.01.2011, 00:21

Pour autant que je compris ( cette , cette et que ) le processus du code devrait ressembler plus / moins comme ceci

 $node = node_load(arg(1));
 $node_view($node) // Generates an array for rendering a node, see http://api.drupal.org/api/drupal/modules--node--node.module/function/node_view/7
 $vars['node'] = $node;

puis dans le block.tpl.php:

render($node->content['field_tags']);

Le $ node-> contenu est nul, cependant.

Savez-vous ce que je suis absent?

Était-ce utile?

La solution 4

Je suis venu à travers la solution que je cherchais:

mytheme_preprocess_block () dans template.php *

$node_content = node_view(node_load(arg(1)));
$vars['node_content'] = $node_content;

.

block.tpl.php

print render($node_content['field_tags']);

Autres conseils

En fait, ce qui peut être plus facile est le code suivant dans votre prétraiter:

if ($node = menu_get_object()) {
  $vars['node_field_tags'] = field_view_field('node', $node, 'field_tags', 'full');
}

Et puis utilisez ce qui suit dans votre modèle:

print render($node_field_tags);

Tout d'abord, vous devez vérifier que la fonction de pré-traitement est en cours d'exécution et que le cache ne joue pas avec vous. Ensuite, vous pouvez essayer d'inspecter les variables. Je ne pense pas que vous pouvez utiliser render() sur la $node->field_tags et je ne suis pas trop sûr $node->content['field_tags'] soit.

les variables Inspecter vous aidera à comprendre, devel fonctionne bien pour Drupal 7 et peut vous aider.

Vous pouvez vérifier aussi le CCK module de blocs . Il crée un bloc de barre latérale qui affiche à côté de chaque nœud (si elle a un contenu), et ajoute que le bloc à la liste de rendre les destinations pour chaque champ, tout comme Taquin »et « complète » et « rss ».

Il ne peut pas avoir tout le contrôle que vous cherchez, mais il pourrait être un bon endroit pour commencer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top