Замена бэкграунда страницы в зависимости от термина таксономии

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

Аватар пользователя RomBlack RomBlack 8 марта 2011 в 13:27

Нужно сделать чтобы был разный бэкграуд и лого для разных типов материалов (относящихся к разным терминам таксономии).

какими способами это можно реализовать?

я попробывал сделать так:
в page.tpl.php добавил проверку

<?php       
if  ($_SERVER['REQUEST_URI']=='/test/foto' $node->tid==4)
   {
    
$logo 'http://test.ru/test/logo2.png'
    
$dop_styles='http://test.ru/test/css/second.css';
    }
?>

для таксономии попробовал $node->tid==XXX, не работает... как можно получить ID термина стандартными функциями? может я чего недоглядел?

Комментарии

Аватар пользователя RomBlack RomBlack 8 марта 2011 в 14:51

вот...если в node.tpl прописать

<?php foreach($node->taxonomy as $term
{
 if  (
$term->tid==4)
 {echo 
"abc";}
}
 
?>

то на всех нодах данного типа добавится этот текст, но если этот код запихать в page.tpl, работать перестает. я так понимаю, page.tpl не понимает переменную $node, а следовательно и $term.

как заставить его воспринимать код? попробывал написать global $node, но это не изменило сути дела..

Аватар пользователя RomBlack RomBlack 8 марта 2011 в 16:33

у меня есть термин Фотогалерея.
есть 1 - страница термина фотогалерея (там выводится список нод для данного термина) и 2 - ноды которые относятся к термину.
первое я реализовал, т.е. для одной страницы я привязал отдельную css'ку это не проблема, а вот для каждой ноды отсносящихся к данному термину не получается... ну,конечно, можно привязывать это ручками, но хочется автоматизировать данный процесс.

Аватар пользователя DruidUnderground DruidUnderground 8 марта 2011 в 17:37

Модуль «Term Fields» позволит тебе задавать фон для каждого термина через веб (admin/content/taxonomy).

Для страницы term/10
Получить данные поля fon в page.tpl.php
$fon = db_result(db_query("SELECT fon FROM {term_fields_term} WHERE tid = %d", arg(1)));

Для страницы node/48
Получить данные поля fon в node.tpl.php

foreach ($node->taxonomy as $term)
{
$fon = db_result(db_query("SELECT fon FROM {term_fields_term} WHERE tid = %d", $term->tid));
}
Аватар пользователя yustos.com yustos.com 9 марта 2011 в 19:41

В темплейте страницы page.tpl.php извлекаете массив $variables['node']->taxonomy, его ключами будет термины. А дальше не проблема. Но вообще это лучше сделать в hook_preprocess_page, а в темплейт вставить уже готовую переменную