Как добавить id словаря в page.tpl.php

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

Аватар пользователя boneg boneg 25 октября 2010 в 14:33

Здравствуйте, уважаемые друпальщики! С Друпал имею дело совсем недавно, не судите строго если задал глупый вопрос. Есть задача: нужно присваивать HTML-обьекту из page.tpl.php определенный CSS-класс в зависимости от того, к какому словарю принадлежит открытая в данный момент нода. Как мне получить ID словаря открытой ноды в page.tpl.php? Это возможно?

Комментарии

Аватар пользователя monsterofcode monsterofcode 25 октября 2010 в 14:44

попробуйте сделать <?php echo "

";var_dump($node);echo "

"; ?> - там и увидете(удобнее krumo юзать конечно - в модуль devel в папку krumo распоковать модуль krumo(с оф сайта друпала) . После его включения появится блок. В коде писать вроде krumo_add($node) - всё выведится в блоке(незабыть ему регион указать))

Аватар пользователя penexe penexe 25 октября 2010 в 14:49

"boneg" wrote:
к какому словарю принадлежит открытая в данный момент нода. Как мне получить ID словаря открытой ноды в page.tpl.php? Это возможно?

может термину?

function phptemplate_preprocess_page(&$vars) {
  $tid = 8; // id термина
  if (isset($vars['node'])) {
    $node = $vars['node'];
    if (!empty($node->taxonomy)) {
      $term_ids = array_keys($node->taxonomy);
      if (in_array($tid, $term_ids)) {
        $vars['my_super_id'] = 'wow'; // потом в page.tpl можно вывести переменную $my_super_id;
      }
    }
  }
}
Аватар пользователя boneg boneg 25 октября 2010 в 15:50

To penexe
В том то и дело,что именно словарю. Я понимаю, что нужно как-то эту переменную где-то обьявить, но знаний пока просто нехватает (новичек в друпале). Есть какое-нибудь готовое решение, чтоб можно было получить id словаря открытой ноды или NULL, если открытая нода не относится ни к одному из них? Буду благодарен за любую помощь.

Аватар пользователя penexe penexe 25 октября 2010 в 16:39

boneg wrote:
To penexe
В том то и дело,что именно словарю. Я понимаю, что нужно как-то эту переменную где-то обьявить, но знаний пока просто нехватает (новичек в друпале). Есть какое-нибудь готовое решение, чтоб можно было получить id словаря открытой ноды или NULL, если открытая нода не относится ни к одному из них? Буду благодарен за любую помощь.

словари зависят от типа нод, смотришь тип и присваиваешь класс.
то есть в моем коде условие должно быть  if ($node->type == 'page') {}

Аватар пользователя boneg boneg 25 октября 2010 в 16:50

То monsterofcode и penexe :

Огромное спасибо! Нашлось что искал. Всё заработало!

Вот id словаря ноды:

$node->vid

Аватар пользователя penexe penexe 25 октября 2010 в 16:53

boneg wrote:
То monsterofcode и penexe :

Огромное спасибо! Нашлось что искал. Всё заработало!

Вот id словаря ноды:

$node->vid


я вас разочарую, но это номер ревизии ноды, не id словаря

Аватар пользователя penexe penexe 25 октября 2010 в 17:03

boneg wrote:
да.. я уже увидел...

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

Аватар пользователя boneg boneg 25 октября 2010 в 17:09

Каждая нода принадлежит только к одному термину одного из словарей. Нужно присвоить класс в зависимости от словаря,к которому она принадлежит.

Грубо говоря - если пользователь читает любую страницу/заметку в пределах этого словаря - назначается нужный класс.

Аватар пользователя penexe penexe 25 октября 2010 в 17:16

boneg wrote:
Каждая нода принадлежит только к одному термину одного из словарей. Нужно присвоить класс в зависимости от словаря,к которому она принадлежит.

Грубо говоря - если пользователь читает любую страницу/заметку в пределах этого словаря - назначается нужный класс.


у вас что кол-во нод = кол-ву словарей? бред какой-то

Аватар пользователя boneg boneg 25 октября 2010 в 17:28

нет-нет.. Я не это имел ввиду.. 9 словарей, в каждом словаре порядка 10-12 терминов. И около 800 страниц/заметок. Каждая страница/заметка относится к одному термину одного словаря. Других связей нет (так задумана иерархия заказчиком). При этом внешний вид page.tpl.php меняется в зависимости от принадлежности ноды к словарю. Поэтому мне нужно получить id словаря,которому принадлежит нода. Это вся задача.

Аватар пользователя penexe penexe 25 октября 2010 в 17:47

boneg wrote:
нет-нет.. Я не это имел ввиду.. 9 словарей, в каждом словаре порядка 10-12 терминов. И около 800 страниц/заметок. Каждая страница/заметка относится к одному термину одного словаря. Других связей нет (так задумана иерархия заказчиком). При этом внешний вид page.tpl.php меняется в зависимости от принадлежности ноды к словарю. Поэтому мне нужно получить id словаря,которому принадлежит нода. Это вся задача.

function phptemplate_preprocess_page(&$vars) {
  if (isset($vars['node'])) {
    $node = $vars['node'];
    if (!empty($node->taxonomy)) {
      $keys = array_keys($node->taxonomy);
      $vars['vid'] = $node->taxonomy[$keys[0]]->vid; // в page.tpl будет $vid
    }
  }
}