Я пишу пользовательский модуль, который должен вставить некоторые файлы JavaScript и CSS только на странице просмотров.
Я использую hook_preprocess_page, но я не могу сказать, является ли текущая страница из вида:
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
}
}
Я знаю, что могу использовать файл шаблона (page-my_view_page_path.tpl.php), но js и дополнительные css должны быть включены, только если мой модуль включен; поэтому мне нравится хранить эти вещи прямо внутри кода моего модуля .
Идеи?
views
7
theming
javascript
Strae
источник
источник
Ответы:
views_get_page_view()
узнает, что, если таковые имеются, просмотр страницы в настоящее время используется. Если он возвращает NULL, то текущая страница не является страницей просмотров.Но использование
drupal_add_js()
иdrupal_add_css()
вhook_preprocess_page()
не будет работать, как ожидалось, потому что переменные$script
и$style
переменные уже были установленыtemplate_preprocess_page()
. Предварительная обработка шаблона Views (см. Ответ Джереми Френча), вероятно, является лучшим местом для добавления вашего CSS и JavaScript.источник
HOOK_preprocess_views_view(&$variables)
или обработчик предварительной обработки шаблона Представлений вместоHOOK_preprocess_page(&$variables)
. Таким образом, вы можете получить представление$variables
и использоватьdrupal_add_js()
иdrupal_add_css()
безопасно.Здесь есть длинная тема о препроцессорах для представлений . Этот комментарий выглядит очень просто для меня.
источник
Если вы находитесь в hook_preprocess_page (), то, по определению, ваше представление имеет отображение страницы и путь к меню, который должен быть уникальным - так что вы можете сделать это:
Если у вас есть аргументы, передаваемые на эту страницу, и вам нужны части
$_GET['q']
, сделайте это вместо этого с помощьюarg()
функции Drupal :http://api.drupal.org/api/drupal/includes--bootstrap.inc/function/arg
источник
Для меня это работает:
источник
Если вы добавляете JS или CSS к определенному обратному вызову, лучше использовать
hook_page_build()
:источник