Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.07.2016, 14:33
Новичок на форуме
Отправить личное сообщение для zahod5277 Посмотреть профиль Найти все сообщения от zahod5277
 
Регистрация: 06.04.2014
Сообщений: 8

Наборы параметров для HTML блока и переключение между ними
Здравствуйте!
Мастерю что-то вроде опций товара в интернет-магазине. Дело в том, что опций много, и в зависимости от одной опции, меняются другие опции.
Например
Есть футболка. Футболка может быть пяти размеров - супер маленькая, маленькая, обычная, большая, супер большая.
В зависимости от того, какой размер выбран, у футболки может быть разный тип ткани (если маленькие, то хлопок, если средняя и больше, то например, синтетика)
И опять таки, если выбрана синтетика, то рисунок на футболке может быть сделан только одним типом краски (когда для хлопка можно выбрать три типа краски) и она не может быть красного цвета.

Я пытаюсь сообразить, как бы это грамотнее все сделать.
Все эти опции разделены на группы радио кнопок и в зависимости от выбранных опций, меняется превью товара.
Сейчас это выглядит как перебор кучи условий if-else и замена состояний тех или иных форм ввода и изменение классов у картинки-превью.
Код разросся почти до 200 строк и смотреть на него не приятно.
Буду рад любой помощи, спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 12.07.2016, 14:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от zahod5277
Все эти опции разделены на группы радио кнопок

Интересно, а где и как хранятся эти характеристики товара на сервере?
Ответить с цитированием
  #3 (permalink)  
Старый 12.07.2016, 15:08
Новичок на форуме
Отправить личное сообщение для zahod5277 Посмотреть профиль Найти все сообщения от zahod5277
 
Регистрация: 06.04.2014
Сообщений: 8

Все опции хранятся в JSON в базе данных вот так:
[{"X_id":"1","name":"","description":"","size":"","price":"1234","paint":"123","paint2":"0","canvas":"3900","nodecor":"0","mont1":"231","mont2":"123","print":"1234","mont3":"2344"},
{"X_id":"2","name":"","description":"","size":"40*60","price":"3000","paint":"400","paint2":"0","canvas":"44","nodecor":"0","mont1":"213","mont2":"312","print":"222","mont3":"2345"},
{"X_id":"3","name":"","description":"","size":"60*90","price":"5000","paint":"333","paint2":"0","canvas":"22","nodecor":"0","mont1":"123","mont2":"423","print":"500","mont3":"2523"},
{"X_id":"4","name":"","description":"","size":"100*150","price":"10000","paint":"333","paint2":"0","canvas":"553","nodecor":"566","mont1":"23","mont2":"324","print":"123","mont3":"52325"},
{"X_id":"5","name":"","description":"","paint":"223","paint2":"343","canvas":"77","nodecor":"777","mont1":"342","mont2":"324","print":"1234","mont3":"52523"}]


Где name и description это описание размера, а остальное - наценка за определенные опции, за краску, тип ткани и все такое.
Но связей зависимостей одной опции от другой нигде никак не указано, это просто известно и не меняется никогда.
Ответить с цитированием
  #4 (permalink)  
Старый 12.07.2016, 15:22
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от zahod5277
Все опции хранятся в JSON в базе данных

Вот это и плохо, отсюда и грабли.
Ответить с цитированием
  #5 (permalink)  
Старый 12.07.2016, 15:28
Новичок на форуме
Отправить личное сообщение для zahod5277 Посмотреть профиль Найти все сообщения от zahod5277
 
Регистрация: 06.04.2014
Сообщений: 8

К сожалению, этот формат использует модуль CMS, ничего с этим сделать нельзя(
Ответить с цитированием
  #6 (permalink)  
Старый 12.07.2016, 15:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от zahod5277
этот формат использует модуль CMS
Модуль, это не ядро, его и переписать можно. Хранить в базе вместо характеристик, каждая из которых может быть связана со множеством товаров, строки - это и избыточность данных, и сведение на нет всего преимущества базы. Ведь если товаров на странице много, и характеристика может может быть связана со множеством из них, то даже без асинхронного запроса к серверу, используя объект, все будет куда более компактнее и на клиенте.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка HTML разметки для плагина. Draconit Элементы интерфейса 3 13.12.2013 19:06
Где найти скрипт - Социальный Замок для html ? klimentino Общие вопросы Javascript 1 25.10.2013 06:39
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00
Социальный замок для ВКОНТАКТЕ (HTML) serg13 Работа 0 22.02.2013 16:27
Передача параметров javascript между iframe и документом. freedon Events/DOM/Window 8 05.05.2011 16:29