[Решено]Термины в ноде выводятся через пробел: как их вывести через запятую?

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

Аватар пользователя Yatsenco Yatsenco 4 августа 2010 в 0:57

Нужно вывести в node.tpl.php термины определенного словаря через запятую с ссылками на соответстующие терминыю
Но я знаю только вывод терминов через пробел с помощью $terms а вот как с помощью этой же функции вывести их через запятую так и не смог найти ни на этом сайте не через google.

Спасибо.

Комментарии

Аватар пользователя annya@drupal.org annya@drupal.org 4 августа 2010 в 1:28

xxandeadxx wrote:

.класс:after {
  content: ", ";
}


Знакомые верстальщики шутили что так все что угодно в контент засунуть можно, и работа программиста нафиг никому нужна не будет.
Вам нужно работать с таким понятием как preprocess. Кстати в этой книжке "Pro Drupal Development, 6" об этом написано здорово. Если Вам станет понятно что такое препроцесс, Вам не составит особого труда формировать какие-либо выводы каких-либо данных в тплках. Приятная перспектива, правда?
Способ который я Вам сейчас предложила может показаться Вам намного сложнее и зануднее того "простого и действенного" способа который был предложен выше. Но эта правильная и расово верная реализация, а то что предложено выше это г-ммммм неправильно.

Аватар пользователя xxandeadxx xxandeadxx 4 августа 2010 в 2:08

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
ак все что угодно в контент засунуть можно

ну не всё что угодно, а только тест

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
работа программиста нафиг никому нужна не будет.

"программист" который только и занимается расстановкой запятых действительно никому не нужен. а ещё никому не нужен "программист" который вместо решения секундной задачи читает книги в духе "Pro Drupal Development, 6"

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
то что предложено выше это г-ммммм неправильно.

что собственно неправильного?

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
Способ который я Вам сейчас предложила

что-то я способа не увидел, увидел только кучу текста не по делу

Аватар пользователя annya@drupal.org annya@drupal.org 4 августа 2010 в 2:42

Потроллим немного? Вы по-моему обиделись что я назвала Ваш способ "г-ммммм неправильным". Не обижайтесь, так как во-первых в моих словах ничего обидного нет, а во-вторых в на просторах интернета обижаться на что-либо не есть расово-верным.
Так теперь по делу:
1. Цсс предназначено для оформления внешнего вида документа, а не структуры или содержимого документа. А что Ваш код делает?
2. Если завтра топикастеру понадобится картинку между терминами таксономии поставить, небольшой облом получится.
3. По поводу «"программист" который только и занимается расстановкой запятых действительно никому не нужен. а ещё никому не нужен "программист" который вместо решения секундной задачи читает книги в духе "Pro Drupal Development, 6".»
Вы книжку явно не читали, так что же Вам известно о ней? А если читали и советуете свой код в качестве решения проблемы топикастера, то советую перечитать Вам ее снова, так как Вы явно не понимаете процессов, которые происходят в Друпале когда он формирует страницу.
4. «что собственно неправильного?»
Изложено выше
5. что-то я способа не увидел, увидел только кучу текста не по делу
Просто вы смысла в тексте не увидели, так у Вас случилась "Обидка на меня" о чем уже писалось выше. То что привели вы, да рабочий код, но это говнокод, простите за выражение. Концепция Вашего кода это "Но оно же работает" и "Я не читаю теории по Друпалу". У меня был опыт доработок некачественного кода, когда меняешь что-то в одно месте и все сразу сыпется. И сама конечно же писала такой код и сама потом себя пинала за него. Так что лучше сразу делать все правильно и по стандартам.

Аватар пользователя xxandeadxx xxandeadxx 4 августа 2010 в 2:50

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
Вы по-моему обиделись

увы нет

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
не есть расово-верным

что это значит?

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
А что Ваш код делает?

оформляет внешний вид списка

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
Если завтра топикастеру понадобится

если бы да кабы

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
картинку между терминами таксономии поставить, небольшой облом получится.

облом получится только у "программистов" читающих "Pro Drupal Development, 6", остальные воспользуются css — .класс_термина { background:url(...); }

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
Вы книжку явно не читали

вы удивитесь но читал, и не раз рекомендовал её начинающим друпалерам на страницах этого форума

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
то советую перечитать Вам ее снова

советую вам не давать мне глупых советов

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
ак как Вы явно не понимаете процессов, которые происходят в Друпале когда он формирует страницу.

это вы из трёх строчек моего css кода поняли? браво

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
Изложено выше

не заметил

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
но это говнокод

Biggrin

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
У меня был опыт доработок некачественного кода

сомнительно что вы вообще под друпал что-то разрабатывали

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
Так что лучше сразу делать все правильно и по стандартам.

пруфлинк можно? на решение данной конкретной задачи правильно, по стандартам и "расово-верно"

Аватар пользователя Yatsenco Yatsenco 4 августа 2010 в 7:58

поскольку между споров нормального решения не увидил, буду оформлять через css с помощью after
Почему я считаю что after не нормальное решение, потомучто в данный момент я учусь друпалу, и хотелось бы сделать это средствами друпала.

Также это не решает проблемму вывода терминов определенного словаря в node.tpl.php
Если уж пошли споры такие непонятные в большинстве для меня, то, пожалуйста, выложите ссылки на темы, с какможно более подробным описанием способа для новичка, ведь название способа мне тут ниочем не говорит.

Аватар пользователя ATon23 ATon23 4 августа 2010 в 9:54

если уж так хочется в шаблоне писать код - то taxonomy_node_get_terms_by_vocabulary($node, $vid, $key = 'tid') - это если термы из одного определенного словаря, а если все то taxonomy_node_get_terms($node, $key = 'tid') в помощь, на выходе получаем массив термов

