[РЕШЕНО] Зависимые поля атрибутов!

Главные вкладки

Аватар пользователя Sadchenko Sadchenko 7 апреля 2012 в 3:13

Приветствую всех друпалчан!
На форуме уже не однократно поднимался этот вопрос, но я так и не нашел ответа. Целый день и гуглил и яндексил, без толку. Нужно сделать зависимые поля в атрибутах товара.
Например (нужно чтоб второй select был скрыт по умолчанию и появлялся при выборе опции из первого селекта) выбираю тип бумаги "Матовый" и появляется возможность выбрать ламинацию:

 <select id="edit-attributes-1" name="attributes[2]">
 <option selected="selected" value="">Тип бумаги</option>
 <option value="3">Глянец</option>
 <option value="4">Матовый</option>
 <option value="5">Холст</option>
 </select>

 <select id="edit-attributes-2" name="attributes[3]">
 <option selected="selected" value="8">Ламинация</option>
 <option value="7">Глянцевая</option>
 <option value="6">Матовая</option>
 </select>

Модуль ubercart. Такая тема поднималась здесь http://www.drupal.ru/node/63553 и здесь http://www.drupal.ru/node/22092 но я толком так ничего не понял и ничего и не нашел!
Я пробовал организовать это через Ubercart Dependent Attributes но чтото не разобрался в нем!
Мне очень горит, кто нибудь отзовитесь!!!

Комментарии

Аватар пользователя Sadchenko Sadchenko 7 апреля 2012 в 20:08

Получилось! Спасибо большое! Если б еще к классам присоединить, чтоб не создавать для каждого товара отдельно!

Но все равно спасибо за модуль, очень выручил!!!

Аватар пользователя Sadchenko Sadchenko 10 апреля 2012 в 4:18

Обещал написать, если разберусь с вопросом. С вопросом тем путем, что предполагал не разобрался, нашел другое решение. Заказал у одного программёра скрипт, он мне быстро его склепал, отдал за него 30$. Скрипт применяется только для уже созданных атрибутов с присвоенными айдишниками и тд. Лучше всего вклеивать на страницу полной ноды. Кому надо, берите:

Задача: Есть три типа бумаги для печати фотографий. Нужно чтоб при выборе Матовой бумаги или глянцевой выпадали два атрибута (Ламинация и Пластификация) с опциями, а при выборе Холста, первые два атрибута обратно скрывались и появлялся третий атрибут (Вскрытие лаком).

Вот кусок HTML формы с атрибутами, чтоб по нему ориентироваться.

<div class="attribute-2">
  <select id="edit-attributes-2"">
    <option selected="selected" value="">Выберите тип бумаги</option>
    <option value="3">Глянец</option>
    <option value="4">Матовый</option>
    <option value="5">Холст</option>
  </select>
</div>

<div class="attribute-3">
  <select id="edit-attributes-3">
    <option selected="selected" value="8">Без ламинации</option>
    <option value="7">Глянцевая</option>
    <option value="6">Матовая</option>
  </select>
</div>

<div class="attribute-6">
  <select id="edit-attributes-6">
    <option selected="selected" value="13">Не пластифицировать</option>
    <option value="14">3 мм</option>
    <option value="15">5 мм</option>
  </select>
</div>

<div class="attribute-5">
  <select id="edit-attributes-5">
    <option selected="selected" value="13">Вскрытие лаком</option>
    <option value="10">Без лакировки</option>
    <option value="11">С лакировкой</option>
  </select>
</div>

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

$(document).ready(function(){

// по умолчанию скрыты селекторы, которые потом нужно будет показать
$(".attribute-3,.attribute-5,.attribute-6").hide();

//Селектор от которого зависят скрытые
$("#edit-attributes-2").change(function(){

var selectedValue = $(this).val();
// не выбрано значение, скрыть все селекторы
if(selectedValue == undefined || selectedValue == "")
{
$(".attribute-3,.attribute-5,.attribute-6").hide();
}
// выбран глянец(option-3) или матовый(optio-4)
else if(selectedValue == 3 || selectedValue == 4)
{
$(".attribute-3,.attribute-6").slideDown('slow').show();//Показать два селектора
$(".attribute-5").hide(); //Третий селектор по прежнему скрытый
}
// выбран холст (option-5)
else if(selectedValue == 5)
{
$(".attribute-5").slideDown('slow').show(); //Третий селектор открывается
$(".attribute-3,.attribute-6").slideUp('slow').hide(); //два первых селектора скрываются
}
});

});

Аватар пользователя axa-xa-xa axa-xa-xa 11 апреля 2012 в 14:59

Неуже нельзя было сделать через http://drupal.org/project/uc_dropdown_attributes ?

У меня была задача выбрать категорию ткани (1,2,3) и в зависимости от категории выпадал нужный список...
Ну да ладно, у каждого свои задачи и своя реализация, а за код спасибо, может кому и згодится.

Успехов !!!

P.S. Блин тормознул. Ты ведь не хотел перелапачивать все товары... Тогда твой подход оправдан.