Разделитель при выводе жанров

ushkom

Активист
Клиент
Сообщения
143
Реакции
7
Баллы
18
Добрый день. Мне нужно было сделать свой разделитель при выводе жанров в треках и альбомах. Получилось сделать так:
Код:
{foreach $artist.genres as $genre}{$comma}{$genre}{assign var="comma" value=", "}{/foreach}
Все работает нормально, но в логах выдает ошибку:
Код:
[Sun Dec 06 12:12:24.051313 2020] [fcgid:warn] [pid 31037] [client 185.191.171.15:55054] mod_fcgid: stderr: PHP Notice:  Undefined index: comma in /cache/ad3ccfd0c17cd86ccf20e3011fdd671459355985_0.file.artist.tpl.php on line 76
Что не нравится, как подправить ошибку и в чем она? Спасибо
 

MSE-Script

Developer
Команда форума
Сообщения
828
Реакции
290
Баллы
63
@ushkom, Добрый!

Вы вызываете переменную $comma до ее создания. {$comma} должна вызываться после {assign var="comma" value=", "}.

Для вывода разделителя достаточно прописать его напрямую в шаблон:
PHP:
{foreach $artist.genres as $genre}{$genre},{/foreach}
 

ushkom

Активист
Клиент
Сообщения
143
Реакции
7
Баллы
18
Так я пробовал, тогда разделитель появляется и после последнего жанра. Как сделать чтоб разделитель был только между жанрами, после последнего было пусто?
 

MSE-Script

Developer
Команда форума
Сообщения
828
Реакции
290
Баллы
63
@ushkom, Либо добавить в цикл проверку на последнюю итерацию, либо каждому элементу добавить стиль:
CSS:
.element:not(:last-child)::after {
    content: ','
}
 

ushkom

Активист
Клиент
Сообщения
143
Реакции
7
Баллы
18
Стили не подходят, это для application/ld+json, а не могли бы показать пример, как добавить в цикл проверку на последнюю итерацию? Заранее благодарен.
 

MSE-Script

Developer
Команда форума
Сообщения
828
Реакции
290
Баллы
63
@ushkom,
PHP:
{foreach $track.genres as $genre name=genres}
    {$genre}{if !$smarty.foreach.genres.last},{/if}
{/foreach}
 
Сверху