Темизирую страницу. использую для вывода значений поля render($content['field_indications']). Но эти значения(слова) выводятся в строку слитно. Как сделать, чтобы значения массива выводились через запятую?
Путь к значениям массива:
$content['field_indications'][0]
$content['field_indications'][1]
$content['field_indications'][2]
и т.д.
Вывод значений массива через запятую
Главные вкладки
Лучший ответ
.product_display_indications .field-item {
display: inline;
}
display: inline;
}
.product_display_indications .field-item:after {
content: ',';
padding-right: .5em;
}
.product_display_indications .field-item:last-child:after {
content: none;
}
Комментарии
https://secure.php.net/manual/en/function.implode.php
Совет то правильный. Я про эту ф-цию уже узнал. Вот только начинающему сложно кодить. Если не сложно, распишите подробно весь код. Там всего несколько строчек. На этом примере и разберусь.
<?php
$result = implode(', ' , $content['field_indications']);
?>
Это если конечно значения действительно лежат по простым ключам, и внутри $content['field_indications'][0] не массивы.
А вообще, если это многозначное поле, то в настройках отображения ноды вроде можно разделитель указывать.
Ошибка: Recoverable fatal error: Object of class stdClass could not be converted to string в функции include() (строка 163 в файле
Если быть точным, то значение лежит в: $content['field_indications'][0]['#title']
Я знаю, что разделитель можно ставить во views, а в настройках ноды не знаю такого.
Странное поле у Вас какое-то.
Вам циклы подучить нужно.
Но при этом, логику правильно выносить в препроцессор, а не применять в шаблоне.
Да вроде и не странное (см. файл).
Подучить еще много чего надо, это верно. Иначе бы не обращался сюда каждый раз...
Так это форма? Вы страницу формы темизируете?
Теперь совсем не понятно чего Вы пытаетесь добиться.
Можете, хоть приблизительный макет нарисовать? Или в деталях расписать необходимый результат?
Вполне вероятно, у Вас подход не правильный.
Я темизирую карточку товара Drupal Commerce. Это нода типа product_display. Сначала я достаточно легко темизировал эту карточку товара при помощи views(сделал представление страницы, указал какой адрес перекрывать: node/%). Вот только вьюс стал перекрывать ноды всех типов, а не только типа product_display, хотя в настройках представление я выставил фильтр по определенному типу. В итоге мне посоветовали темизировать карточку товара файлом node--product-display.tpl.php. Вот этим сейчас и занимаюсь...
Сорри, вчитался - понял. Выводится список ссылок, и нужно их в строку, через запятую разместить.
Тут, на самом деле, не нужно править шаблоны. Достаточно настроить отображение в стилях.
Можно использовать инлайновое отображение (или инлайн-блок), а запятые проставить псевдоэлементами.
В другом случае - нужно писать свою функцию темизации (форматтер поля).
Ни первый, ни второй делать толком не умею. Может с первым вариантом подсобите!? Я примерно понимаю, что такое псевдоэлементы в css, но не знаю как с их помощью решить мою задачу.
display: inline;
}
.product_display_indications .field-item:after {
content: ',';
padding-right: .5em;
}
.product_display_indications .field-item:last-child:after {
content: none;
}
Большое спасибо! Я ещё оказывается и CSS плохо знаю))) Запятые появились, вот только и после последнего элемента запятая ставиться, не смотря на условие. Буду разбираться...
Del.
Так проблема еще до конца не решена(я про последнюю запятую).
Вот, уже методом научного тыка, подбираю:
<h2>Показания: </h2>
<div class="field field-name-field-indications field-type-taxonomy-term-reference field-label-hidden">
<div class="field-items">
<div class="field-item even">
<a href="#">бронхит</a>
</div>
<div class="field-item odd">
<a href="#">трахеит</a>
</div>
<div class="field-item even">
<a href="#">коклюш</a>
</div>
<div class="field-item odd">
<a href="#">бронхиальная астма</a>
</div>
</div>
</div>
</div>
Стили:
display: inline-block;
}
.product_display_indications a:after {
content: ',';
padding-right: .5em;
}
.product_display_indications:last-of-type a:after {
content: none;
}
Может подскажите, как эту последнюю запятую одолеть (убрать). Уже нервов не хватает...Бьюсь который час с одной несчастной запятой))
Нужно перечислять свойства field-item и ему уже убирать последний элемент.
Работает только для одинаковых элементов. Т.е. если Вы прописываете псевдокласс :last-child для вложенного элемента - он не сработает.
Надо бы ещё почитать про mvc.. Наверное
http://redcrackle.com/blog/how-show-comma-separated-taxonomy-terms-drupal
Спасибо, заработало!!! Вот только ошибочка выскакивает:
Notice: Undefined index: atributes в функции mybootstrap_subtheme_field__field_indications__product_display() (строка 91 в файле C:\........\template.php).
Ругается на эту строку:
$output = '
';
Что тут не так, не пойму?
Тогда уже так:
display: inline;
}
.product_display_indications .field-item:after {
content: ',';
padding-right: .5em;
}
.product_display_indications .field-item:last-child:after {
content: none;
}
Без разницы, главное что бы «лапочка » зажглась в голове
Огромное спасибо что повозились со мной! Всё работает как надо!!!! Оказывается тут и без тега
<a>
можно было обойтись в CSS.Благодарю за ссылки. Обязательно подтянусь по этим темам....но нет ни чего лучше практики!
Топать и топать
Всем спасибо за помощь!