Как использовать числовые поля для атрибутов drupal commerce


Я использую Drupal 7 с Drupal Commerce (не kickstart). Мои продукты - это коробки, установленные последовательно, различающиеся по высоте.

Examples:
Series 500 has 3 boxes
box 1 has dimensions of 120x20x10
box 2 has 120x20x20
box 3 has 120x20x30

Все остальное в коробках одинаковое, поэтому "высота" - это мой атрибут продукта. Атрибуты Drupal Commerce по умолчанию должны быть полем options_select, но у меня более 1000 продуктов разной высоты, и я действительно не хотел создавать и поддерживать гигантский массив высот до тысячной доли дюйма (будь то в графический интерфейс или в коде).

Мои первоначальные мысли состояли в том, чтобы создать модуль, в котором есть таблица sql для хранения высоты продукта. Затем добавьте два поля в продукт, десятичное и поле параметров, и скройте поле параметров. Когда пользователь вводит десятичную дробь в поле высота на странице продукта, при сохранении модуль проверяет, существует ли значение, и если нет, вставляет значение в таблицу sql. В поле параметры будет настроено использование функции допустимых значений для запроса таблицы sql для построения массив "высоты", поэтому снова при сохранении после того, как модуль сохранит десятичную дробь в таблице sql, он затем установит значение в поле параметры, сохраняя их синхронизацию.

Это позволило бы мне иметь поле опций, которое мне не нужно поддерживать, но показалось немного банальным, поэтому я подумал, есть ли кто-нибудь еще, кто нашел лучший способ (как я погуглил и не повезло).

Спасибо!

 1
Author: Jonofthedead, 2015-06-09

1 answers

Для ответа я действительно нашел возможный ответ на свои вопросы здесь:

Поддержка целых или плавающих значений в качестве атрибута

Но на него так и не ответили, вот почему я оставил свой открытым. Тем не менее, в вопросе было немного больше исследований моей проблемы, и он смог дать мне представление о том, что любое поле, которое реализует hook_options_list и имеет объект "property_type", определенный в его hook_field_info, может использоваться в качестве атрибута.

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

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

 1
Author: Jonofthedead, 2017-04-13 12:47:06