Аватар пользователя Yatsenco Yatsenco 4 августа 2010 в 10:48

вывел так:

<?php
 $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 знать, я так понимаю.

Аватар пользователя Yatsenco Yatsenco 4 августа 2010 в 11:07

видимо я не туда этот код вставляю, заменял свой print и пробовал его отдельно вставлять, ничего не выдает, если можно напишите готовый снипет с <?php ?> чтобы я не мучался а просто скопировал, vid словаря моего 6

Аватар пользователя xxandeadxx xxandeadxx 4 августа 2010 в 11:19

"Yatsenco" wrote:
в данный момент я учусь друпалу

"Yatsenco" wrote:
а как их записать через запятую?

может для начала стоит php выучить?)

Аватар пользователя Yatsenco Yatsenco 4 августа 2010 в 11:39

Вобщем моя проблемма в том что не знаю php, подскажите в сети толковое руководство для относительно быстрого изучения его азов, ведь для кодинга такого не нужно весь php знать, я так понимаю.

Аватар пользователя Dan Dan 4 августа 2010 в 20:03

Уже второй топик на моей памяти, где схлестнулись за два решения: через PHP и CSS.

И мне совершенно не понятно, чем плох способ с CSS? Каковы аргументы? Если бы кто-то сказал "не работает в ИЕ6,7", то это понятно, это аргумент и его надо иметь ввиду, но "не друпал-way" - мне непонятно. Что значит "не drupal-way"? В друпале не используется CSS? В темах для оформления буллитов тэгов LI используют PHP? Может надо вообще на inline-css, вставляемое в препроцессе, перейти?

Моё мнение: оба способа хороши и оба нужно знать, применяя по необходимости.

Аватар пользователя annya@drupal.org annya@drupal.org 4 августа 2010 в 22:39

Dan wrote:
Уже второй топик на моей памяти, где схлестнулись за два решения: через PHP и CSS.

И мне совершенно не понятно, чем плох способ с CSS? Каковы аргументы? Если бы кто-то сказал "не работает в ИЕ6,7", то это понятно, это аргумент и его надо иметь ввиду, но "не друпал-way" - мне непонятно. Что значит "не drupal-way"? В друпале не используется CSS? В темах для оформления буллитов тэгов LI используют PHP? Может надо вообще на inline-css, вставляемое в препроцессе, перейти?

Моё мнение: оба способа хороши и оба нужно знать, применяя по необходимости.


Просто я считаю что "," это составная контента. Цсс по сути своей служит для оформления вида контента, а не состава контента. В темах для оформления списка используется хтмл, но не цсс же. Мне кажется что схема такая: в препроцессах формируется контент, потом контент заключается в структуру, потом цсс. Или может быть "," относится к оформлению вида контента, а не к самому контенту?

Аватар пользователя Dan Dan 5 августа 2010 в 8:50

"<a href="mailto:annya@drupal.org">annya@drupal.org</a>" wrote:
В темах для оформления списка используется хтмл, но не цсс же.

Для оформления используется всё же CSS (например «list-style-type: circle» или «list-style-image: url('…')»), а для формирования, да: PHP → HTML.
В данном случае, имхо, запятая — это оформление списка, а не контент, т.к. список терминов не является связным текстом, это просто набор ссылок.
Если уж быть перфекционистами, то запятая — и контент и оформление. Как аналог — висячая пунктуация, которая является частью контента, но которую, с помощью CSS/JS, надо выносить за границу текста.

Аватар пользователя vitg vitg 10 ноября 2015 в 11:46

Мое сообщение вроде по теме. Решил сделать просто вывод в блок терминов из словаря через запятую через views. Через php не хочется не потому что не знаю, а потому что решил потыкать views.

Нашел конкретный режим, все галки поставил, все равно термины отображаются через строку и запятых никаких нет. Тема стандартная Garland, drupal 6.17, views последние.

Помогите, пожалуйста. Заранее спасибо.

Аватар пользователя Dan Dan 5 августа 2010 в 18:45

Сделай не «Taxonomy: Term», а «Taxonomy: All terms». И там задай фильтр по словарю.

"RxB" wrote:
Дансамара, ты в чятике когда буш?

Соскучилсо? )))

Аватар пользователя vitg vitg 10 ноября 2015 в 11:46

"Dan" wrote:
Сделай не «Taxonomy: Term», а «Taxonomy: All terms». И там задай фильтр по словарю.

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

Аватар пользователя Dan Dan 5 августа 2010 в 21:07

У тебя view выводящий термины? Можно попробовать модулем [module=semanticviews] попытаться вывести как надо, задавая обёртки для строк в виде span, но не знаю можно ли там запятые проставить между строками.
По любому, думается мне, надо будет руки марать CSS, препроцессом или шаблонами Smile

Аватар пользователя vitg vitg 5 августа 2010 в 21:50

"Dan" wrote:
У тебя view выводящий термины?

Да, + небольшой тест перед и после.
"Dan" wrote:
По любому, думается мне, надо будет руки марать CSS, препроцессом или шаблонами :)

Если только так, то я уже сделал через шаблоны (.tpl.php в теме) и views. Я думал, что можно только через views сделать. Спасибо!

Я воспользовался решением здесь

Аватар пользователя InvDeath InvDeath 10 августа 2011 в 9:58

Вот в 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; 
?>

Аж кошки скребут за условие в каждой итерации...
Как можно сделать более нормально?
--
Эти поля кешируются?

Аватар пользователя InvDeath InvDeath 10 августа 2011 в 21:47

Спасибо,
как-то не допер уже готовые сложить... пытался сразу выводить (стадный инстинкт навер по дефолтному способу Smile ).