J'ai plusieurs fichiers .tpl.php pour les nœuds, les champs CCK et le thème Vues. Ces fichiers de modèle contiennent beaucoup de logique pour déplacer les choses, supprimer les liens, créer de nouveaux liens, etc. Je comprends que c'est un mauvais développement et non "The Drupal Way").
Si je comprends bien, "The Drupal Way" consiste à utiliser les fonctions de préprocesseur dans votre template.php
fichier pour manipuler les variables et ajouter de nouvelles variables. Quelques questions à ce sujet:
content-field-field_transmission_make_model.tpl
, comment nommer la fonction de préprocesseur?Pour un aperçu général, vous devez lire sur la manipulation des variables dans les fonctions de prétraitement .
Concernant la convention de dénomination, c'est normalement assez simple, mais il y a un hic pour votre exemple actuel (voir ci-dessous):
Une signature de fonctions de prétraitement doit être
[yourModuleName|yourThemeName]_preprocess_[themeFunctionName](&$variables)
donc en implémenter un pour le modèle de page dans un fichier de thèmes template.php entraînerait
themeName_preprocess_page(&$variables)
La plupart du temps, le nom de la fonction de thème sera le nom du fichier * .tpl.php, sans la fin du .tpl.php et avec des traits de soulignement au lieu des tirets. Mais il y a un hic si le fichier de modèle est sélectionné sur la base de suggestions de modèle , car la fonction de prétraitement ne peut être mis en œuvre pour le nom de base, pas pour les suggestions supplémentaires! (Les suggestions de fichiers modèles alternatifs sont ajoutées dans les fonctions de prétraitement elles-mêmes.)
Votre exemple actuel est l'un de ces cas, car content-field-field_transmission_make_model.tpl.php
Est une telle suggestion, avec le nom de base étant content-field.tpl.php
Et la fonction de thème correspondante étant content_field
. Vous devez donc implémenter une fonction de prétraitement nommée yourThemeName_preprocess_content_field(&$variables)
, et inspecter les entrées disponibles dans le tableau $ variables pour vérifier si vous êtes réellement appelé pour le 'field_transmission_make_model', et non pour un CCK complètement différent. domaine, 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';
}
}
(Remarque: code non testé, méfiez-vous des fautes de frappe)
Après cela, il devrait y avoir une nouvelle variable $new_entry
Disponible dans votre fichier modèle, et le contenu de la variable $label
Devrait avoir changé (toutes les entrées de niveau supérieur dans le tableau $ variables seront tournées dans des variables distinctes pour le fichier modèle, nommées d'après l'index du tableau).
Quant à 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 sachez:
Afin de déterminer le nom de notre fonction de prétraitement, nous devons savoir de quel fichier de modèle ou fonction de thème provient une sortie, et un excellent moyen de le faire est d'utiliser le - développeur de thème module .
Voici une vidéo qui l'explique en détail - http://buildamodule.com/video/drupal-theming-essentials-template-files-theme-function-overrides-and-preprocessing-functions-how-to- use-simple-preprocessing-functions