Im écrit un module personnalisé qui doit insérer des fichiers javascript et css uniquement dans une page Vues.
J'utilise hook_preprocess_page, mais je ne peux pas dire si la page actuelle provient d'une vue:
function mymodule_preprocess_page(&vars)
{
var_dump($vars); //output: nothings that reference the views!
if([view page])
{
drupal_add_js([...]);
drupal_add_css([...]);
// Rebuild scripts
$scripts = drupal_get_js();
$vars['scripts'] = $scripts;
// Same for css
}
}
Je sais que je pourrais utiliser un fichier de modèle (page-my_view_page_path.tpl.php), mais le js et le CSS supplémentaire ne doivent être inclus que si mon module est activé; donc j'aime garder ces choses directement dans le code de mon module .
Des idées?
views
7
theming
javascript
Strae
la source
la source
Réponses:
views_get_page_view()
découvre, le cas échéant, la vue de page actuellement utilisée. S'il renvoie NULL, la page en cours n'est pas une page de vues.Mais l'utilisation de
drupal_add_js()
etdrupal_add_css()
danshook_preprocess_page()
ne fonctionnera pas comme prévu car la variable$script
et les$style
variables ont déjà été définies partemplate_preprocess_page()
. Le prétraitement des modèles de vues (voir la réponse de Jeremy French) est probablement un meilleur endroit pour ajouter votre CSS et JavaScript.la source
HOOK_preprocess_views_view(&$variables)
ou un autre crochet de prétraitement de modèle de vues au lieu deHOOK_preprocess_page(&$variables)
. De cette façon , vous pouvez obtenir les vues$variables
et l' utilisationdrupal_add_js()
et endrupal_add_css()
toute sécurité.Il y a un long fil sur les préprocesseurs pour les vues ici. Ce commentaire me semble très simple.
la source
Si vous êtes dans une hook_preprocess_page (), par définition, votre vue a un affichage de page et un chemin de menu, qui doivent être uniques - vous pouvez donc le faire:
Si vous avez des arguments passés à cette page, vous avez donc besoin de parties de
$_GET['q']
, alors faites-le à la place avec laarg()
fonction de Drupal :http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg
la source
Pour moi celui-ci fonctionne:
la source
Si vous ajoutez JS ou CSS à un rappel spécifique, il vaut mieux utiliser
hook_page_build()
:la source