Estou escrevendo um módulo personalizado que precisa inserir alguns arquivos javascript e css apenas em uma página Views.
Estou usando hook_preprocess_page, mas não sei dizer se a página atual é de uma exibição:
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
}
}
Eu sei que eu poderia usar um arquivo de modelo (page-my_view_page_path.tpl.php), mas o js e o css extra devem ser incluídos apenas se meu módulo estiver ativado; então eu gosto de manter essas coisas diretamente dentro do código do meu módulo .
Ideias?
views
7
theming
javascript
Strae
fonte
fonte
Respostas:
views_get_page_view()
descobre qual visualização de página, se houver, está atualmente em uso. Se retornar NULL, a página atual não será uma página de visualizações.Mas usar
drupal_add_js()
edrupal_add_css()
em umhook_preprocess_page()
não funcionará como esperado, porque a variável$script
e as$style
variáveis já foram definidas portemplate_preprocess_page()
. O pré-processamento de modelos do Views (consulte a resposta de Jeremy French) é provavelmente um lugar melhor para adicionar CSS e JavaScript.fonte
HOOK_preprocess_views_view(&$variables)
um gancho de pré-processo de outro modelo do Views em vez deHOOK_preprocess_page(&$variables)
. Dessa forma, você pode obter as visualizações, o$variables
usodrupal_add_js()
e adrupal_add_css()
segurança.Há um encadeamento longo nos pré - processadores para visualizações aqui. Este comentário parece muito simples para mim.
fonte
Se você estiver em um hook_preprocess_page (), por definição, sua exibição terá uma exibição de página e um caminho de menu, que deve ser exclusivo - para que você possa fazer isso:
Se você tiver argumentos passados para esta página, precisará de partes dele
$_GET['q']
, faça-o com aarg()
função de Drupal :http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg
fonte
Para mim, este funciona:
fonte
Se você estiver adicionando JS ou CSS a um retorno de chamada específico, é melhor usar
hook_page_build()
:fonte