CCK в одну строчку

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

Аватар пользователя Yanzay Yanzay 14 ноября 2008 в 22:32

Есть CCK поле с множественным выбором чекбоксов. Юзер отмечает несколько чекбоксов и получается что каждый из выбранных вариантов начинается с новой строки. Как вывести их все в одну строчку, разделенные запятой, типа:
Жанр: комедия, фантастика, романтика

Комментарии

Аватар пользователя Тыдж Тыдж 15 ноября 2008 в 1:59

больной вопрос, тоже интерессно.. наверное как-то через вьюс... но хотелось бы попрооще, просто каким-то параметром.
А еще очень интерессно, как расположить более компактней множество чекбоксов при создании новости? То есть создан новый тип документа "Музыкальный альбом" и поле "Жанр" задается выбором разных чекбоксов (Core, Punk, Metal...etc), и все они выводятся один за другим... очень много в столбец - ужос неудобно. Как их разместить в строчку? чтобы не занимали много места.

Аватар пользователя Тыдж Тыдж 15 ноября 2008 в 2:01

больной вопрос, тоже интерессно.. наверное как-то через вьюс... но хотелось бы попрооще, просто каким-то параметром.
А еще очень интерессно, как расположить более компактней множество чекбоксов при создании новости? То есть создан новый тип документа "Музыкальный альбом" и поле "Жанр" задается выбором разных чекбоксов (Core, Punk, Metal...etc), и все они выводятся один за другим... очень много в столбец - ужос неудобно. Как их разместить в строчку? чтобы не занимали много места.

Аватар пользователя dfaker dfaker 15 ноября 2008 в 3:32

Тыдж определенно жанры лучше таксономией определять, при просмотре будет одной строкой ) и само название словаря тоже несложно вывести

Аватар пользователя Yanzay Yanzay 15 ноября 2008 в 11:35

А можно немного поподробнее? А то я совсем еще новичок, а вы тут какими-то страшными словами кидаетесь.

Аватар пользователя Обухов Никита Обухов Никита 15 ноября 2008 в 14:24

"Yanzay" wrote:
А можно немного поподробнее? А то я совсем еще новичок, а вы тут какими-то страшными словами кидаетесь.

Почитайте о темизации нод в поиске. Если кратко - вам, например, надо темизировать ноды, у которых тип материала, например, mycck.

Создаете в папке вашей темы файл node-mycck.tpl.php

В нём пишите print_r($node) и смотрите что получилось. Но лучше использовать модуль devel - на странице ноды жмете dev render и видите $node в "разобранном виде". Затем можете выводить ваши чекбоксы как душа пожелает.

Как простой пример. В node-mycck.tpl.php этот простой скрипт будет выводить список терминов для ноды, термины принадлежат словарю с номером $vid

  foreach((array)$node->taxonomy as $term){
        if ($term->vid == $vid){
                $link_set[] = l($term->name, taxonomy_term_path($term));      
        }

        if (!empty($link_set1)){
         $link_set = implode(',', $link_set1); /*Разделяем список запятыми*/
    }

print $link_set;

Ваши чекбоксы будут храниться в $node->машинное_имя_поля
В этом массиве будут содержаться выбранные пользователем чекбоксы, их вывод можно менять.

Аватар пользователя Обухов Никита Обухов Никита 15 ноября 2008 в 14:26

"Тыдж" wrote:
То есть создан новый тип документа "Музыкальный альбом" и поле "Жанр" задается выбором разных чекбоксов (Core, Punk, Metal...etc), и все они выводятся один за другим... очень много в столбец - ужос неудобно. Как их разместить в строчку? чтобы не занимали много места.

Нужно использовать только таксономию, никакие чекбоксы не нужны. Создаете словарь с множественным выбором. Тогда можно будет выбирать несколько терминов. А разместить их в строку можно как я писал в камментсе выше.

Аватар пользователя Yanzay Yanzay 18 ноября 2008 в 1:40

Спасибо, помогло. Вывел все как положено через запятую, но...
Дело в том, что получается что этот пункт (Жанр) выводится отдельно от всех остальных (типа год выпуска и т.д.), то есть в node-film.tpl.php оно выглядит вот так:

<div class="content clear-block">
  Жанр: <?php print $link_set; ?>
  <?php print $content ?>
</div>

А как его впихнуть вовнутрь к остальным CCK полям? Подскажите плиз.

-----------------------------------------------------------------------

Проблему решил следующим образом - в файл content-field.tpl.php добавил:

<?php if ($field_name == 'field_count') : ?>
<b>Жанр:&nbsp;</b><?php print $link_set; endif; ?>

Где field_count - последнее из выводимых полей, к которому просто добавляется вывод поля из таксономии. Но мне *очень* не нравится такая реализация, может кто-нибудь предложит что-то покрасивее? Заранее спасибо.

Аватар пользователя dfaker dfaker 18 ноября 2008 в 9:48

Покрасивее модуль contemplate, там весь вывод для cck ноды (тизера и полного представления отдельно) задается руками

Аватар пользователя Nikit Nikit 19 ноября 2008 в 0:47

не скажу что красивее, просто удобнее, хотя тоже самое можно и через devel в еще более удобном виде смотреть. а тематизация через файлы рулит еще лучше.