Drupal 7 preprocess_views ne fonctionne pas
J'ai le code suivant dans mon Drupal 7 template.php
fichier:
function mytheme_preprocess_views_view__videos__videos(&$vars) {
drupal_add_css(drupal_get_path('theme', 'mytheme') . "/css/qwembed-jquery-1.0.css");
drupal_add_js(drupal_get_path('theme', 'mytheme').'/js/jquery.swfobject.1-1-1.min.js', array('type' => 'file', 'scope' => 'footer'));
drupal_add_js(drupal_get_path('theme', 'mytheme').'/js/qwembed-jquery-1.0.js', array('type' => 'file', 'scope' => 'footer'));
}
J'ai besoin de charger ces css et le fichier js que lorsque ce point de vue est affiché.
l'affichage de la vue nom est: Videos
la vue Nom de la Machine est: videos
et le remplacement des fichiers sont:
views-view--videos--videos.tpl.php
views-view-unformatted--videos--videos.tpl.php
views-view-fields--videos--videos.tpl.php
des idées pourquoi cela ne fonctionne pas?
- Est le double
__videos__videos
juste une faute de frappe? Si les points de vue nom est "vidéos", je m'attends à[yourThemeName]_preprocess_views_view__videos(&$vars)
. - J'ai assumé que c'était parce que la disply était le nom de vidéos et dans ce cas le nom de la machine était de vidéos. Le modèle fichiers répertoriés ci-dessus fonctionne parfaitement et ils sont des vidéos, des vidéos. Je vais essayer d'enlever un, de toute façon, juste au cas où. Merci
- Tenez-vous bien, je pense que j'ai été trompé par quelque chose, donc je suppose qu'il ne va pas travailler avec un seul '__vidéos ainsi. Va revérifier et ajouter une réponse.
Vous devez vous connecter pour publier un commentaire.
Le problème est probable que vous essayez de mettre en œuvre un prétraitement de la fonction basée sur le même modèle de nommage utilisée pour le modèle de substitutions. Mais prétraiter les fonctions sont un peu différent, du fait que par défaut, ils ne peuvent être mis en œuvre, basé sur le nom de la "base" de modèle, et n'ont pas le même mécanisme de "spécifique" des versions basées sur le modèle des suggestions. Voir mon réponse à une question plus générique pour plus de détails.
De sorte que vous auriez besoin de revenir à la mise en œuvre de la "base" prétraitement de la fonction et vérifier si elle est appelée pour la vue souhaitée (et éventuellement de les afficher) dans cette fonction, à peu près ainsi:
Vous pourrait également ajouter le comportement attendu par la mise en œuvre d'un générique de préparer une fonction qui tente d'appeler des versions spécifiques à la vérification pour les fonctions avec le nom propre, voir la fin de cet article pour un exemple - mais cela introduit une tout à fait certaine surcharge de traitement et n'a de sens, si vous avez besoin de prétraiter les fonctions pour de nombreux points de vue.
Il y a plus de "base" prétraiter les fonctions par type de vue que vous pouvez appliquer directement - voir la liste des
template_preprocess_views_view_*
en vues/thème/thème.inc " pour les options disponibles.Comme une base de règle, chaque fois qu'il y a un
template_preprocess_*
fonction d'un modèle, vous pouvez mettre un correspondantyourThemeOrModuleName_preprocess_*
fonction. Si vous avez besoin de manipuler pour les modèles basés sur le nom du modèle de suggestions, vous avez besoin de trouver la "base" prétraiter le nom de la fonction, mettre en œuvre et vérifier pour votre cas spécifique de cette fonction (comme pour le point de vue spécifique, comme dans l'exemple ci-dessus).