Есть массив $terms, содержимое которого выводится в конце каждой ноды - ссылки на элементы таксономии, которые "присвоены" это ноде.
Плохо то, что в нем один элемент, который есть просто набор ссылок, разделенных символом "|". Прикольно, но в моем случае крайне неудобно, т.к. есть необходимость этот список ссылок представить в виде элементов неупорядоченного списка (ul-li). Где копать, подскажите пожалуйста.
p.s. В пхп чайник, но есть небольшие навыки программирования в других языках. Так что можно приводить простые примеры кода.
Спасибо заранее.
Комментарии
Нашел что-то похожее на правду - в файле theme.inc есть функция theme_links, которая возвращает отданный ей массив в виде "те же элементы массива + прилепленный к ним делимитер"...
Щас бы еще разобраться, как "безопасно" заменить это все на список ul-li
Сделал так:
// return implode($delimiter, $links);
return $links;
т.е. function theme_links возвращает не "схлопнутый" массив, а массив ссылок, с которыми можно делать что угодно дальше в теме - что я и сделал, "запихав" их уже в node.tpl в html-список.
Могу и ошибаться, но у
$node
(она доступна в контексте node.tpl.php) есть полеtaxonomy
, которое и содержит искомый массив ссылок на термины.И один совет: не надо без особой необходимости править ядро (
theme.inc
, в частности) - меньше проблем будет как со сторониими модулями (которые пишутся в расчёте на определенное поведение ядра), так и с обновлениями Дрюпала.Если это не то, что Вам надо, пишите - помогу найти другой вариант![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Это именно массив? Т.е. не implode-нутая строка, а массив ссылок, по которому можно "пробежаться" foreach? Тогда все нормально, буду использовать это поле![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Да это я понял, спасибо. Больше уж от безысходности туда залез, "по следам бременских музыкантов", т.к. пока нет четкого понимания, как работает "темизация" друпала. А пхп сам по себе ввергает меня в жестокое уныние...
Спасибо всем за советы![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Не стоит править код в ядре, всё можно сделать снаружи.
Навскидку сделал следующее (тема - bluemarine):
1. в каталоге темы создал файл template.php
2. в этот файл вставил функцию:
<?php
function bluemarine_links($links, $delimiter = ' | ') {
if( $delimiter == 'links' )
return '
';
else
return implode($delimiter, $links);
}
?>
смысл следующий: при стандартном вызове, все ссылки формируются с разделителем "|" иначе, при вызове с параметром-разделителем 'links', должен выводиться список ссылок.
3. смотрю страницу - ничего не изменилось. всё по плану.
4. вставляю в node.tpl.php вместо строки
<?php if ($links) print '
'?>
строку
<?php if ($node->links) print '
'?>
5. вместо списка получаю "read morelinkscomment", то есть проблема в 3-й строке файла template.php: <?php if( $delimiter == 'links' ) ?>, - функция получает в качестве параметра 'links', но сравнение почему-то не проходит...
пробовал использовать двойные кавычки и ф-ю srtcmp для сравнения - нуль. Кто что скажет?
На сколько я понял, человеку надобно было просто вывести термины в том виде, как он хочет:
В этом случае всё проще (см. выше). Вы же описали пример более "хардкорного" кастомайзинга темы![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Я больше хотел показать, что ядро не надо патчить![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
чтобы не сомневаться можно поставить модуль contemplate, он показывает все переменные дступные ноде. то же самле делает модуль devel
Чёрт, глюки:
вместо
theme_links($node->links,'links')
надо писать (в данном случае):
bluemarine_links($node->links,'links')
тогда всё работает.
PS: Понимаю, что не актуально, но считаю нужным поправить.
Будем пробовать, спасибо![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Надыбал Drupal Cheatsheet, там все эти $-переменные расписаны.
Ну и пойду курить заодно мануалы на друпал.орг.
Друпал ведь он как оливки - кто не распробовал, тот плюется. А кто врубился в фишку, тот что-только не может сделать с этими оливками![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
) - самое простое, что можно сделать...
Закусь под водку (читай - движок и контент, без наворотов
Вот что лень делает![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
http://drupal.org/node/44731
Самое то - что дохтур прописал...
Ну и для полноты картины можно вот это глянуть. И вообще там много интересного по теме...
Золотые слова!![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Или так![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Там маленькая ошибка:
вместо
<?php print '
' . implode($delimiter, $links['primary']) . '
'; ?>
надо
<?php print '
'; ?>