2010-06-27 4 views
3

J'ai besoin de modifier le contenu du noeud Array avant qu'il ne soit rendu en html. Pour cette raison, je ne peux pas utiliser la variable $ content dans mon modèle de noeud. Je le cherche dans le fichier template.php, mais je ne le trouve pas.

grâce

+0

ps. J'ai essayé d'imprimer $ vars ['content'] dans le fichier template.php, mais il est déjà rendu en html, et non structuré ... – aneuryzm

Répondre

1

AFAIK, vous ne pouvez pas accéder au tableau de contenu du nœud unrendered à partir d'un thème, comme le traitement du thème se produit à la te dans le cycle de traitement (c.-à-d. le tableau de contenu sera déjà rendu tel que vous l'avez observé).

La méthode standard pour accéder et modifier le tableau de contenu du nœud avant il se serait rendu à mettre en œuvre hook_nodeapi() dans un module personnalisé, réagissant à l'opération « vue ». Ceci est invoqué après que le tableau de contenu a été assemblé, mais avant qu'il ne soit rendu, vous permettant de l'ajuster à volonté. Sachez que d'autres modules peuvent également faire cela - si c'est le cas et que vous souhaitez ajuster les valeurs fournies par d'autres modules, l'ordre d'appel des modules devient pertinent et vous devrez peut-être ajuster le poids de vos modules pour assurer ça s'appelle après les autres.

+0

salut, donc j'ai ajouté à un module personnalisé la fonction: fonction hook_nodeapi (& $ noeud, $ op, $ a3 = NULL, $ a4 = NULL) {echo "crochet invoqué"; mourir(); } mais rien ne se passe. J'ai rafraîchi le cache. Merci – aneuryzm

+0

@Patrick: Comme pour toutes les fonctions hook_ *, vous devez le nommer après le module qui l'implémente, donc dans ce cas 'yourModuleName_nodeapi (& $ node, ...)'. –

+0

ouais merci .. je viens de découvrir maintenant! – aneuryzm

0

fonction originale qui génère des variables disponibles au nœud est: http://api.drupal.org/api/function/template_preprocess_node/6

Vous pouvez modifier les variables du modèle en mettant en place votre propre fonction de pré-traitement de nœud à l'intérieur template.php qui exécutera après la fonction originale donc vous permettant d'ajouter vos propres variables:

function phptemplate_preprocess_node(&$vars, $hook) { 
    // Here you can add your custom variable... 
    $vars['myContent'] = "something"; 
} 
+0

salut, merci pour la réponse. Ce que je veux réellement, c'est l'arbre structuré avec le contenu. J'ai remarqué que le contenu est stocké dans $ vars ['content'] comme html. Donc il est déjà rendu là et je ne peux pas accéder aux enfants (champs CCK). – aneuryzm

+0

vous avez des données de noeud brutes dans la variable $ vars ['node']. Pour vérifier ce qui est là, faites juste var_dump ($ vars); à l'intérieur de la fonction de prétraitement et et regardez la source de la page. – bas

+0

Si je remplace le contenu dans $ vars ['node'], est-il également automatiquement remplacé dans le noeud? Je ne comprends pas pourquoi il est redondant, j'ai $ vars ['content'] et $ vars ['node']. – aneuryzm

Questions connexes