Estoy escribiendo un módulo personalizado que necesita insertar algunos archivos javascript y css solo en una página de Vistas.
Estoy usando hook_preprocess_page, pero no puedo decir si la página actual es de una vista:
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
}
}
Sé que podría usar un archivo de plantilla (page-my_view_page_path.tpl.php), pero el js y el css adicional deben incluirse solo si mi módulo está habilitado; así que me gusta mantener estas cosas directamente dentro del código de mi módulo .
Ideas?
views
7
theming
javascript
Strae
fuente
fuente
Respuestas:
views_get_page_view()
descubre qué vista de página, si hay alguna, está actualmente en uso. Si devuelve NULL, la página actual no es una página de visitas.Pero usar
drupal_add_js()
ydrupal_add_css()
en ahook_preprocess_page()
no funcionará como se esperaba porque la variable$script
y las$style
variables ya han sido establecidas portemplate_preprocess_page()
. El preprocesamiento de plantillas de Views (vea la respuesta de Jeremy French) es probablemente un mejor lugar para agregar su CSS y JavaScript.fuente
HOOK_preprocess_views_view(&$variables)
u otro enlace de preproceso de plantilla de Vistas en lugar deHOOK_preprocess_page(&$variables)
. De esta manera usted puede obtener las vistas en$variables
y usodrupal_add_js()
ydrupal_add_css()
de forma segura.Aquí hay un hilo largo en los preprocesadores para las vistas . Este comentario me parece muy simple.
fuente
Si está en un hook_preprocess_page (), entonces, por definición, su vista tiene una visualización de página y una ruta de menú, que debe ser única, por lo que puede hacer esto:
Si tiene argumentos que se pasan a esta página, por lo que necesita partes
$_GET['q']
, haga esto con laarg()
función de Drupal :http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg
fuente
Para mí este funciona:
fuente
Si está agregando JS o CSS a una devolución de llamada específica, mejor usar
hook_page_build()
:fuente