Нужно вывести в node.tpl.php термины определенного словаря через запятую с ссылками на соответстующие терминыю
Но я знаю только вывод терминов через пробел с помощью $terms а вот как с помощью этой же функции вывести их через запятую так и не смог найти ни на этом сайте не через google.
Спасибо.
Комментарии
content: ", ";
}
Знакомые верстальщики шутили что так все что угодно в контент засунуть можно, и работа программиста нафиг никому нужна не будет.
Вам нужно работать с таким понятием как preprocess. Кстати в этой книжке "Pro Drupal Development, 6" об этом написано здорово. Если Вам станет понятно что такое препроцесс, Вам не составит особого труда формировать какие-либо выводы каких-либо данных в тплках. Приятная перспектива, правда?
Способ который я Вам сейчас предложила может показаться Вам намного сложнее и зануднее того "простого и действенного" способа который был предложен выше. Но эта правильная и расово верная реализация, а то что предложено выше это г-ммммм неправильно.
ну не всё что угодно, а только тест
"программист" который только и занимается расстановкой запятых действительно никому не нужен. а ещё никому не нужен "программист" который вместо решения секундной задачи читает книги в духе "Pro Drupal Development, 6"
что собственно неправильного?
что-то я способа не увидел, увидел только кучу текста не по делу
Потроллим немного? Вы по-моему обиделись что я назвала Ваш способ "г-ммммм неправильным". Не обижайтесь, так как во-первых в моих словах ничего обидного нет, а во-вторых в на просторах интернета обижаться на что-либо не есть расово-верным.
Так теперь по делу:
1. Цсс предназначено для оформления внешнего вида документа, а не структуры или содержимого документа. А что Ваш код делает?
2. Если завтра топикастеру понадобится картинку между терминами таксономии поставить, небольшой облом получится.
3. По поводу «"программист" который только и занимается расстановкой запятых действительно никому не нужен. а ещё никому не нужен "программист" который вместо решения секундной задачи читает книги в духе "Pro Drupal Development, 6".»
Вы книжку явно не читали, так что же Вам известно о ней? А если читали и советуете свой код в качестве решения проблемы топикастера, то советую перечитать Вам ее снова, так как Вы явно не понимаете процессов, которые происходят в Друпале когда он формирует страницу.
4. «что собственно неправильного?»
Изложено выше
5. что-то я способа не увидел, увидел только кучу текста не по делу
Просто вы смысла в тексте не увидели, так у Вас случилась "Обидка на меня" о чем уже писалось выше. То что привели вы, да рабочий код, но это говнокод, простите за выражение. Концепция Вашего кода это "Но оно же работает" и "Я не читаю теории по Друпалу". У меня был опыт доработок некачественного кода, когда меняешь что-то в одно месте и все сразу сыпется. И сама конечно же писала такой код и сама потом себя пинала за него. Так что лучше сразу делать все правильно и по стандартам.
увы нет
что это значит?
оформляет внешний вид списка
если бы да кабы
облом получится только у "программистов" читающих "Pro Drupal Development, 6", остальные воспользуются css — .класс_термина { background:url(...); }
вы удивитесь но читал, и не раз рекомендовал её начинающим друпалерам на страницах этого форума
советую вам не давать мне глупых советов
это вы из трёх строчек моего css кода поняли? браво
не заметил
сомнительно что вы вообще под друпал что-то разрабатывали
пруфлинк можно? на решение данной конкретной задачи правильно, по стандартам и "расово-верно"
поскольку между споров нормального решения не увидил, буду оформлять через css с помощью after
Почему я считаю что after не нормальное решение, потомучто в данный момент я учусь друпалу, и хотелось бы сделать это средствами друпала.
Также это не решает проблемму вывода терминов определенного словаря в node.tpl.php
Если уж пошли споры такие непонятные в большинстве для меня, то, пожалуйста, выложите ссылки на темы, с какможно более подробным описанием способа для новичка, ведь название способа мне тут ниочем не говорит.
если уж так хочется в шаблоне писать код - то taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid') - это если термы из одного определенного словаря, а если все то taxonomy_node_get_terms($node, $key = 'tid') в помощь, на выходе получаем массив термов
а как их записать через запятую?
foreach вестимо
вывел так:
$vid=6;
print_r(taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid')); ?>
получилась такая кака:
terms Array ( [38] => stdClass Object ( [tid] => 38 [vid] => 6 [name] => Design [description] => [weight] => 2 ) [40] => stdClass Object ( [tid] => 40 [vid] => 6 [name] => Illustration [description] => [weight] => 4 ) )
а мне нужно чтобы было Design, Illustration, причем design и illustration чтобы ссылками были на термины соответствующие(((
Вобщем моя проблемма в том что не знаю php, подскажите в сети толковое руководство для относительно быстрого изучения его азов, ведь для кодинга такого не нужно весь php знать, я так понимаю.
Автор, я в тебя верю, чуть чуть измени:
foreach($terms as $term) {
print $term;
if ( $i < $count-1 ) { print ", "; } $i++;
}
видимо я не туда этот код вставляю, заменял свой print и пробовал его отдельно вставлять, ничего не выдает, если можно напишите готовый снипет с <?php ?> чтобы я не мучался а просто скопировал, vid словаря моего 6
думаю дальше разжевывать - ЖЕСТОКО
может для начала стоит php выучить?)
Вобщем моя проблемма в том что не знаю php, подскажите в сети толковое руководство для относительно быстрого изучения его азов, ведь для кодинга такого не нужно весь php знать, я так понимаю.
при записи
$count = count($terms);
foreach($terms as $term) {
print $term;
if ( $i < $count-1 ) { print ", "; } $i++;
}
?>
выдает сообщение
warning: Invalid argument supplied for foreach()
сделал как описано тут http://www.kobashicomputing.com/creating-a-comma-delimited-taxonomy-list... все работает ))
Елки-палки с препроцессами написано и ЕЩЕ и работает. Это как бы намекает...
объясните, пожалуйста, без елок-палок чем плохи препроцессы?
Препроцессы прекрасны! Не пугайтесь решение правильное.
Спасибо, надеюсь последний комментарий написан без иронии )
Уже второй топик на моей памяти, где схлестнулись за два решения: через PHP и CSS.
И мне совершенно не понятно, чем плох способ с CSS? Каковы аргументы? Если бы кто-то сказал "не работает в ИЕ6,7", то это понятно, это аргумент и его надо иметь ввиду, но "не друпал-way" - мне непонятно. Что значит "не drupal-way"? В друпале не используется CSS? В темах для оформления буллитов тэгов LI используют PHP? Может надо вообще на inline-css, вставляемое в препроцессе, перейти?
Моё мнение: оба способа хороши и оба нужно знать, применяя по необходимости.
Просто я считаю что "," это составная контента. Цсс по сути своей служит для оформления вида контента, а не состава контента. В темах для оформления списка используется хтмл, но не цсс же. Мне кажется что схема такая: в препроцессах формируется контент, потом контент заключается в структуру, потом цсс. Или может быть "," относится к оформлению вида контента, а не к самому контенту?
Для оформления используется всё же CSS (например «list-style-type: circle» или «list-style-image: url('…')»), а для формирования, да: PHP → HTML.
В данном случае, имхо, запятая — это оформление списка, а не контент, т.к. список терминов не является связным текстом, это просто набор ссылок.
Если уж быть перфекционистами, то запятая — и контент и оформление. Как аналог — висячая пунктуация, которая является частью контента, но которую, с помощью CSS/JS, надо выносить за границу текста.
Дансамара, ты в чятике когда буш?
Мое сообщение вроде по теме. Решил сделать просто вывод в блок терминов из словаря через запятую через views. Через php не хочется не потому что не знаю, а потому что решил потыкать views.
Нашел конкретный режим, все галки поставил, все равно термины отображаются через строку и запятых никаких нет. Тема стандартная Garland, drupal 6.17, views последние.
Помогите, пожалуйста. Заранее спасибо.
Сделай не «Taxonomy: Term», а «Taxonomy: All terms». И там задай фильтр по словарю.
Соскучилсо? )))
Не получилось. Через запятую идут термины, которые привязаны к одной ноде. К другим нодам - новые строки.
У тебя view выводящий термины? Можно попробовать модулем [module=semanticviews] попытаться вывести как надо, задавая обёртки для строк в виде span, но не знаю можно ли там запятые проставить между строками.
По любому, думается мне, надо будет руки марать CSS, препроцессом или шаблонами
Да, + небольшой тест перед и после.
Если только так, то я уже сделал через шаблоны (.tpl.php в теме) и views. Я думал, что можно только через views сделать. Спасибо!
Я воспользовался решением здесь
Вот в field--THIS_FIELD.tpl.php добавил
<?php
$count = count($items);
$i=0;
foreach ($items as $delta => $item) :
if ($i<$count-1){
print render($item).", ";
$i++;
} else {
print render($item);
}
endforeach; ?>
Аж кошки скребут за условие в каждой итерации...
Как можно сделать более нормально?
--
Эти поля кешируются?
<?php
$render_items = array();
foreach ($items as $delta => $item){
$render_items[] = render($item);
}
print implode(', ', $render_items);
?>
Спасибо,
как-то не допер уже готовые сложить... пытался сразу выводить (стадный инстинкт навер по дефолтному способу ).