7up Опубліковано: 29 липня 2011 Share Опубліковано: 29 липня 2011 А реализовывал ли кто, такую штуку, когда опции товара связаны/зависящие друг от друга? т.е. при смене одной опции в других некоторые пункты могут меняться. Например есть товар красный синий и зеленый с объемом памяти 4 и 8 гб, но зеленого только 4гб. Что бы при выборе цвета зеленый один из ваиантов опции "объем памяти" менялся. Ну а данные о наличии уже синхронизировать с 1с например - это уже вторая история... это пытаюсь реализовать через модуль импорта/экспорта. 1 Надіслати Поділитися на інших сайтах More sharing options...
karapuzam Опубліковано: 29 липня 2011 Share Опубліковано: 29 липня 2011 Вам для этого потребуется перековырять код магазина в частности product.php как минимум... со всеми вытекающими последствиями... Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 Последствия вытекают не хорошие? А как же это реализовывают другие, все работает вроде, есть много работающих магазинов с таким свойством. Надіслати Поділитися на інших сайтах More sharing options...
karapuzam Опубліковано: 29 липня 2011 Share Опубліковано: 29 липня 2011 любые изменения кода несут за собой последствия. и очень часто не хорошие. я не видел пока ни одного работающего на OCstore магазина по описанному Вами принципу. Мой магазин работает с одним свойством, код менялся. Цвета товара делю просто на разные товары. Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 29 липня 2011 Автор Share Опубліковано: 29 липня 2011 я не видел пока ни одного работающего на OCstore магазина по описанному Вами принципу. Мой магазин работает с одним свойством, код менялся. Цвета товара делю просто на разные товары.А это одно свойство у вас динамическое? т.е. зависит от остатков товара? Подгружаете его с 1с? Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 27 січня 2012 Автор Share Опубліковано: 27 січня 2012 Проблема решена. Кому интересно, могу выложить подробное описание реализации связных опций. Надіслати Поділитися на інших сайтах More sharing options...
ravilr Опубліковано: 27 січня 2012 Share Опубліковано: 27 січня 2012 тут даже без вопросов )) Если есть решение, всегда надо выкладывать. Надіслати Поділитися на інших сайтах More sharing options... pashast Опубліковано: 27 січня 2012 Share Опубліковано: 27 січня 2012 Проблема решена. Кому интересно, могу выложить подробное описание реализации связных опций. Конечно выкладывай. Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 27 січня 2012 Автор Share Опубліковано: 27 січня 2012 ок. попытаюсь объяснить своим языком, если будут вопросы прокомментирую.... Реализовал загрузку данных в магазин из 1с, посему админкой не пользуюсь, т.е. решение не представляет собой модуль :( В админке опции храняться как ( или правильнее сказать в базе хранятся, а в админке видны): Наименование опции | значение Цвет:размер | Синий: 10, 20, 30 Цвет:размер | Красный: 20, 30, 40 Цвет:размер | Зеленый: 50, 60, 70 Использовал поле radio, т.е. если в значении type будет стоять другие типы опций, как например select, то они будут отрабатываться как обычно. Можно было использовать например тип текст и хранить все значения в одном поле, но в таком случае не будет работать изменение цены в зависимости от выбора опции. Двоеточие использую как разделитель. В названии до разделителя наименование первого списка(или radio как в моем случае), наименование второго списка(меняющегося в зависимости от первого) после разделителя. В значениях опций до разделителя наименования для первого списка, а после разделителя через другой разделитель (запятую) значения который будут в втором списке. в product.tpl разделаю все эти параметры и используя Jquery строю связь двух списков. Что бы значения корректно попадали в корзину т.е. не Цвет:размер как в наименовании опции, а именно Цвет, данные списков записываются в скрытую форму, которая уже передается в корзину. Правда из за такого решения пришлось изменить еще несколько файлов в теме, дабы эти данные корректно отображались не только в корзине, но и в списке заказов и т.д. Выглядит примерно так: Куски кодов выкладывать? P.S. Не знаю плохо ли это, как писали уже выше, что некоторый код сайта пришлось чуток поменять? Но я в основном менял только темплейты, в модель и контролер вроде ничего не лез.... Надіслати Поділитися на інших сайтах More sharing options... pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Выложи, пожалуйста, product.tpl :-) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 product.tpl - часть кода отвечающая за смену опций: Переменная $o отвечает за присутствие в товаре связной опции, при нажатии купить, если она равна 1, то в корзину добавляются значения с скрытого поля, если равна 0, то все как обычно... <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="5" cellspacing="1" bgcolor="#cccccc"> <tr> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2) = explode(":", $option['name']); echo $name1; ?>:</b><br /> <script> function izm(ch){ <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); echo "if(ch==".$option_value['product_option_value_id']."){ document.calc.master200.options.length=0;"; $szz = explode(",", $sz); $ii="0"; foreach ($szz as $szzz) { echo 'document.calc.master200.options['.$ii.']=new Option("'.$szzz.'", ", '.$name2.': '.$szzz.'", true, true);'; $ii++; } echo '}'; }?> } </script> <style type="text/css"> p:hover { background-color: #BBFFBB; margin: 0; padding: 0; } p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="izm(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $name1; echo ": "; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="center" valign="top" bgcolor="#FDFFEA"> <span class="required">*</span> <b><?php echo $name2,":"; ?></b><br /> <select name="<?php echo $name2; ?>" id="master200" size="1"> <option value="">---</option> </select> <input name="val2" id="val2" type="hidden" value=""> <input name="option[<?php echo $option['product_option_id']; ?>]" id="val" type="hidden" value=""> </td> </form> </tr> </table> </div> <br /> <?php } ?> В чистовик никак не переделаю, поэтому в этом варианте некоторые переменные названы как попало :) прошу прощения, программисты эстеты меня бы побили :) ....стили вставлены сюда же, для наглядности.... 1 Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 Теперь вот сижу, ломаю голову, как бы сделать три связные опции :) например "Тип, Цвет, Размер". Цвет зависит от Типа, а размер соответственно от Цвета. Надіслати Поділитися на інших сайтах More sharing options... pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Спасибо ;) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 30 січня 2012 Автор Share Опубліковано: 30 січня 2012 Изучив еще немного jquery понял что все это можно было сделать только на нем :( Получилось сделать даже три связные опции, причем одна из которых например "Цвет" в виде картинок :) Добавил еще эффекты, теперь квадратики с цветами красиво выезжают после выбора фасона и при клике по ним мигают ))))) 2 Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 1 лютого 2012 Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибо Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 1 лютого 2012 Автор Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибоНу дык смысл в коде выше.... работающий пока не довел до ума, стыдно выкладывать :( переменные по идиотски называются, это типа черновиковый вариант, но если вникнуть смысл понятен, сложного ничего нет. При каждом переходе на следующую опцию отрезается часть значений выбранных в первой. Вот такой вот код: <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="7" cellspacing="1"> <tr valign="top"> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2, $name3) = explode(":", $option['name']); echo $name1,", ", $name2,", ", $name3; ?>:</b><br /> <style type="text/css"> p:hover {background-color: #CCCCCC;margin: 0; padding: 0;} p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="colors(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="left" valign="top" width="150" bgcolor="#FDFFEA"> <div id="colors" class="sell"></div> <select class="sel" id="sel" name="sel"></select> </td> </form> </tr> </table> </div> <br /> <input name="val2" id="val2" type="hidden" value=""> <input name="val3" id="val3" type="hidden" value=""> <input class="val" name="option[<?php echo $option['product_option_id']; ?>]" type="hidden" id="val" value=""> <script type="text/javascript" src="malsup.github.com/jquery.form.js"></script> <script> function colors(what) { $("#sel").empty(); <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); $vls = explode ("|", $sz); ?> if (what==<?php echo $option_value['product_option_value_id']; ?>) { $("#colors").html('<?php foreach ($vls as $vlss) { list($clrs, $szs)=explode("-", $vlss); echo "<img border="1" class="col" id="",$clrs,"" onclick="sizes('",$szs,"'), addcolor('",$clrs,"')" src="",$clrs,".png">"; } ?>') $("#sizes").html(" ") $("#colors").show("slide", {direction: "up"}, 700); $('#val').val(''); } <?php } ?> }; function addcolor(what3) { $("#"+what3).effect("pulsate", { times: 1 }, 700); document.getElementById('val3').value = document.getElementById('val2').value+" "+what3; } function sizes(what2) { $("#sel").empty(); $("#sel").effect("pulsate", { times: 1 }, 700); rr = what2.split(","); for(var i = 0; i < rr.length; i++) $("#sel").append( $('<option value="'+rr+'">'+rr+'</option>')); } </script> <style> .col { border-color: #5D5D5D; margin: 3px; position: relative; } .sel { display: none; margin: 0px; width: 50px; position: relative; } .sell { display: none; margin: 0px; position: relative; } </style> <?php } ?> Остатки опций связанные например с цветами и размерами опенкарт не учитывает, 1с выгружает только те опции, которые есть в остатке. В опенкарте если включить "списывать со склада" то списываться будет только первый(верхний) уровень опции. Ели нужно списывать все варианты, нужно немного переделать код.... Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 2 лютого 2012 Share Опубліковано: 2 лютого 2012 Я 1с импортом не пользуюсь, делаю свой и у меня нужно остатки цвето-размеров учитывать совсем не соображу да и с jquery совсем еще не знаком а делать надо быстро чтото, может друг дугу поможем (если тебе нужен импорт прайса например с остатками и чем тока хошь)...... надо наверное поспать... Надіслати Поділитися на інших сайтах More sharing options... sadko Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 Столкнулся с похожей проблемой. Есть у меня товар. К примеру – пиджак. Этот пиджак бывает размеров: 46, 48, 50, 52, 54. Также, этот пиджак бывает следующих цветов: черный, коричневый, синий. Я создаю группы опций: Размер: 46, 48, 50, 52, 54 Цвет: черный, коричневый, синий Иными словами у меня в принципе может быть 15 вариантов пиджаков – по три цвета каждого размера. НО! На складе у меня есть: - 46 размера - черный, коричневый, синий (итого – 3 шт.) - 48 размера - черный, коричневый (итого – 2 шт.) - 50 размера – черный (итого – 1 шт.) - 52 размера – синий (итого – 1 шт.) - 54 размера – коричневый (итого – 1 шт.) Итого: - вообще синих пиджаков – 2 шт. (46 и 52) - вообще черных пиджаков – 3 шт. (46, 48, 50) - вообще коричневых пиджаков – 2 шт. (46 и 48) В каждой опции ввожу соответственное количество каждого цвета и размера. В товаре у меня становятся доступными два выпадающих списка: размер и цвет пиджака. НО! Из-за того, что оба выпадающих списка доступны, покупатель может «сконструировать» такой пиджак, которого у меня на складе – НЕТ! Например, он выберет – размер 54, а цвет – синий! А у меня то такого на складе нет! Опции размер и цвет – СВЯЗАНЫ! Если я выбираю 54 размер, то у меня в списке ЦВЕТ должен оставаться только один цвет – коричневый. Но на практике есть возможность выбрать все цвета. Вообще в OpenCart как-то получается, что опции какие-то независимые друг от друга, сами по себе. Выходит, что товар конкретного размера и конкретного цвета – не может иметь уникального артикула. Не заводить же как отдельный товар пиджак размера 46 и придавать ему опцию цвета. Потом заводить такой же пиджак, но уже другого размера и т.п. Это как-то неправильно…. Других решений нету? Потому как ваш способ - тоже полумера какая то. Если товаров много, или разного цвета (у меня в магазине одежды - 38 цветов и 5 размеров) - будет расти количество опций под каждый товар. Меняется наличие на складе - нужно редактировать значение. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да я тоже все еще в раздумиях, но мысли такие приходят... Делаем еще одну колонку в таблице бд чтоб в размерах указать цвет данных размеров, тоесть у нас получается опция цветоразмер. Далее создаем две опции. Первая цвета они просто служат для выбора там можно ни остатки не учитывать ничего, а вот вторая опция размеры и тут уже в бд записывается размер-цвет и когда мы выбираем цвет в магазине (опция размер-цвета еще не доступна) делается запрос к бд (аяксом) и выводится только те размеры которым соответствует выбранный цвет и опция цветоразмера становится доступной и кол-во списывается именно с нее. Но незнаю ни аякс не яву не jquery и пока что это для меня сдерживающий фактор, но делать надо кто хочет может присоединятся Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да, в магазе все эти аттрибуты (Количество, Вычитать со склада, Цена, Баллы, Вес) можно присвоить только конкретной опции. вот что пришло в голову: создать сущность Группа опций товара, у которой и будут эти аттрибуты. опции конкретного товара буду добавляться не товару, а этой группе. например товар: пиждак группа: синий_48 (кол-во 10, вычитать "да", цена 500, баллы 0, вес 0.5) опции: цвет синий, размер 48. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 тоже интересный вариант тоже думал о нем (опции сделать как атрибуты), но программинг пока не самая моя сильная сторона (никак не перейду к полноценному ООП) поэтому хочется обойтись без глобальных решений а так временный костылек, но если кто будет браться готов всячески содействовать чем смогу как говорится а также поделюсь собственными модулями и наработками при удачном исходе дела Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 3 лютого 2012 Автор Share Опубліковано: 3 лютого 2012 У меня происходит выбор каждой опции только после выбора предыдущей, а до выбора этой опции последующие скрыты, т.е. выбор происходит лесенкой, по этапно..... (это я к посту о пиджаках) Надіслати Поділитися на інших сайтах More sharing options... 1 month later... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Не получилось реализовать. Секцию с radio закомментировал в product.tpl, вставил код с предыдущей страницы, больше страницы не грузились. Вообще это достаточно логичная функция, может есть готовый модуль? Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Да красивее думаю было бы сразу в админке иметь возможность назначать несколько значений одной опции или как то связывать их по типу атрибутов (тоесть группу) с указанием как бы главной опции но к сожалению мои познания в ООП довольно скудны чтоб реализовать это на нормальном уровне готов закинуть 400-600 рубасов если кто возьмется сделать Надіслати Поділитися на інших сайтах More sharing options... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 spambot Поддерживаю. Готов скинутся. Кто возьмется? Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 1 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Связанные опции. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
pashast Опубліковано: 27 січня 2012 Share Опубліковано: 27 січня 2012 Проблема решена. Кому интересно, могу выложить подробное описание реализации связных опций. Конечно выкладывай. Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 27 січня 2012 Автор Share Опубліковано: 27 січня 2012 ок. попытаюсь объяснить своим языком, если будут вопросы прокомментирую.... Реализовал загрузку данных в магазин из 1с, посему админкой не пользуюсь, т.е. решение не представляет собой модуль :( В админке опции храняться как ( или правильнее сказать в базе хранятся, а в админке видны): Наименование опции | значение Цвет:размер | Синий: 10, 20, 30 Цвет:размер | Красный: 20, 30, 40 Цвет:размер | Зеленый: 50, 60, 70 Использовал поле radio, т.е. если в значении type будет стоять другие типы опций, как например select, то они будут отрабатываться как обычно. Можно было использовать например тип текст и хранить все значения в одном поле, но в таком случае не будет работать изменение цены в зависимости от выбора опции. Двоеточие использую как разделитель. В названии до разделителя наименование первого списка(или radio как в моем случае), наименование второго списка(меняющегося в зависимости от первого) после разделителя. В значениях опций до разделителя наименования для первого списка, а после разделителя через другой разделитель (запятую) значения который будут в втором списке. в product.tpl разделаю все эти параметры и используя Jquery строю связь двух списков. Что бы значения корректно попадали в корзину т.е. не Цвет:размер как в наименовании опции, а именно Цвет, данные списков записываются в скрытую форму, которая уже передается в корзину. Правда из за такого решения пришлось изменить еще несколько файлов в теме, дабы эти данные корректно отображались не только в корзине, но и в списке заказов и т.д. Выглядит примерно так: Куски кодов выкладывать? P.S. Не знаю плохо ли это, как писали уже выше, что некоторый код сайта пришлось чуток поменять? Но я в основном менял только темплейты, в модель и контролер вроде ничего не лез.... Надіслати Поділитися на інших сайтах More sharing options... pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Выложи, пожалуйста, product.tpl :-) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 product.tpl - часть кода отвечающая за смену опций: Переменная $o отвечает за присутствие в товаре связной опции, при нажатии купить, если она равна 1, то в корзину добавляются значения с скрытого поля, если равна 0, то все как обычно... <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="5" cellspacing="1" bgcolor="#cccccc"> <tr> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2) = explode(":", $option['name']); echo $name1; ?>:</b><br /> <script> function izm(ch){ <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); echo "if(ch==".$option_value['product_option_value_id']."){ document.calc.master200.options.length=0;"; $szz = explode(",", $sz); $ii="0"; foreach ($szz as $szzz) { echo 'document.calc.master200.options['.$ii.']=new Option("'.$szzz.'", ", '.$name2.': '.$szzz.'", true, true);'; $ii++; } echo '}'; }?> } </script> <style type="text/css"> p:hover { background-color: #BBFFBB; margin: 0; padding: 0; } p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="izm(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $name1; echo ": "; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="center" valign="top" bgcolor="#FDFFEA"> <span class="required">*</span> <b><?php echo $name2,":"; ?></b><br /> <select name="<?php echo $name2; ?>" id="master200" size="1"> <option value="">---</option> </select> <input name="val2" id="val2" type="hidden" value=""> <input name="option[<?php echo $option['product_option_id']; ?>]" id="val" type="hidden" value=""> </td> </form> </tr> </table> </div> <br /> <?php } ?> В чистовик никак не переделаю, поэтому в этом варианте некоторые переменные названы как попало :) прошу прощения, программисты эстеты меня бы побили :) ....стили вставлены сюда же, для наглядности.... 1 Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 Теперь вот сижу, ломаю голову, как бы сделать три связные опции :) например "Тип, Цвет, Размер". Цвет зависит от Типа, а размер соответственно от Цвета. Надіслати Поділитися на інших сайтах More sharing options... pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Спасибо ;) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 30 січня 2012 Автор Share Опубліковано: 30 січня 2012 Изучив еще немного jquery понял что все это можно было сделать только на нем :( Получилось сделать даже три связные опции, причем одна из которых например "Цвет" в виде картинок :) Добавил еще эффекты, теперь квадратики с цветами красиво выезжают после выбора фасона и при клике по ним мигают ))))) 2 Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 1 лютого 2012 Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибо Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 1 лютого 2012 Автор Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибоНу дык смысл в коде выше.... работающий пока не довел до ума, стыдно выкладывать :( переменные по идиотски называются, это типа черновиковый вариант, но если вникнуть смысл понятен, сложного ничего нет. При каждом переходе на следующую опцию отрезается часть значений выбранных в первой. Вот такой вот код: <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="7" cellspacing="1"> <tr valign="top"> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2, $name3) = explode(":", $option['name']); echo $name1,", ", $name2,", ", $name3; ?>:</b><br /> <style type="text/css"> p:hover {background-color: #CCCCCC;margin: 0; padding: 0;} p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="colors(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="left" valign="top" width="150" bgcolor="#FDFFEA"> <div id="colors" class="sell"></div> <select class="sel" id="sel" name="sel"></select> </td> </form> </tr> </table> </div> <br /> <input name="val2" id="val2" type="hidden" value=""> <input name="val3" id="val3" type="hidden" value=""> <input class="val" name="option[<?php echo $option['product_option_id']; ?>]" type="hidden" id="val" value=""> <script type="text/javascript" src="malsup.github.com/jquery.form.js"></script> <script> function colors(what) { $("#sel").empty(); <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); $vls = explode ("|", $sz); ?> if (what==<?php echo $option_value['product_option_value_id']; ?>) { $("#colors").html('<?php foreach ($vls as $vlss) { list($clrs, $szs)=explode("-", $vlss); echo "<img border="1" class="col" id="",$clrs,"" onclick="sizes('",$szs,"'), addcolor('",$clrs,"')" src="",$clrs,".png">"; } ?>') $("#sizes").html(" ") $("#colors").show("slide", {direction: "up"}, 700); $('#val').val(''); } <?php } ?> }; function addcolor(what3) { $("#"+what3).effect("pulsate", { times: 1 }, 700); document.getElementById('val3').value = document.getElementById('val2').value+" "+what3; } function sizes(what2) { $("#sel").empty(); $("#sel").effect("pulsate", { times: 1 }, 700); rr = what2.split(","); for(var i = 0; i < rr.length; i++) $("#sel").append( $('<option value="'+rr+'">'+rr+'</option>')); } </script> <style> .col { border-color: #5D5D5D; margin: 3px; position: relative; } .sel { display: none; margin: 0px; width: 50px; position: relative; } .sell { display: none; margin: 0px; position: relative; } </style> <?php } ?> Остатки опций связанные например с цветами и размерами опенкарт не учитывает, 1с выгружает только те опции, которые есть в остатке. В опенкарте если включить "списывать со склада" то списываться будет только первый(верхний) уровень опции. Ели нужно списывать все варианты, нужно немного переделать код.... Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 2 лютого 2012 Share Опубліковано: 2 лютого 2012 Я 1с импортом не пользуюсь, делаю свой и у меня нужно остатки цвето-размеров учитывать совсем не соображу да и с jquery совсем еще не знаком а делать надо быстро чтото, может друг дугу поможем (если тебе нужен импорт прайса например с остатками и чем тока хошь)...... надо наверное поспать... Надіслати Поділитися на інших сайтах More sharing options... sadko Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 Столкнулся с похожей проблемой. Есть у меня товар. К примеру – пиджак. Этот пиджак бывает размеров: 46, 48, 50, 52, 54. Также, этот пиджак бывает следующих цветов: черный, коричневый, синий. Я создаю группы опций: Размер: 46, 48, 50, 52, 54 Цвет: черный, коричневый, синий Иными словами у меня в принципе может быть 15 вариантов пиджаков – по три цвета каждого размера. НО! На складе у меня есть: - 46 размера - черный, коричневый, синий (итого – 3 шт.) - 48 размера - черный, коричневый (итого – 2 шт.) - 50 размера – черный (итого – 1 шт.) - 52 размера – синий (итого – 1 шт.) - 54 размера – коричневый (итого – 1 шт.) Итого: - вообще синих пиджаков – 2 шт. (46 и 52) - вообще черных пиджаков – 3 шт. (46, 48, 50) - вообще коричневых пиджаков – 2 шт. (46 и 48) В каждой опции ввожу соответственное количество каждого цвета и размера. В товаре у меня становятся доступными два выпадающих списка: размер и цвет пиджака. НО! Из-за того, что оба выпадающих списка доступны, покупатель может «сконструировать» такой пиджак, которого у меня на складе – НЕТ! Например, он выберет – размер 54, а цвет – синий! А у меня то такого на складе нет! Опции размер и цвет – СВЯЗАНЫ! Если я выбираю 54 размер, то у меня в списке ЦВЕТ должен оставаться только один цвет – коричневый. Но на практике есть возможность выбрать все цвета. Вообще в OpenCart как-то получается, что опции какие-то независимые друг от друга, сами по себе. Выходит, что товар конкретного размера и конкретного цвета – не может иметь уникального артикула. Не заводить же как отдельный товар пиджак размера 46 и придавать ему опцию цвета. Потом заводить такой же пиджак, но уже другого размера и т.п. Это как-то неправильно…. Других решений нету? Потому как ваш способ - тоже полумера какая то. Если товаров много, или разного цвета (у меня в магазине одежды - 38 цветов и 5 размеров) - будет расти количество опций под каждый товар. Меняется наличие на складе - нужно редактировать значение. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да я тоже все еще в раздумиях, но мысли такие приходят... Делаем еще одну колонку в таблице бд чтоб в размерах указать цвет данных размеров, тоесть у нас получается опция цветоразмер. Далее создаем две опции. Первая цвета они просто служат для выбора там можно ни остатки не учитывать ничего, а вот вторая опция размеры и тут уже в бд записывается размер-цвет и когда мы выбираем цвет в магазине (опция размер-цвета еще не доступна) делается запрос к бд (аяксом) и выводится только те размеры которым соответствует выбранный цвет и опция цветоразмера становится доступной и кол-во списывается именно с нее. Но незнаю ни аякс не яву не jquery и пока что это для меня сдерживающий фактор, но делать надо кто хочет может присоединятся Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да, в магазе все эти аттрибуты (Количество, Вычитать со склада, Цена, Баллы, Вес) можно присвоить только конкретной опции. вот что пришло в голову: создать сущность Группа опций товара, у которой и будут эти аттрибуты. опции конкретного товара буду добавляться не товару, а этой группе. например товар: пиждак группа: синий_48 (кол-во 10, вычитать "да", цена 500, баллы 0, вес 0.5) опции: цвет синий, размер 48. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 тоже интересный вариант тоже думал о нем (опции сделать как атрибуты), но программинг пока не самая моя сильная сторона (никак не перейду к полноценному ООП) поэтому хочется обойтись без глобальных решений а так временный костылек, но если кто будет браться готов всячески содействовать чем смогу как говорится а также поделюсь собственными модулями и наработками при удачном исходе дела Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 3 лютого 2012 Автор Share Опубліковано: 3 лютого 2012 У меня происходит выбор каждой опции только после выбора предыдущей, а до выбора этой опции последующие скрыты, т.е. выбор происходит лесенкой, по этапно..... (это я к посту о пиджаках) Надіслати Поділитися на інших сайтах More sharing options... 1 month later... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Не получилось реализовать. Секцию с radio закомментировал в product.tpl, вставил код с предыдущей страницы, больше страницы не грузились. Вообще это достаточно логичная функция, может есть готовый модуль? Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Да красивее думаю было бы сразу в админке иметь возможность назначать несколько значений одной опции или как то связывать их по типу атрибутов (тоесть группу) с указанием как бы главной опции но к сожалению мои познания в ООП довольно скудны чтоб реализовать это на нормальном уровне готов закинуть 400-600 рубасов если кто возьмется сделать Надіслати Поділитися на інших сайтах More sharing options... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 spambot Поддерживаю. Готов скинутся. Кто возьмется? Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 1 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Связанные опции. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
7up Опубліковано: 27 січня 2012 Автор Share Опубліковано: 27 січня 2012 ок. попытаюсь объяснить своим языком, если будут вопросы прокомментирую.... Реализовал загрузку данных в магазин из 1с, посему админкой не пользуюсь, т.е. решение не представляет собой модуль :( В админке опции храняться как ( или правильнее сказать в базе хранятся, а в админке видны): Наименование опции | значение Цвет:размер | Синий: 10, 20, 30 Цвет:размер | Красный: 20, 30, 40 Цвет:размер | Зеленый: 50, 60, 70 Использовал поле radio, т.е. если в значении type будет стоять другие типы опций, как например select, то они будут отрабатываться как обычно. Можно было использовать например тип текст и хранить все значения в одном поле, но в таком случае не будет работать изменение цены в зависимости от выбора опции. Двоеточие использую как разделитель. В названии до разделителя наименование первого списка(или radio как в моем случае), наименование второго списка(меняющегося в зависимости от первого) после разделителя. В значениях опций до разделителя наименования для первого списка, а после разделителя через другой разделитель (запятую) значения который будут в втором списке. в product.tpl разделаю все эти параметры и используя Jquery строю связь двух списков. Что бы значения корректно попадали в корзину т.е. не Цвет:размер как в наименовании опции, а именно Цвет, данные списков записываются в скрытую форму, которая уже передается в корзину. Правда из за такого решения пришлось изменить еще несколько файлов в теме, дабы эти данные корректно отображались не только в корзине, но и в списке заказов и т.д. Выглядит примерно так: Куски кодов выкладывать? P.S. Не знаю плохо ли это, как писали уже выше, что некоторый код сайта пришлось чуток поменять? Но я в основном менял только темплейты, в модель и контролер вроде ничего не лез.... Надіслати Поділитися на інших сайтах More sharing options...
pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Выложи, пожалуйста, product.tpl :-) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 product.tpl - часть кода отвечающая за смену опций: Переменная $o отвечает за присутствие в товаре связной опции, при нажатии купить, если она равна 1, то в корзину добавляются значения с скрытого поля, если равна 0, то все как обычно... <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="5" cellspacing="1" bgcolor="#cccccc"> <tr> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2) = explode(":", $option['name']); echo $name1; ?>:</b><br /> <script> function izm(ch){ <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); echo "if(ch==".$option_value['product_option_value_id']."){ document.calc.master200.options.length=0;"; $szz = explode(",", $sz); $ii="0"; foreach ($szz as $szzz) { echo 'document.calc.master200.options['.$ii.']=new Option("'.$szzz.'", ", '.$name2.': '.$szzz.'", true, true);'; $ii++; } echo '}'; }?> } </script> <style type="text/css"> p:hover { background-color: #BBFFBB; margin: 0; padding: 0; } p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="izm(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $name1; echo ": "; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="center" valign="top" bgcolor="#FDFFEA"> <span class="required">*</span> <b><?php echo $name2,":"; ?></b><br /> <select name="<?php echo $name2; ?>" id="master200" size="1"> <option value="">---</option> </select> <input name="val2" id="val2" type="hidden" value=""> <input name="option[<?php echo $option['product_option_id']; ?>]" id="val" type="hidden" value=""> </td> </form> </tr> </table> </div> <br /> <?php } ?> В чистовик никак не переделаю, поэтому в этом варианте некоторые переменные названы как попало :) прошу прощения, программисты эстеты меня бы побили :) ....стили вставлены сюда же, для наглядности.... 1 Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 Теперь вот сижу, ломаю голову, как бы сделать три связные опции :) например "Тип, Цвет, Размер". Цвет зависит от Типа, а размер соответственно от Цвета. Надіслати Поділитися на інших сайтах More sharing options... pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Спасибо ;) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 30 січня 2012 Автор Share Опубліковано: 30 січня 2012 Изучив еще немного jquery понял что все это можно было сделать только на нем :( Получилось сделать даже три связные опции, причем одна из которых например "Цвет" в виде картинок :) Добавил еще эффекты, теперь квадратики с цветами красиво выезжают после выбора фасона и при клике по ним мигают ))))) 2 Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 1 лютого 2012 Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибо Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 1 лютого 2012 Автор Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибоНу дык смысл в коде выше.... работающий пока не довел до ума, стыдно выкладывать :( переменные по идиотски называются, это типа черновиковый вариант, но если вникнуть смысл понятен, сложного ничего нет. При каждом переходе на следующую опцию отрезается часть значений выбранных в первой. Вот такой вот код: <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="7" cellspacing="1"> <tr valign="top"> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2, $name3) = explode(":", $option['name']); echo $name1,", ", $name2,", ", $name3; ?>:</b><br /> <style type="text/css"> p:hover {background-color: #CCCCCC;margin: 0; padding: 0;} p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="colors(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="left" valign="top" width="150" bgcolor="#FDFFEA"> <div id="colors" class="sell"></div> <select class="sel" id="sel" name="sel"></select> </td> </form> </tr> </table> </div> <br /> <input name="val2" id="val2" type="hidden" value=""> <input name="val3" id="val3" type="hidden" value=""> <input class="val" name="option[<?php echo $option['product_option_id']; ?>]" type="hidden" id="val" value=""> <script type="text/javascript" src="malsup.github.com/jquery.form.js"></script> <script> function colors(what) { $("#sel").empty(); <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); $vls = explode ("|", $sz); ?> if (what==<?php echo $option_value['product_option_value_id']; ?>) { $("#colors").html('<?php foreach ($vls as $vlss) { list($clrs, $szs)=explode("-", $vlss); echo "<img border="1" class="col" id="",$clrs,"" onclick="sizes('",$szs,"'), addcolor('",$clrs,"')" src="",$clrs,".png">"; } ?>') $("#sizes").html(" ") $("#colors").show("slide", {direction: "up"}, 700); $('#val').val(''); } <?php } ?> }; function addcolor(what3) { $("#"+what3).effect("pulsate", { times: 1 }, 700); document.getElementById('val3').value = document.getElementById('val2').value+" "+what3; } function sizes(what2) { $("#sel").empty(); $("#sel").effect("pulsate", { times: 1 }, 700); rr = what2.split(","); for(var i = 0; i < rr.length; i++) $("#sel").append( $('<option value="'+rr+'">'+rr+'</option>')); } </script> <style> .col { border-color: #5D5D5D; margin: 3px; position: relative; } .sel { display: none; margin: 0px; width: 50px; position: relative; } .sell { display: none; margin: 0px; position: relative; } </style> <?php } ?> Остатки опций связанные например с цветами и размерами опенкарт не учитывает, 1с выгружает только те опции, которые есть в остатке. В опенкарте если включить "списывать со склада" то списываться будет только первый(верхний) уровень опции. Ели нужно списывать все варианты, нужно немного переделать код.... Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 2 лютого 2012 Share Опубліковано: 2 лютого 2012 Я 1с импортом не пользуюсь, делаю свой и у меня нужно остатки цвето-размеров учитывать совсем не соображу да и с jquery совсем еще не знаком а делать надо быстро чтото, может друг дугу поможем (если тебе нужен импорт прайса например с остатками и чем тока хошь)...... надо наверное поспать... Надіслати Поділитися на інших сайтах More sharing options... sadko Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 Столкнулся с похожей проблемой. Есть у меня товар. К примеру – пиджак. Этот пиджак бывает размеров: 46, 48, 50, 52, 54. Также, этот пиджак бывает следующих цветов: черный, коричневый, синий. Я создаю группы опций: Размер: 46, 48, 50, 52, 54 Цвет: черный, коричневый, синий Иными словами у меня в принципе может быть 15 вариантов пиджаков – по три цвета каждого размера. НО! На складе у меня есть: - 46 размера - черный, коричневый, синий (итого – 3 шт.) - 48 размера - черный, коричневый (итого – 2 шт.) - 50 размера – черный (итого – 1 шт.) - 52 размера – синий (итого – 1 шт.) - 54 размера – коричневый (итого – 1 шт.) Итого: - вообще синих пиджаков – 2 шт. (46 и 52) - вообще черных пиджаков – 3 шт. (46, 48, 50) - вообще коричневых пиджаков – 2 шт. (46 и 48) В каждой опции ввожу соответственное количество каждого цвета и размера. В товаре у меня становятся доступными два выпадающих списка: размер и цвет пиджака. НО! Из-за того, что оба выпадающих списка доступны, покупатель может «сконструировать» такой пиджак, которого у меня на складе – НЕТ! Например, он выберет – размер 54, а цвет – синий! А у меня то такого на складе нет! Опции размер и цвет – СВЯЗАНЫ! Если я выбираю 54 размер, то у меня в списке ЦВЕТ должен оставаться только один цвет – коричневый. Но на практике есть возможность выбрать все цвета. Вообще в OpenCart как-то получается, что опции какие-то независимые друг от друга, сами по себе. Выходит, что товар конкретного размера и конкретного цвета – не может иметь уникального артикула. Не заводить же как отдельный товар пиджак размера 46 и придавать ему опцию цвета. Потом заводить такой же пиджак, но уже другого размера и т.п. Это как-то неправильно…. Других решений нету? Потому как ваш способ - тоже полумера какая то. Если товаров много, или разного цвета (у меня в магазине одежды - 38 цветов и 5 размеров) - будет расти количество опций под каждый товар. Меняется наличие на складе - нужно редактировать значение. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да я тоже все еще в раздумиях, но мысли такие приходят... Делаем еще одну колонку в таблице бд чтоб в размерах указать цвет данных размеров, тоесть у нас получается опция цветоразмер. Далее создаем две опции. Первая цвета они просто служат для выбора там можно ни остатки не учитывать ничего, а вот вторая опция размеры и тут уже в бд записывается размер-цвет и когда мы выбираем цвет в магазине (опция размер-цвета еще не доступна) делается запрос к бд (аяксом) и выводится только те размеры которым соответствует выбранный цвет и опция цветоразмера становится доступной и кол-во списывается именно с нее. Но незнаю ни аякс не яву не jquery и пока что это для меня сдерживающий фактор, но делать надо кто хочет может присоединятся Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да, в магазе все эти аттрибуты (Количество, Вычитать со склада, Цена, Баллы, Вес) можно присвоить только конкретной опции. вот что пришло в голову: создать сущность Группа опций товара, у которой и будут эти аттрибуты. опции конкретного товара буду добавляться не товару, а этой группе. например товар: пиждак группа: синий_48 (кол-во 10, вычитать "да", цена 500, баллы 0, вес 0.5) опции: цвет синий, размер 48. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 тоже интересный вариант тоже думал о нем (опции сделать как атрибуты), но программинг пока не самая моя сильная сторона (никак не перейду к полноценному ООП) поэтому хочется обойтись без глобальных решений а так временный костылек, но если кто будет браться готов всячески содействовать чем смогу как говорится а также поделюсь собственными модулями и наработками при удачном исходе дела Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 3 лютого 2012 Автор Share Опубліковано: 3 лютого 2012 У меня происходит выбор каждой опции только после выбора предыдущей, а до выбора этой опции последующие скрыты, т.е. выбор происходит лесенкой, по этапно..... (это я к посту о пиджаках) Надіслати Поділитися на інших сайтах More sharing options... 1 month later... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Не получилось реализовать. Секцию с radio закомментировал в product.tpl, вставил код с предыдущей страницы, больше страницы не грузились. Вообще это достаточно логичная функция, может есть готовый модуль? Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Да красивее думаю было бы сразу в админке иметь возможность назначать несколько значений одной опции или как то связывать их по типу атрибутов (тоесть группу) с указанием как бы главной опции но к сожалению мои познания в ООП довольно скудны чтоб реализовать это на нормальном уровне готов закинуть 400-600 рубасов если кто возьмется сделать Надіслати Поділитися на інших сайтах More sharing options... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 spambot Поддерживаю. Готов скинутся. Кто возьмется? Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 1 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Загальні питання Связанные опции.
7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 product.tpl - часть кода отвечающая за смену опций: Переменная $o отвечает за присутствие в товаре связной опции, при нажатии купить, если она равна 1, то в корзину добавляются значения с скрытого поля, если равна 0, то все как обычно... <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="5" cellspacing="1" bgcolor="#cccccc"> <tr> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2) = explode(":", $option['name']); echo $name1; ?>:</b><br /> <script> function izm(ch){ <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); echo "if(ch==".$option_value['product_option_value_id']."){ document.calc.master200.options.length=0;"; $szz = explode(",", $sz); $ii="0"; foreach ($szz as $szzz) { echo 'document.calc.master200.options['.$ii.']=new Option("'.$szzz.'", ", '.$name2.': '.$szzz.'", true, true);'; $ii++; } echo '}'; }?> } </script> <style type="text/css"> p:hover { background-color: #BBFFBB; margin: 0; padding: 0; } p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="izm(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $name1; echo ": "; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="center" valign="top" bgcolor="#FDFFEA"> <span class="required">*</span> <b><?php echo $name2,":"; ?></b><br /> <select name="<?php echo $name2; ?>" id="master200" size="1"> <option value="">---</option> </select> <input name="val2" id="val2" type="hidden" value=""> <input name="option[<?php echo $option['product_option_id']; ?>]" id="val" type="hidden" value=""> </td> </form> </tr> </table> </div> <br /> <?php } ?> В чистовик никак не переделаю, поэтому в этом варианте некоторые переменные названы как попало :) прошу прощения, программисты эстеты меня бы побили :) ....стили вставлены сюда же, для наглядности.... 1 Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 28 січня 2012 Автор Share Опубліковано: 28 січня 2012 Теперь вот сижу, ломаю голову, как бы сделать три связные опции :) например "Тип, Цвет, Размер". Цвет зависит от Типа, а размер соответственно от Цвета. Надіслати Поділитися на інших сайтах More sharing options...
pashast Опубліковано: 28 січня 2012 Share Опубліковано: 28 січня 2012 Спасибо ;) Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 30 січня 2012 Автор Share Опубліковано: 30 січня 2012 Изучив еще немного jquery понял что все это можно было сделать только на нем :( Получилось сделать даже три связные опции, причем одна из которых например "Цвет" в виде картинок :) Добавил еще эффекты, теперь квадратики с цветами красиво выезжают после выбора фасона и при клике по ним мигают ))))) 2 Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 1 лютого 2012 Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибо Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 1 лютого 2012 Автор Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибоНу дык смысл в коде выше.... работающий пока не довел до ума, стыдно выкладывать :( переменные по идиотски называются, это типа черновиковый вариант, но если вникнуть смысл понятен, сложного ничего нет. При каждом переходе на следующую опцию отрезается часть значений выбранных в первой. Вот такой вот код: <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="7" cellspacing="1"> <tr valign="top"> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2, $name3) = explode(":", $option['name']); echo $name1,", ", $name2,", ", $name3; ?>:</b><br /> <style type="text/css"> p:hover {background-color: #CCCCCC;margin: 0; padding: 0;} p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="colors(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="left" valign="top" width="150" bgcolor="#FDFFEA"> <div id="colors" class="sell"></div> <select class="sel" id="sel" name="sel"></select> </td> </form> </tr> </table> </div> <br /> <input name="val2" id="val2" type="hidden" value=""> <input name="val3" id="val3" type="hidden" value=""> <input class="val" name="option[<?php echo $option['product_option_id']; ?>]" type="hidden" id="val" value=""> <script type="text/javascript" src="malsup.github.com/jquery.form.js"></script> <script> function colors(what) { $("#sel").empty(); <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); $vls = explode ("|", $sz); ?> if (what==<?php echo $option_value['product_option_value_id']; ?>) { $("#colors").html('<?php foreach ($vls as $vlss) { list($clrs, $szs)=explode("-", $vlss); echo "<img border="1" class="col" id="",$clrs,"" onclick="sizes('",$szs,"'), addcolor('",$clrs,"')" src="",$clrs,".png">"; } ?>') $("#sizes").html(" ") $("#colors").show("slide", {direction: "up"}, 700); $('#val').val(''); } <?php } ?> }; function addcolor(what3) { $("#"+what3).effect("pulsate", { times: 1 }, 700); document.getElementById('val3').value = document.getElementById('val2').value+" "+what3; } function sizes(what2) { $("#sel").empty(); $("#sel").effect("pulsate", { times: 1 }, 700); rr = what2.split(","); for(var i = 0; i < rr.length; i++) $("#sel").append( $('<option value="'+rr+'">'+rr+'</option>')); } </script> <style> .col { border-color: #5D5D5D; margin: 3px; position: relative; } .sel { display: none; margin: 0px; width: 50px; position: relative; } .sell { display: none; margin: 0px; position: relative; } </style> <?php } ?> Остатки опций связанные например с цветами и размерами опенкарт не учитывает, 1с выгружает только те опции, которые есть в остатке. В опенкарте если включить "списывать со склада" то списываться будет только первый(верхний) уровень опции. Ели нужно списывать все варианты, нужно немного переделать код.... Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 2 лютого 2012 Share Опубліковано: 2 лютого 2012 Я 1с импортом не пользуюсь, делаю свой и у меня нужно остатки цвето-размеров учитывать совсем не соображу да и с jquery совсем еще не знаком а делать надо быстро чтото, может друг дугу поможем (если тебе нужен импорт прайса например с остатками и чем тока хошь)...... надо наверное поспать... Надіслати Поділитися на інших сайтах More sharing options... sadko Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 Столкнулся с похожей проблемой. Есть у меня товар. К примеру – пиджак. Этот пиджак бывает размеров: 46, 48, 50, 52, 54. Также, этот пиджак бывает следующих цветов: черный, коричневый, синий. Я создаю группы опций: Размер: 46, 48, 50, 52, 54 Цвет: черный, коричневый, синий Иными словами у меня в принципе может быть 15 вариантов пиджаков – по три цвета каждого размера. НО! На складе у меня есть: - 46 размера - черный, коричневый, синий (итого – 3 шт.) - 48 размера - черный, коричневый (итого – 2 шт.) - 50 размера – черный (итого – 1 шт.) - 52 размера – синий (итого – 1 шт.) - 54 размера – коричневый (итого – 1 шт.) Итого: - вообще синих пиджаков – 2 шт. (46 и 52) - вообще черных пиджаков – 3 шт. (46, 48, 50) - вообще коричневых пиджаков – 2 шт. (46 и 48) В каждой опции ввожу соответственное количество каждого цвета и размера. В товаре у меня становятся доступными два выпадающих списка: размер и цвет пиджака. НО! Из-за того, что оба выпадающих списка доступны, покупатель может «сконструировать» такой пиджак, которого у меня на складе – НЕТ! Например, он выберет – размер 54, а цвет – синий! А у меня то такого на складе нет! Опции размер и цвет – СВЯЗАНЫ! Если я выбираю 54 размер, то у меня в списке ЦВЕТ должен оставаться только один цвет – коричневый. Но на практике есть возможность выбрать все цвета. Вообще в OpenCart как-то получается, что опции какие-то независимые друг от друга, сами по себе. Выходит, что товар конкретного размера и конкретного цвета – не может иметь уникального артикула. Не заводить же как отдельный товар пиджак размера 46 и придавать ему опцию цвета. Потом заводить такой же пиджак, но уже другого размера и т.п. Это как-то неправильно…. Других решений нету? Потому как ваш способ - тоже полумера какая то. Если товаров много, или разного цвета (у меня в магазине одежды - 38 цветов и 5 размеров) - будет расти количество опций под каждый товар. Меняется наличие на складе - нужно редактировать значение. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да я тоже все еще в раздумиях, но мысли такие приходят... Делаем еще одну колонку в таблице бд чтоб в размерах указать цвет данных размеров, тоесть у нас получается опция цветоразмер. Далее создаем две опции. Первая цвета они просто служат для выбора там можно ни остатки не учитывать ничего, а вот вторая опция размеры и тут уже в бд записывается размер-цвет и когда мы выбираем цвет в магазине (опция размер-цвета еще не доступна) делается запрос к бд (аяксом) и выводится только те размеры которым соответствует выбранный цвет и опция цветоразмера становится доступной и кол-во списывается именно с нее. Но незнаю ни аякс не яву не jquery и пока что это для меня сдерживающий фактор, но делать надо кто хочет может присоединятся Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да, в магазе все эти аттрибуты (Количество, Вычитать со склада, Цена, Баллы, Вес) можно присвоить только конкретной опции. вот что пришло в голову: создать сущность Группа опций товара, у которой и будут эти аттрибуты. опции конкретного товара буду добавляться не товару, а этой группе. например товар: пиждак группа: синий_48 (кол-во 10, вычитать "да", цена 500, баллы 0, вес 0.5) опции: цвет синий, размер 48. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 тоже интересный вариант тоже думал о нем (опции сделать как атрибуты), но программинг пока не самая моя сильная сторона (никак не перейду к полноценному ООП) поэтому хочется обойтись без глобальных решений а так временный костылек, но если кто будет браться готов всячески содействовать чем смогу как говорится а также поделюсь собственными модулями и наработками при удачном исходе дела Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 3 лютого 2012 Автор Share Опубліковано: 3 лютого 2012 У меня происходит выбор каждой опции только после выбора предыдущей, а до выбора этой опции последующие скрыты, т.е. выбор происходит лесенкой, по этапно..... (это я к посту о пиджаках) Надіслати Поділитися на інших сайтах More sharing options... 1 month later... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Не получилось реализовать. Секцию с radio закомментировал в product.tpl, вставил код с предыдущей страницы, больше страницы не грузились. Вообще это достаточно логичная функция, может есть готовый модуль? Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Да красивее думаю было бы сразу в админке иметь возможность назначать несколько значений одной опции или как то связывать их по типу атрибутов (тоесть группу) с указанием как бы главной опции но к сожалению мои познания в ООП довольно скудны чтоб реализовать это на нормальном уровне готов закинуть 400-600 рубасов если кто возьмется сделать Надіслати Поділитися на інших сайтах More sharing options... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 spambot Поддерживаю. Готов скинутся. Кто возьмется? Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 1 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
7up Опубліковано: 30 січня 2012 Автор Share Опубліковано: 30 січня 2012 Изучив еще немного jquery понял что все это можно было сделать только на нем :( Получилось сделать даже три связные опции, причем одна из которых например "Цвет" в виде картинок :) Добавил еще эффекты, теперь квадратики с цветами красиво выезжают после выбора фасона и при клике по ним мигают ))))) 2 Надіслати Поділитися на інших сайтах More sharing options...
spambot Опубліковано: 1 лютого 2012 Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибо Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 1 лютого 2012 Автор Share Опубліковано: 1 лютого 2012 7up, друг спасибо тебе за то что поделился наработками мне нужно как говорится "еще на вчера", но как говорят: "сказал А говори и Б")) шучу конечно, как говорится: "в каждой шутке... Если честно, поделись пожалуйста jquery решением можно без мигающих даже цветов, чтоб просто цвет размер и остаток на складе был связан ооочень надаа, друг спасибоНу дык смысл в коде выше.... работающий пока не довел до ума, стыдно выкладывать :( переменные по идиотски называются, это типа черновиковый вариант, но если вникнуть смысл понятен, сложного ничего нет. При каждом переходе на следующую опцию отрезается часть значений выбранных в первой. Вот такой вот код: <?php if ($option['type'] == 'radio') { $o=1;?> <div id="option-<?php echo $option['product_option_id']; ?>" class="option"> <table border="0" cellpadding="7" cellspacing="1"> <tr valign="top"> <td nowrap bgcolor="#FDFFEA"> <?php if ($option['required']) { ?> <span class="required">*</span> <?php } ?> <b><?php list($name1, $name2, $name3) = explode(":", $option['name']); echo $name1,", ", $name2,", ", $name3; ?>:</b><br /> <style type="text/css"> p:hover {background-color: #CCCCCC;margin: 0; padding: 0;} p:selected { background-color: #BBFFBB; margin: 0; padding: 0; } p { margin: 0; padding: 0; } </style> <form name="calc"> <?php foreach ($option['option_value'] as $option_value) { ?> <?php list($n, $s) = explode(":", $option_value['name']); ?> <p><input type="radio" id="<?php echo $option_value['product_option_value_id']; ?>" name="<?php echo $name1; ?>" value="<?php echo $option_value['product_option_value_id']; ?>" onclick="colors(this.value), document.getElementById('val2').value='<?php echo $option_value['product_option_value_id'],"|"; echo $n; ?>';"><label for="<?php echo $option_value['product_option_value_id']; ?>"><?php echo $n; ?> <?php if ($option_value['price']) { ?> (<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>) <?php } ?> </label></p> <?php } ?> </td> <td align="left" valign="top" width="150" bgcolor="#FDFFEA"> <div id="colors" class="sell"></div> <select class="sel" id="sel" name="sel"></select> </td> </form> </tr> </table> </div> <br /> <input name="val2" id="val2" type="hidden" value=""> <input name="val3" id="val3" type="hidden" value=""> <input class="val" name="option[<?php echo $option['product_option_id']; ?>]" type="hidden" id="val" value=""> <script type="text/javascript" src="malsup.github.com/jquery.form.js"></script> <script> function colors(what) { $("#sel").empty(); <?php foreach ($option['option_value'] as $option_value) { list($nmm, $sz) = explode(":", $option_value['name']); $vls = explode ("|", $sz); ?> if (what==<?php echo $option_value['product_option_value_id']; ?>) { $("#colors").html('<?php foreach ($vls as $vlss) { list($clrs, $szs)=explode("-", $vlss); echo "<img border="1" class="col" id="",$clrs,"" onclick="sizes('",$szs,"'), addcolor('",$clrs,"')" src="",$clrs,".png">"; } ?>') $("#sizes").html(" ") $("#colors").show("slide", {direction: "up"}, 700); $('#val').val(''); } <?php } ?> }; function addcolor(what3) { $("#"+what3).effect("pulsate", { times: 1 }, 700); document.getElementById('val3').value = document.getElementById('val2').value+" "+what3; } function sizes(what2) { $("#sel").empty(); $("#sel").effect("pulsate", { times: 1 }, 700); rr = what2.split(","); for(var i = 0; i < rr.length; i++) $("#sel").append( $('<option value="'+rr+'">'+rr+'</option>')); } </script> <style> .col { border-color: #5D5D5D; margin: 3px; position: relative; } .sel { display: none; margin: 0px; width: 50px; position: relative; } .sell { display: none; margin: 0px; position: relative; } </style> <?php } ?> Остатки опций связанные например с цветами и размерами опенкарт не учитывает, 1с выгружает только те опции, которые есть в остатке. В опенкарте если включить "списывать со склада" то списываться будет только первый(верхний) уровень опции. Ели нужно списывать все варианты, нужно немного переделать код.... Надіслати Поділитися на інших сайтах More sharing options...
spambot Опубліковано: 2 лютого 2012 Share Опубліковано: 2 лютого 2012 Я 1с импортом не пользуюсь, делаю свой и у меня нужно остатки цвето-размеров учитывать совсем не соображу да и с jquery совсем еще не знаком а делать надо быстро чтото, может друг дугу поможем (если тебе нужен импорт прайса например с остатками и чем тока хошь)...... надо наверное поспать... Надіслати Поділитися на інших сайтах More sharing options...
sadko Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 Столкнулся с похожей проблемой. Есть у меня товар. К примеру – пиджак. Этот пиджак бывает размеров: 46, 48, 50, 52, 54. Также, этот пиджак бывает следующих цветов: черный, коричневый, синий. Я создаю группы опций: Размер: 46, 48, 50, 52, 54 Цвет: черный, коричневый, синий Иными словами у меня в принципе может быть 15 вариантов пиджаков – по три цвета каждого размера. НО! На складе у меня есть: - 46 размера - черный, коричневый, синий (итого – 3 шт.) - 48 размера - черный, коричневый (итого – 2 шт.) - 50 размера – черный (итого – 1 шт.) - 52 размера – синий (итого – 1 шт.) - 54 размера – коричневый (итого – 1 шт.) Итого: - вообще синих пиджаков – 2 шт. (46 и 52) - вообще черных пиджаков – 3 шт. (46, 48, 50) - вообще коричневых пиджаков – 2 шт. (46 и 48) В каждой опции ввожу соответственное количество каждого цвета и размера. В товаре у меня становятся доступными два выпадающих списка: размер и цвет пиджака. НО! Из-за того, что оба выпадающих списка доступны, покупатель может «сконструировать» такой пиджак, которого у меня на складе – НЕТ! Например, он выберет – размер 54, а цвет – синий! А у меня то такого на складе нет! Опции размер и цвет – СВЯЗАНЫ! Если я выбираю 54 размер, то у меня в списке ЦВЕТ должен оставаться только один цвет – коричневый. Но на практике есть возможность выбрать все цвета. Вообще в OpenCart как-то получается, что опции какие-то независимые друг от друга, сами по себе. Выходит, что товар конкретного размера и конкретного цвета – не может иметь уникального артикула. Не заводить же как отдельный товар пиджак размера 46 и придавать ему опцию цвета. Потом заводить такой же пиджак, но уже другого размера и т.п. Это как-то неправильно…. Других решений нету? Потому как ваш способ - тоже полумера какая то. Если товаров много, или разного цвета (у меня в магазине одежды - 38 цветов и 5 размеров) - будет расти количество опций под каждый товар. Меняется наличие на складе - нужно редактировать значение. Надіслати Поділитися на інших сайтах More sharing options...
spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да я тоже все еще в раздумиях, но мысли такие приходят... Делаем еще одну колонку в таблице бд чтоб в размерах указать цвет данных размеров, тоесть у нас получается опция цветоразмер. Далее создаем две опции. Первая цвета они просто служат для выбора там можно ни остатки не учитывать ничего, а вот вторая опция размеры и тут уже в бд записывается размер-цвет и когда мы выбираем цвет в магазине (опция размер-цвета еще не доступна) делается запрос к бд (аяксом) и выводится только те размеры которым соответствует выбранный цвет и опция цветоразмера становится доступной и кол-во списывается именно с нее. Но незнаю ни аякс не яву не jquery и пока что это для меня сдерживающий фактор, но делать надо кто хочет может присоединятся Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 да, в магазе все эти аттрибуты (Количество, Вычитать со склада, Цена, Баллы, Вес) можно присвоить только конкретной опции. вот что пришло в голову: создать сущность Группа опций товара, у которой и будут эти аттрибуты. опции конкретного товара буду добавляться не товару, а этой группе. например товар: пиждак группа: синий_48 (кол-во 10, вычитать "да", цена 500, баллы 0, вес 0.5) опции: цвет синий, размер 48. Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 тоже интересный вариант тоже думал о нем (опции сделать как атрибуты), но программинг пока не самая моя сильная сторона (никак не перейду к полноценному ООП) поэтому хочется обойтись без глобальных решений а так временный костылек, но если кто будет браться готов всячески содействовать чем смогу как говорится а также поделюсь собственными модулями и наработками при удачном исходе дела Надіслати Поділитися на інших сайтах More sharing options... 7up Опубліковано: 3 лютого 2012 Автор Share Опубліковано: 3 лютого 2012 У меня происходит выбор каждой опции только после выбора предыдущей, а до выбора этой опции последующие скрыты, т.е. выбор происходит лесенкой, по этапно..... (это я к посту о пиджаках) Надіслати Поділитися на інших сайтах More sharing options... 1 month later... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Не получилось реализовать. Секцию с radio закомментировал в product.tpl, вставил код с предыдущей страницы, больше страницы не грузились. Вообще это достаточно логичная функция, может есть готовый модуль? Надіслати Поділитися на інших сайтах More sharing options... spambot Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Да красивее думаю было бы сразу в админке иметь возможность назначать несколько значений одной опции или как то связывать их по типу атрибутов (тоесть группу) с указанием как бы главной опции но к сожалению мои познания в ООП довольно скудны чтоб реализовать это на нормальном уровне готов закинуть 400-600 рубасов если кто возьмется сделать Надіслати Поділитися на інших сайтах More sharing options... mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 spambot Поддерживаю. Готов скинутся. Кто возьмется? Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 Вперед Сторінка 1 з 5 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
spambot Опубліковано: 3 лютого 2012 Share Опубліковано: 3 лютого 2012 тоже интересный вариант тоже думал о нем (опции сделать как атрибуты), но программинг пока не самая моя сильная сторона (никак не перейду к полноценному ООП) поэтому хочется обойтись без глобальных решений а так временный костылек, но если кто будет браться готов всячески содействовать чем смогу как говорится а также поделюсь собственными модулями и наработками при удачном исходе дела Надіслати Поділитися на інших сайтах More sharing options...
7up Опубліковано: 3 лютого 2012 Автор Share Опубліковано: 3 лютого 2012 У меня происходит выбор каждой опции только после выбора предыдущей, а до выбора этой опции последующие скрыты, т.е. выбор происходит лесенкой, по этапно..... (это я к посту о пиджаках) Надіслати Поділитися на інших сайтах More sharing options...
mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Не получилось реализовать. Секцию с radio закомментировал в product.tpl, вставил код с предыдущей страницы, больше страницы не грузились. Вообще это достаточно логичная функция, может есть готовый модуль? Надіслати Поділитися на інших сайтах More sharing options...
spambot Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 Да красивее думаю было бы сразу в админке иметь возможность назначать несколько значений одной опции или как то связывать их по типу атрибутов (тоесть группу) с указанием как бы главной опции но к сожалению мои познания в ООП довольно скудны чтоб реализовать это на нормальном уровне готов закинуть 400-600 рубасов если кто возьмется сделать Надіслати Поділитися на інших сайтах More sharing options...
mig21 Опубліковано: 16 березня 2012 Share Опубліковано: 16 березня 2012 spambot Поддерживаю. Готов скинутся. Кто возьмется? Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts