[КАКБЭРЕШЕНО] Drupal 7 Multi field

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

Аватар пользователя xom940k xom940k 30 января 2012 в 14:57

Всем привет. Заезжанный вопрос.
Сontent Multigroup Drupal6 - рабочая вещь.
Однако упорно не могу ничего найти похожего для Drupal7.
Задача: наполнять контент в табличном стиле, где ячейка каждой строки - cck поле. Есть кнопка добавить строку.
Если есть решение - отпишите.
Если нет - буду куралесить сам, ибо выхода нет. Отпишите опыт, что юзали, какие идеи.
В 6ке я представляю как внутрях работает это, поскольку вывод у меня всегда кастомный.
Если что доброе выйдет в итоге, как бы универсальное, повторное использование из коробки и тп - поделюсь...

Комментарии

Аватар пользователя xom940k xom940k 30 января 2012 в 15:16

Если конкретно надо, то напишу:
нужно составить таблицу, где в первой колонке будут ссылки на термин (цвет), во второй колонки будет Unlimeted Image (изображения с разных ракурсов).
Не обязательно визуально, чтобы выглядело как таблица. Главное, чтобы при редактировании ноды цвет и цепочка ракурсов были сгруппированы в одну сущность.
У меня куча грязных javascript мыслей по этому поводу уже Smile Но так неохота садиться за то, что уже решенов 6ке Sad

Аватар пользователя Ch Ch 30 января 2012 в 15:23

double_field dev версия может оформить вывод ввиде таблицы. Хотя я всё равно не понимаю, как вы реализуете «Unlimeted Image (изображения с разных ракурсов)».

Аватар пользователя xom940k xom940k 30 января 2012 в 15:26

ну я же говорю, что не обязательно, чтобы поля были в 1 строчку. Их же можно в филдсет закрывающийся пихать. В начале идет выбор цвета, а потом цепочка ракурсов. Туда напихали ракурсов, внизу тыкнули добавить строчку - снова филдсет с цветом и балванкой под ракурсы...

Аватар пользователя xom940k xom940k 1 февраля 2012 в 11:45

меня удивляет на самом деле, что среди разрабов нет устойчивого мнения по этому поводу. Вещь реально нужная. В 3х последних проектах (инет магазины) я ее использовал. Как так то )))

Аватар пользователя Ch Ch 1 февраля 2012 в 12:14

Просто никто так и не понял, что вы хотите. Field collection — чушь, потому что вы не смогли его осилить. Другие варианты обсуждать нет смысла.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 1 февраля 2012 в 12:16

"xom940k" wrote:
меня удивляет на самом деле, что среди разрабов нет устойчивого мнения по этому поводу. Вещь реально нужная. В 3х последних проектах (инет магазины) я ее использовал. Как так то )))

Меня удивляют хомячки, чья ограниченность мышления создаёт им проблемы.

Аватар пользователя xom940k xom940k 1 февраля 2012 в 12:24

"RxB" wrote:
Меня удивляют хомячки, чья ограниченность мышления создаёт им проблемы.

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

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 1 февраля 2012 в 12:38

"xom940k" wrote:
Но когда с вас/меня потребуют факты, обосновывающие данные утверждения, то с этим начинаются проблемы

Т.е. от вас фактов не будет?
Ок.
Объясняю.
Вы не стали утруждаться в полном описании хотелки, вероятно делаете аналог атрибутов мульти-полями.
Field collection ниасилили, модуль плохой, ну оно и ясно, чо уж там.
Теперь о реализации атрибутов мульти-полями - способ хренов изначально.
1. затратный по ресурсам.
2. с большими ограничениями, в мульти-полях не работает тип поля image
3. Практически исключается возможность рефакторинга.
Идём далее, про ограниченность мышления.
Вы сами себе вбили в голову что данная задача решается так.
Естественно существования модулей
http://drupal.org/project/editview
http://drupal.org/project/editablefields
http://drupal.org/project/multi_node_add
http://drupal.org/project/slickgrid
http://drupal.org/project/cck_table
http://drupal.org/project/tablefield
и кучи других было проигнорировано.
Проблема ваша вытекает из неправильной архитектуры и кривизны рук (ограниченности мышления)

Аватар пользователя xom940k xom940k 1 февраля 2012 в 12:58

"RxB" wrote:
Field collection ниасилили, модуль плохой, ну оно и ясно, чо уж там.

не нужно судить шаблонно, как пивосос возле зомбоящика! Судя по опыту работы, чем думать у вас есть => думайте красочней обо мне. Я установил этот модуль, добавил поле. В админке - пустота, devel показывает null - че за хрень. Накатал тему, пошел заниматься делами другими.
Как раз щас появилось время, чтобы погуглить гайды как раз по этому модулю и вот что я нашел
Исходя из этого видео, кирка довольно увесистая, щас пойду ей махать (тестить).
"RxB" wrote:
Вы сами себе вбили в голову что данная задача решается так.
Естественно существования модулей

