Боюсь, это не так, как работает система полей Drupal, one field == one table
(ну, на самом деле, 2 таблицы, если вы включите таблицу ревизий для каждого поля).
Модуль адреса использует hook_field_schema()
для определения нескольких столбцов для этого конкретного поля (посмотрите address.install
, и вы поймете, что я имею в виду).
Так что, если вы хотите поместить все вВ одной таблице вам просто нужно определить свой собственный тип поля (см. модуль примеров *1013*, в частности, field_example
, чтобы помочь с этим).
Имейте в виду, что количество столбцоввы определите в hook_field_schema()
, что будет статичным после установки модуля, и единственный способ увеличить / уменьшить его - это использовать _update
ловушку для вашего пользовательского модуля.
Также, если вы взламываете файлы, включенные в модуль Commerce ... stop! : коммерция все еще находится в зачаточном состоянии, и вам, вероятно, придется обновить ее в ближайшее время ... как только вымы сделали, что изменения в вашем коде пропадут, и естьвелика вероятность того, что ваш сайт будет в несовместимом состоянии.
Весь смысл Drupal в том, что все подключено / обработано так, что оно может быть изменено другими частями системы.В product.install
вы ничего не можете изменить, чего нельзя добиться, реализовав ловушку Drupal в другом модуле.
Если вы не уверены, опубликуйте еще один вопрос, подробно описывающий, что вы пытаетесь сделать, непосредственно редактируя файл модуля contrib, и один из гуру Drupal в SO укажет вам правильное направление: -)
РЕДАКТИРОВАТЬ
Просто сказать, что я уже довольно давно работаю с Ubercart в Drupal 7 и считаю его очень и очень хорошим решением.(многие модули, входящие в состав Commerce, все еще находятся в dev / alpha / beta; это не так для модулей, добавленных Ubercart).Возможно, стоит взглянуть.
Дополнительная информация
Я думаю, что у вас есть два варианта, но в любом случае вам нужно создать собственный модуль.( отличный набор инструкций здесь ).
Вариант 1. Создание настраиваемого поля
Если вы новичок в Drupal-кодировании, я бы предположил, что это, вероятно, самый простойспособ выполнить то, что вы хотите, но это все еще не совсем прямо.Возьмите модуль field_example
из ссылки на модуль Примеры Drupal выше и посмотрите в файл .install
, в частности, функцию field_example_field_schema()
.Это определяет столбцы, которые будут в таблице для этого поля.Затем взгляните на field_example.module
... почти все функции, которые комментируются с Implements hook_x
, - это та, которую вы захотите скопировать в свой модуль и настроить для своих собственных нужд.
Я думаю,это будет проще, потому что Drupal будет обрабатывать создание полей таблицы / формы, чтобы вам не приходилось связываться с базой данных, схемой или API-интерфейсами форм.
Вариант 2. Создание пользовательского модуля
Эта опция предполагает реализацию вашей собственной таблицы (как вы предлагаете в своем комментарии), где первичный ключ будет идентификатором сущности продукта, а также будет содержать все ваши пользовательские столбцы.(Для получения справки см. Документацию API схемы .)
Затем вы реализуете hook_form_alter()
, чтобы добавить поля формы, необходимые пользователю для вводаdata, а затем внедрите hook_node_insert()
и hook_node_update()
, чтобы сохранить эти данные в таблице базы данных.Трудно вдаваться в подробности без написания кода, и это совсем немного кода!
Надеюсь, что это помогает, извините, я не могу быть более конкретным, но это не так просто, не зная всех деталей ивыходы из ситуации