Solución:
Podrías usar el template_preprocess_views_view()
gancho para hacer esto:
function THEME_preprocess_views_view(&$vars) {
$view = &$vars['view'];
// Make sure it's the correct view
if ($view->name == 'your-view-name') {
// add needed javascript
drupal_add_js(drupal_get_path('theme', 'your-theme') . '/your-js.js');
// add needed stylesheet
drupal_add_css(drupal_get_path('theme', 'your-theme') . '/your-css.css');
}
}
Tenga en cuenta que también puede verificar la visualización específica de la vista usando:
if ($view->name == 'your-view-name' && $view->current_display == 'your-display-id') {
// include javascript & css here
}
Debería poder verificar una clase CSS personalizada como esta:
if ($view->name == 'your-view-name' && $view->display[$view->current_display]->display_options['css_class'] == 'your-css-class') {
// include javascript & css here
}
Puede utilizar la función views_get_page_view para averiguar qué vista se muestra en la página. Devuelve el objeto de vistas. Tenga en cuenta que en el fragmento de código a continuación debe compararlo con el nombre legible por máquina de las vistas, pero, por supuesto, puede escribir su propia comparación basándose en el objeto de vista devuelto por views_get_page_view
function YOURTHEMENAME_preprocess_page(&$variables) {
$view = views_get_page_view();
if($view->name == 'YOURVIEW') {
//Do what ever you want
}
En caso de que esto sea útil para cualquier otra persona que se encuentre con esta pregunta, buscando como lo hice yo adjuntar JavaScript a una vista de Drupal. En términos de D7 y Vistas 3.7, lo siguiente funcionó mejor para mí:
function HOOK_views_pre_render ( &$view ) {
/// check to make sure the view has a classname
if ( $view->display_handler && !empty($view->display_handler->options['css_class']) ) {
$cln = $view->display_handler->options['css_class'];
$cls="CLASS GOES HERE";
/// test that the classname contains our class
if ( preg_match('/(^|s+)' . preg_quote($cls) . '(s+|$)/i', $cln) ) {
/// build the path to the js, which is local to my module, js/view.js
$sep = DIRECTORY_SEPARATOR;
$dir = rtrim(drupal_get_path('module', 'HOOK'), $sep);
$pth = "{$dir}{$sep}js{$sep}view.js";
drupal_add_js($pth);
}
}
}
Esto fue beneficioso ya que quería mantener el código dentro de mi módulo, en lugar del tema, porque las mejoras aportadas por JavaScript no tenían nada que ver con la apariencia visual.
NOTA: Obviamente
HOOK
debe reemplazarse con el nombre de su módulo, en ambas ubicaciones, yCLASS GOES HERE
también debe reemplazarse con la clase que está buscando.