2010-01-14 3 views
0

(Note:. Je l'origine posté sur drupal.org avant de se rappeler que je ne me répondre là-bas donc, désolé pour le cross-posting)fonction de pré-traitement pour les types de nœuds CCK

Bonjour, est-il un moyen (intégré ou non) pour ajouter des fonctions de prétraitement pour des types de nœuds cck particuliers? Je cherche à faire un pré-traitement d'un champ dans mon type de nœud cck. Actuellement, je peux soit utiliser theme_preprocess_node puis faire un changement sur le type $ node-> ou utiliser une fonction thématique pour un nom de champ particulier (et toujours faire un switch pour m'assurer que l'utilisation actuelle du champ est dans le type de nœud que je cherche pour). Ce que je veux dire, est d'avoir une fonction comme ça ...

theme_preprocess_mynodetype(&$vars) { 
    // Now I can preprocess a field without testing whether the field is within the target content type 
} 

... mais je ne peux pas savoir si je peux suggérer des fonctions de prétraiter de la même façon que je peux suggérer des fichiers modèle

Merci ! Rob

Répondre

1

Je pense que vous cherchez this post. Il n'y a pas de pré-traitement magique par noeud, uniquement par moteur de thème/modèle, mais vous avez accès au type de noeud dans le paramètre $ vars afin que vous puissiez l'activer ici.

Espérons que ça aide!

+0

Hey merci, j'ai vu une, mais cette fonction utilise le noeud préprocesseur avec un interrupteur, que je tentais d'éviter (un peu) pour arrêter que préprocesseur de grandir à grand. Je suppose que je pourrais utiliser theme_preprocessor_node avec un commutateur qui appelle en réalité theme_preprocessor_cat(), theme_preprocessor_dog(), etc. Mais peut-être n'y a-t-il pas moyen de suggérer des fonctions de pré-traitement? – rob5408

+0

Marquer celui-ci comme accepté parce qu'il n'y a pas de "pré-traitement magique par nœud" que je cherchais, mais la réponse de Nikit donne la solution. – rob5408

3

Voir cette fonction content.module de CCK:

 

/** 
* Theme preprocess function for field.tpl.php. 
* 
* The $variables array contains the following arguments: 
* - $node 
* - $field 
* - $items 
* - $teaser 
* - $page 
* 
* @see field.tpl.php 
* 
* TODO : this should live in theme/theme.inc, but then the preprocessor 
* doesn't get called when the theme overrides the template. Bug in theme layer ? 
*/ 
function content_preprocess_content_field(&$variables) { 
    $element = $variables['element']; 
... 
 
+0

Merci d'avoir cherché ça. Dans cette fonction, CCK configure réellement les suggestions pour les fichiers tpl mais pas les fonctions de pré-traitement (d'après ce que je peux dire), mais cela m'a conduit à creuser plus à travers le content.module. Va poster ce que je trouve. – rob5408

Questions connexes