Здравствуйте, дорогие друпаллеры.
У меня такой вопрос: есть модуль, его задача выводить изображение статуса около заголовка нод определенного типа везде где они встречаются. код типа:
<?php
function nti_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
if($op == 'view') {
$node->title = nti_take_icon(&$node)." ".$node->title;
}
}
?>
не помогает, так как там стоит check_plain у каждого заголовка. Как прилепить картинку не прибегая к изменению шаблонов?
Я уверена, что кто-нибудь уже с этим сталкивался. Заранее спасибо за помощь
Комментарии
там это где?
Вместе с заголовком не получится. Можно подредактировать темплейт page.tpl.php, чтобы он выводил вашу картинку где-то возле $title. Картинку можно хранить, например, в $node.
да было бы неплохо иконку у заголовка для каждого типа материала...
ну или эмблему сайта или еще чего... для заголовков типов материала
по выбору...
Ну так в чём проблема?
Всегда можно написать.
От вздохов лучше не станет
Программистам конечно всегда можно...
iNFerNo,
программисты могут изменить шаблон для каждого типа материала.
Верстальщики могут воспользоваться:
а.) Pathauto для того, чтобы для каждого типа материала создавать пути
б.) Css Injector для того, чтобы выводить разные кусочки css на разных страницах из п. а)
в.) посмотреть наглядные примеры простой работы css, как задать иконку в качестве фона для того или иного элемента.
Остальные... могут вздыхать
Думаю для топикстартера этот вариант тоже может подойти.
Какой у тебя код в node.tpl.php?
описанный выше способ позволяет вставлять иконки вне зависимости от node.tpl.php
правильнее спросить, какой он у вас.
2paladin.on:
Как сделать сss'ом для списка нодов, чтобы у заголовка стояла иконка, соответсвующая типу ноды? Всё равно придется править node.tpl.php, чтобы он добавлял css-класс в зависимости от типа ноды.
В общем, если автору интересно - давайте нам ваш node.tpl.php - мы его подправим.
2iflamberg
да, для списка нод придется править все node-types.tpl.php
ТС нужно было сформулировать задачу целостно, а не спрашивать почему не работает кусок его решения.
Спасибо большое за ответы ))
paladin.on, в следующий раз сформулирую точно. Я решила не акцентировать внимание на то, что у меня уже написано, а разобраться с тем, что у меня не получается
Видимо другого варианта нет, кроме как править темы(( Я так раньше и делала, это не устроило заказчика.
iflamberg, а как css'ом сделать иконку - я умею, спасибо))
И все таки, уточню: кроме как править темы, вариантов решения поставленной задачи нет?
и уточню задачу: Всем названиям нод создать иконку. Эта иконка должна быть везде, где есть название ноды и находится перед текстом названия ноды. При нажатии на иконку будет появляться AJAX -окошко с меню по изменению состояния ноды.
В общем решила проблему с помощью nti_preprocess_page(&$variables) и phptemplate_preprocess_node
получившийся код, примерно
<?php
function nti_preprocess_page(&$variables) {
if (arg(0) === 'node' && is_numeric(arg(1))) {
$thisnode = node_load($variables['node']->nid);
$image = nti_take_icon($thisnode);
$title = $image . " " .$thisnode->title;
$variables['title'] = $title;
}
}
function
nti_preprocess_node(&$variables) {$thisnode = node_load($variables['nid']);
$image = nti_take_icon($thisnode);
$title = $image . " " .$thisnode->title;
$variables['title'] = $title;
}
?>
и не забыть почистить кэш после изменений
а где графическое изображение иконки которая появляется у заголвока?
nti_take_icon($thisnode); - здесь как раз и возвращается html изображения. В конечном итоге получается, что идет: иконка title. я ответила на вопрос?
сейчас вот встал вопрос, что делать с views'ами..