Pour un aperçu général, vous devriez se renseigner sur la manipulation des variables dans les fonctions de prétraitement .
En ce qui concerne la convention d'appellation, c'est normalement assez simple, mais il y a un problème pour votre exemple actuel (voir ci-dessous) :
La signature d'une fonction de prétraitement doit être
[yourModuleName|yourThemeName]_preprocess_[themeFunctionName](&$variables)
Ainsi, l'implémentation d'un modèle de page dans le fichier template.php d'un thème entraînerait les résultats suivants
themeName_preprocess_page(&$variables)
La plupart du temps, le nom de la fonction du thème sera le nom du fichier *.tpl.php, sans la terminaison .tpl.php et avec des traits de soulignement à la place des traits d'union. Mais il y a un problème si le fichier modèle est sélectionné sur la base de Suggestions de modèles car la fonction de prétraitement ne peut être mise en œuvre que pour le nom de base, et non pour les suggestions supplémentaires ! (Les suggestions de fichiers de modèles alternatifs sont ajoutées dans les fonctions preprocess elles-mêmes).
Votre exemple actuel est l'un de ces cas. content-field-field_transmission_make_model.tpl.php
est une telle suggestion, le nom de base étant content-field.tpl.php
et la fonction thématique correspondante étant content_field
. Il faudrait donc implémenter une fonction de prétraitement nommée yourThemeName_preprocess_content_field(&$variables)
et, dans ce cadre, inspectez les entrées disponibles dans le tableau $variables pour vérifier si vous êtes effectivement appelé pour le champ 'field_transmission_make_model', et non pour un champ CCK complètement différent, par exemple :
function yourThemeName_preprocess_content_field(&$variables) {
// Are we called for the right field?
if ('field_transmission_make_model' == $variables['field_name']) {
// Yes, add/manipulate entries within the variables array
$variables['new_entry'] = 'A useless new variable';
$variables['label'] = 'A useless change of the existing label variable';
}
}
(Note : code non testé, attention aux fautes de frappe)
Après cela, il devrait y avoir une nouvelle variable $new_entry
étant disponible dans votre fichier de modèle, et le contenu de la rubrique $label
devrait avoir changé (toutes les entrées de premier niveau dans le tableau $variables seront transformées en variables distinctes pour le fichier de modèle, nommées après l'index du tableau).
Pour ce qui est de votre deuxième question, l'utilisation de base des fonctions de prétraitement est la même pour tous les fichiers de modèle, mais attention :
- Les fonctions de prétraitement sont uniquement disponibles pour les appels de thèmes qui utilisent des fichiers *.tpl.php, pas pour les fonctions du thème
- Le contenu du tableau $variables varie fortement, en fonction de ce qui est thématisé.
- D'autres modules peuvent également implémenter les fonctions de prétraitement, et elles seront appelées l'une après l'autre, donc si vous voulez modifier quelque chose qui est ajouté par un autre module, vous ne pourrez le faire que si votre implémentation est appelée après celle-ci (ce qui ne posera pas de problème dans votre cas, car les implémentations au sein d'un thème sont appelées après toutes les implémentations au sein des modules - je voulais juste mentionner qu'il peut y avoir plusieurs implémentations à la fois).