Настраиваемое поле CCK в Drupal с несколькими дочерними полями

Есть ли способ создать составное поле, которое может иметь несколько значений, причем каждое значение имеет другую группу составных значений?

Например. мы хотим, чтобы в конце была эта структура:

  • Group 1 (unlimited number of groups)
    • Child field (unlimited children for each group)
    • Дочернее поле
    • ...
  • Group 2
    • Child field
    • Дочернее поле
    • ...
  • ...

Возможно ли это вообще для настраиваемого модуля, который определяет поле CCK? Если да, может ли кто-нибудь подтолкнуть меня в правильном направлении?


person Karl    schedule 28.10.2009    source источник


Ответы (4)


это очень известный и обсуждаемый вопрос в мире drupal.

эта функция называется cck "multigroup" и кажется довольно сложной для реализации. на форуме drupal есть много сообщений об этом, я предлагаю вам начать здесь:

http://drupal.org/node/494100

это своего рода «скрытая» функция в модуле cck. заглянув в каталог модуля, вы найдете инструкции здесь:

cck / modules / content_multigroup / README.txt
Изменить: текущая работа над многогрупповым модулем перенесена в экспериментальную ветку CCK 3.0.

а пока вы можете попробовать справиться с этим с помощью модуля flexifield (но это немного хакерское занятие, я выиграл не использую его в производстве)

person gpilotino    schedule 28.10.2009
comment
Значит, нет никакого способа сделать это без использования кода с альфа-качеством? Даже если бы мне пришлось написать собственный тип поля CCK? - person Karl; 29.10.2009
comment
это подлая правда. так или иначе, ходят слухи, что последняя версия cvs-версии подмодуля cck multigroup несколько стабильна. Если вы хотите воспроизвести такое поведение самостоятельно, возникает слишком большая проблема (подумайте о том, что даже разработчики cck не смогли выполнить эту простую задачу!) - person gpilotino; 29.10.2009
comment
С какими конфликтами я столкнусь при использовании CCK 3.x с другими модулями? Должен ли я просто пойти на это и посмотреть, что произойдет? - person Karl; 29.10.2009
comment
Итак, я установил CCK 3 с несколькими группами, и он действительно не делает то, что мне нужно. Мне нужно несколько групп с именем, тогда каждая группа будет содержать несколько детей. Я обнаружил, что не могу вложить мультигруппу в другую мультигруппу. Это просто похоже на группировку полей, а не на создание вложенной структуры. - person Karl; 29.10.2009
comment
на самом деле вы не можете. об этом даже говорится на странице проекта flexifield: две функции flexifield, которых нет у multigroup, - это возможность иметь многозначное поле внутри многозначного гибкого поля. - person gpilotino; 29.10.2009

В итоге я создал собственное составное поле CCK «Стоимость / продукт» на основе этого прекрасного руководства с примерами модулей: http://poplarware.com/es/articles/cck_field_module

Я еще не понял, как вытащить конкретное подполе, например стоимость, в представлениях. Я получаю только все соединение ": $".

person wgrunberg    schedule 28.08.2010
comment
Очень многое можно сделать по ссылке выше. - person Vikas Naranje; 16.02.2012

Для Drupal 7+ вы, вероятно, захотите проверить модуль Коллекция полей или Группа полей, если кратные значения не нужны.

person colan    schedule 27.09.2011

Эта проблема довольно старая, но я случайно наткнулся на нее. Я думаю, что способ справиться с этим на данный момент был бы со вторым типом cck для детей и группами в качестве поля node_reference. Итак, у вас будет:

MasterType

  • group field
    • unlimited per node
    • каждый, ссылка на узел ChildType

ChildType

  • child field
    • unlimited per node
person sprugman    schedule 04.05.2010
comment
Хотя это полностью сработает, было бы абсолютным кошмаром пытаться научить пользователей работать таким образом. - person Karl; 05.05.2010
comment
Это определенно не идеально, но модуль [node Relations] [1] немного помогает. Он обеспечивает функции создания и добавления и поиска и добавления в наложении. [1] drupal.org/project/noderelationships - person sprugman; 05.05.2010