Где правильно расположить код добавления сss файла в Drupal 6

Главные вкладки

Аватар пользователя RainBowAM RainBowAM 13 апреля 2010 в 16:29

Добрый день.

При переносе сайта с 5 версии на шестую возникла сложность с пониманием. Раньше можно было воспользоваться hook_menu для определения текущего пути и проведения некоторых действий. Как преобразовать и куда разместить правильно подобный код добавления css файла в зависимости от открываемой пользователем страницы?

<?php
if ((arg(0) == 'admin') && (arg(1) == 'store') && (arg(2) == 'orders')) {
  
drupal_add_css(drupal_get_path('theme''era_z') .'/order.css');
}
?>

Комментарии

Аватар пользователя RainBowAM RainBowAM 13 апреля 2010 в 23:42

Мне нужно добавить css только при посещении страницы /admin/store/orders, а Ваш пример будет добавлять css файл при каждом чихе.

Аватар пользователя olk olk 13 апреля 2010 в 23:57

"RainBowAM" wrote:
Мне нужно добавить css только при посещении страницы /admin/store/orders, а Ваш пример будет добавлять css файл при каждом чихе.

Ну у вас ведь наверняка в хуке меню на этот путь должен быт какой-то колбэк, вот и добавьте css в этой функции,
а вообще с учетом кэширования и возможности «слияния» css, не вижу ничего страшного в добавлении css в хуке init ...

Аватар пользователя xxandeadxx xxandeadxx 14 апреля 2010 в 0:52

пример не мой, что мешает вам воспользоваться копипастом и вставить в хук свой же код?

"RainBowAM" wrote:
if ((arg(0) == 'admin') && (arg(1) == 'store') && (arg(2) == 'orders')) {
drupal_add_css(drupal_get_path('theme', 'era_z') .'/order.css');
}

Аватар пользователя RainBowAM RainBowAM 14 апреля 2010 в 18:00

В том то и дело что моего колбэка на этот адрес нет. В пятёрке можно было в hook_menu анализировать входящие параметры и делать свои действия не связанные непосредственно с ренедрингом страницы. Как например в приведённом примере. А в шестёрке подобные действия в этом хуке полностью теряют смысл...
Так что вопрос открыт. Как же всё таки поместить свой css файл при посещении только определённой страницы?

Аватар пользователя xxandeadxx xxandeadxx 14 апреля 2010 в 23:48

вы прикалываетесь чтоли) зачем вам колбэк

Quote:
hook_init() — Этот хук исполняется в начале запроса страницы. Обычно он используется для установки глобальных параметров, которые понадобятся позднее. Вызов этого хука происходит после загрузки всех модулей.

Например, здесь можно подгружать CSS и JS файлы, которые должны отображаться на каждой странице. Хотя этот хук и не выполняется на закешированных страницах, добавленные ранее CSS или JS файлы все-равно будут присутствовать на страницах (они закешировались в первый раз).

http://api.drupal.ru/api/function/hook_init/6

<?php
function имя_модуля_init()
{
  if ((
arg(0) == 'admin') && (arg(1) == 'store') && (arg(2) == 'orders')) {
    
drupal_add_css(drupal_get_path('theme''era_z') .'/order.css');
  }
}
?>