как так? ))) так это как? Я разве предложил вариант решения? )))
Половину модулей из списка я уже установил. Таблицы - только текстовые поля, не подходит. Вообще, я ищу в глубину, перебирая по очереди пока не успех. Вы ищите в ширину - нагуглив аналогов, а потом уже пытаться понять что из них надо фильтрануть. Это подход к освоению, а не ограниченность - не надо путать яичницу с гениальностью!
"RxB" wrote:
Проблема ваша вытекает из неправильной архитектуры и кривизны рук (ограниченности мышления)

Круг очевидности мой не расширился из вашего поста, потому для меня не очевидно:
1. почему я ограничен
2. если бы я не проявил инициативу (что в подавляющем случае приходится делать, а потом самому же отвечать на поставленный вопрос), то и выбора бы из списка модулей сделать не смог, ибо четкого ответа дано не было.
В связи с этим могу утверждать, что вы либо закомплексованный антисоциальный тип, самоутверждающийся за счет уличения в нензнаии и подмене понятий "незнание" и "ограниченность" - тем самым спикулируя на ответной реакции. Либо вы просто находитесь на не справедливо оплачиваемой работе, где вас всё и все (эти тупые уроды) достало/и, да еще какието хомячки пишут. В любому случае проблема в вас, а не во мне Smile Я бы задачу решил, ибо деньги уже проплачены. Другое дело общение с подобными - это показатель друпал.ру сообщества Smile

Аватар пользователя xom940k xom940k 1 февраля 2012 в 13:10

"RxB" wrote:
я ещё детей ем

отлично! В них много белка, что позволит вам не вести малоподвижный образ жизни. Одобряю.

Аватар пользователя aa2007 aa2007 2 февраля 2012 в 12:06

"xom940k" wrote:
Если что доброе выйдет в итоге, как бы универсальное, повторное использование из коробки и тп - поделюсь...

ну и?

Аватар пользователя xom940k xom940k 2 февраля 2012 в 15:14

"aa2007" wrote:
ну и?

ну и я ковыряю Field collection
но!
Стоит отметить довольно мудреную структуру представления данных, которую использует этот модуль (entity api). Например, чтобы добраться до URI картинки, надо сделать около 9 разименований массива $variables в hook_preprocess_node, что ололо! Но это не совсем беда, не считая совершенно нечитабельного кода. Беда (вот прямо щас) заключается в том, что при выводе модулем views списка тизеров, где я хочу естественно добраться до обложек, я до них вообще не добираюсь! Гдето там в дебрях field_collection_item #items is null! И это пиз... Щас буду пытаться как то по другому выводить views (не тизерами, полями, хз...)
Еще отловлен баг. Когда наполняешь материал картинками - все ок! Можно городить сколь угодно картинок, потом добавлять еще одну строку и в ней опять городить сколь угодно картинок. Вот только баг заключается в том, что если ты нажмешь на remove любой картинки, то удалится не она сама, а строка целиком, вместе со всеми картинками и ссылкой на термин (который вообще не имеет отношения к картинкам какбе)! Обращаю внимание, что нажимаю remove именно картинки, а не строки field collection целиком! С этим я пока даже не представляю как бороться...
Хочется вообще на..й снести друпал и залит Django =E

Аватар пользователя xom940k xom940k 2 февраля 2012 в 17:23

VIEWS!
Когда выводим список тизеров нод, у которых есть коллекции, в hook_preprocess_node мы не можем найти конкретные entity. Однако если не лезть в дебри $variables['content'], а посмотреть $variables['field_name'], то увидим, что он выдает для текущего языка item_id.
Можно подгружать ручками вот такой функцией (нашел, порывшись в field_collection.module):

<?php
/**
 * Gets a field collection item entity for a given field item.
 *
 * @param $field_name
 *   (optional) If given and there is no entity yet, a new entity object is
 *   created for the given item.
 *
 * @return
 *   The entity object or FALSE.
 */
field_collection_field_get_entity(&$item$field_name NULL) {...}
?>

Причем $item - тут не id, а array('value' => ), так что будьте внимательны, когда кормите функцию параметрами Smile
$field_name - я не особо понял для чего толкового нужна (из описания), функция юзается где-то в модуле, видимо для чего-то годится.
Таким образом, первый костыль вставили. Думаю пригодится кому-нибудь Smile
ЗЫ: модуль Field Collection Views - на первый взгляд совершенно бестолковый...

Аватар пользователя Conwell Conwell 21 февраля 2013 в 0:19

На днях искал решение для подобной проблемы - группировка полей и соответственно вывод их потом. В итоге, решением стало использование Field Collection и Field Collection View.
Первый позволил сделать несколько полей с одинаковым наполнением, второй позволил сделать вывод всего этого безобразия через Views с минимальными затратами на темизацию контента определенного типа, благо поля надо было выводить просто в табличном виде.

Аватар пользователя Telec Telec 15 августа 2013 в 11:17

Свежее, очень многообещающее решение от Dave Reid: Multifield .
Отличается от прочих подобных аналогов тем, что не плодит сущности (буквально): вместо вложенных сущностей данные хранятся как дополнительные поля таблицы. Это накладывает на решение некоторые ограничения (см. на странице проекта) - но зато даёт и ряд колоссальных преимуществ, например скорость.
За прочими подробностями рекомендую обратиться к видео с главной.