Вы здесь

Как в форме товара удалить лишние цвета из поля line item-a

0

Начальный вопрос: http://dru.io/question/2674
"Кролик недоделанный" http://bags.mirlive.com/koshelki/shinny-zipper-140.html

Цвет - ссылка на термин, редактируемый секретаршей (потом скрыть надобно будет)
сколько цветов у товара есть - она галочки ставит

Выбор цвета - поле в кастомном типе Line item - портянка ещё та

Вопрос: как вывести в этом поле (в кастомном типе Line item) только цвета товара в наличии, а не все из словаря?

Версия Drupal: 
7.x
Категория: 
Form APITaxonomy API
Связанные проекты: 
Drupal Commerce
Вопрос задан 02.08.2015 - 11:31
Аватар пользователя embed
embed
-4

Ответы

0

В hook_form_alter удалите лишние цвета из #options

Ответ дан 02.08.2015 - 11:37
Аватар пользователя xandeadx
xandeadx
1542

У меня уже есть form_alter для placeholder

function mirlive_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'webform_client_form_15') {
foreach ($form["submitted"] as $key => $value) {
if (in_array($value["#type"], array("textfield", "webform_email", "textarea"))) {
$form["submitted"][$key]['#attributes']["placeholder"] = t($value["#title"]);
$form["submitted"][$key]['#attributes']["onfocus"] = "this.placeholder = ''";
$form["submitted"][$key]['#attributes']["onblur"] = "this.placeholder =" . "'" . t($value["#title"]) . "'";
$form["submitted"][$key]['#title_display'] = 'invisible';}}}}

совершенно не понимаю как состыковать это и убрать лишнее из #options
если возможно, помогите пожалуйста... я совсем чайник в таких вопросах ... ))

Комментарий оставлен 02.08.2015 - 22:56
if ($form_id == 'commerce_cart_add_to_cart_form') {
  unset($form[...][#options][...]);
  unset($form[...][#options][...]);
  unset($form[...][#options][...]);
}
Комментарий оставлен 02.08.2015 - 23:09

Но это уберёт всюду только перечисленные #options

А цвета у всех товаров - разные комбинации.

Т.е. кастомное поле Выбор цвета в типе Line item не корректируется относительно редакции поля цвет для каждого товара (список цвета у всех товаров разный)

Комментарий оставлен 03.08.2015 - 01:46
0

Вы можете непосредственно в hook_form_alter проверять, на странице какого товара находитесь, проверять, какие термины цветов назначены для товара и делать unset ненужным терминам.

Ответ дан 03.08.2015 - 12:08

Вы можете непосредственно в hook_form_alter проверять, на странице какого товара находитесь, проверять, какие термины цветов назначены для товара и делать unset ненужным терминам.

Если не сложно - пример такой реализации?

Хотя чисто интуитивно: по-моему надо как-то брать отредактированный список цветов и как-то пристраивать его в Front-end статьи

Комментарий оставлен 03.08.2015 - 12:47

он и пристраивается именно через form alter
Вы почитайте уроки по созданию форм в друпал - сразу понятнее станет, как формируются формы с выпадающим списком, чекбоксами и т.д.

надо сделать как-то так.

if ($form_id == 'commerce_cart_add_to_cart_form') {
$node = node_load(arg(1));// загружаем ноду, на странице которой находимся.
//у этой ноды, должно быть поле, в котором хранятся цвета, назначенные для нее.
//просим выбрать айди терминов-цветов для этой ноды.
//примерно так
$terms = array();
foreach($node->машинное_имя_поля['und'] as $field => $value){
  $terms[] = $value;
}
$form[какое_тут_поле]['#options'] = $terms;
}
Комментарий оставлен 04.08.2015 - 12:35