Как написать виджет CCK с несколькими входными элементами?
То, что я ищу, - это не CCK flexifield или CCK Multigroup. Я пытаюсь разработать виджет CCK, который позволяет мне вводить два или более полей ввода на значение, что-то вроде того, что Doublefield делает для Drupal 7. Как бы я это развил?
3 answers
Пример взят из поля Номер телефона CCK. Вам нужно будет
-
Реализуйте функцию hook_field_settings() для возврата хранилища данных поля
176 case 'database columns': 177 return array( 178 'number' => array( 179 'type' => 'varchar', 180 'length' => CCK_PHONE_PHONE_MAX_LENGTH, 181 'not null' => FALSE, 182 ), 183 'country_codes' => array( 184 'type' => 'varchar', 185 'length' => CCK_PHONE_CC_MAX_LENGTH, 186 'not null' => FALSE, 187 ), 188 'extension' => array( 189 'type' => 'varchar', 190 'length' => CCK_PHONE_EXTENSION_MAX_LENGTH, 191 'not null' => FALSE, 192 ), 193 );
-
Реализуйте hook_elements() для отображения реальных полей ввода, где вы создаете FAPI внутри функции cck_phone_process()
598 function cck_phone_elements() { 599 return array( 600 'phone_number' => array( 601 '#input' => TRUE, 602 '#process' => array('cck_phone_process'), 603 '#autocomplete_path' => FALSE, 604 ), 605 ); 606 }
Я построил что-то подобное для drupal 7. Учитывая, что CCK перешел в ядро drupal в d7, я не совсем уверен, насколько сильно будет отличаться код для модуля cck в d6, но, возможно, этот модуль поможет вам
Я написал этот модуль, так как мне нужно было каким-то образом записывать телефонные номера, но разделить их на код страны/код города и номер и сохранить их в отдельных столбцах базы данных. Все другие полевые модули, которые я пробовал, не допускали этого!
Таким образом, все числа может быть введен единообразно и, следовательно, представлен единообразно - особенно полезно, если вы используете его для хранения и управления информацией о клиентах и, возможно, вам потребуется экспортировать ее в различные приложения. В моем случае некоторые пользователи вводили телефонные номера с тире, другие - с косой чертой, а третьи снова без каких-либо разделяющих значений, что затрудняло управление ими и их отображение в беспорядке.
Разорвите код на части и измените его в соответствии с вашими потребностями (например, только 2 поля):
Это в моей песочнице: http://drupal.org/sandbox/tecjam/1320886
В Git: http://drupalcode.org/sandbox/tecjam/1320886.git/tree/e7c97511506ee6e92a44656aa02d31f4e8f69727
Мне нравится комментировать свой код, чтобы помочь себе (иногда комментариев больше, чем кода lol). Так что выяснение того, что делает, что и где, вообще не должно быть проблемой.
Вы всегда можете спросить, есть ли у вас какие-либо особые вопросы.
Думаю, я должен поблагодарить Дженнифер Ходгдон (и Ларри Пейджа + Сергея Брина). В Poplarware есть замечательный путеводитель: http://poplarware.com/articles/cck_field_module