Поле CCK с двумя значениями?


Есть ли способ, чтобы поле CCK имело два значения для одного ввода?

Например, поле под названием "Натрий" и два значения: "190 мг" и "8%" - первое - это количество, второе - % от суточной нормы.

Если нет, то каков наилучший способ добиться этого?

Изменить:

Лучшим решением, которое я ищу, были бы наборы групп полей, и каждая строка имела бы 3 входа. Этикетка | значение (обязательно) | значение (необязательно) - итак, натрий |190 мг|8%

 5
Author: Kevin, 2011-03-14

5 answers

Взгляните на параметры мультигруппы CCK, которые являются только частью CCK 3.0+. Эта функция позволяет объединить несколько базовых полей в одну группу полей. См. http://drupal.org/node/119102 для длинной истории о том, как это произошло.

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

Другой вариант - написать свой собственный CCK тип поля, в котором нет проблем с созданием нескольких входных данных для одного поля. В результате вы определенно можете добиться этого, используя свое собственное настраиваемое поле, недостатками являются то, что вы пишете пользовательский код (чего приятно избегать), и он не такой гибкий, как параметры мультигруппы, встроенные в CCK 3.0

 7
Author: beeradb, 2011-03-14 17:04:11

Итак, вы хотите каким-то образом объединить два поля cck в одно?

Вы можете использовать два отдельных поля "мг натрия" и "% натрия" - и добавить вычисляемое поле, чтобы вы могли объединить значения этих двух полей в одно поле, например "значения натрия".

Дополнительная информация о модуле Вычисляемое поле , позволяющем сделать такое вычисляемое поле возможным (со страницы проекта):

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

 3
Author: 30equals, 2015-12-01 12:22:33

Возможно, я что-то упускаю, но проще всего было бы ввести всю строку "Натрий |190 мг|8%" в текстовое поле, а затем проанализировать значения на уровне темы, чтобы сделать все, что вам нужно сделать - поместить это в таблицу, построить график и т. Д. Под текстовым полем поставьте пример, проблема решена. Альфа не требуется.

 2
Author: d3l3t3m3, 2011-03-15 04:35:26

Модуль, который позволяет вам достичь этого в Drupal 6, называется Multigroup, и он является частью CCK 3.x, который имеет альфа-версию. Этот модуль позволяет добавлять несколько полей в набор полей, а затем представляет набор полей знакомым способом "добавить другое", который CCK использует для полей с несколькими значениями.

 1
Author: jhedstrom, 2011-03-14 13:53:53

Вы можете добавить все нужные данные в одно поле CCK, но вам нужен тип CCK, который поддерживает это.

С помощью CCK вы можете указать, каким должно быть хранилище данных (field_settings), какой должна быть форма для ввода (виджет) и как должно отображаться поле (форматеры).

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

Вы также можете создать свой виджет, который создаст пользовательскую форму для поля и способа хранения данных. Если для поля настроено несколько значений, вы можете использовать delta для разделения значений. Это требует более глубокого знания внутренней работы CCK, но даст вам лучший контроль над данными.

Документация по выполнению всего этого очень ограничена, но просмотр других модулей даст вам представление о том, как это сделать.

 1
Author: googletorp, 2011-03-14 15:18:37