Множественный выбор параметра товара в Минимагазине NetCat

По-умолчанию Минимагазин NetCat предлагает для каждого уникального объекта генерировать отдельную кнопку "положить в корзину". То есть, скажем, если существует несколько модификаций товара, отличающихся только размером (ну, или цветом), то в полном выводе объекта нам придется генерировать столько кнопок "положить в корзину", сколько вариантов размеров существует. Например, 10. Данный рецепт позволяет обойти это ограничение: при выборе размера из выпадающего списка с помощью AJAX-запроса без перезагрузки страницы генерируется уникальная кнопка "положить в Корзину".

Версия NetCat: любая 4.x.x с модулем "Минимагазин"
Статус: стабильный, но инструкцию писал "программист" в плохом смысле слова. Куча кода и ничего не понятно.

В чем суть? (описание от автора решения, написана по памяти в 2015 году)

Положим у нас есть минимагазин, а в нем компонент "Товар: ботинки" и мы хотим сделать возможность выбирать ботинки разного размера. Делается это примерно так:

  1. создаем список Size, в нем все возможные размеры обуви
  2. создаем поле Size, множественный выбор, связываем со списком
  3. в выводе объекта генерим список размеров данного ботинка
    • теперь можно выбирать размеры, которые есть у данного конкретного ботинка. Осталась одна проблема: в минимагазине можно положить в корзину все, что угодно, у чего есть имя, цена и URL. Но не размер. Обойдем это посредством генерации кнопки ajax'ом. Для этого:
  4. создаем шаблон компонента, который возвращает "код кнопки", получив ее имя, цену и URL из REQUEST
  5. на выпадающий список с размерами навешиваем скрипт, который AJAX'ом отправляет на созданный только что шаблон модифицированное имя объекта в котором в явном виде фигурирует размер
  6. полученный в ответ код вписываем в кнопку. Mission complete!

Инструкция по установке (написана другим программистом в стиле "вот вам куча кода и я не хочу думать о том, чтобы хоть что-то было понятно и уж тем более описывать это литературно и с огоньком")

Инструкция приведена для полного отображения объекта.

  • В полном отображении объекта пишем следующий код:
<script>
var size= \$('select.selectBlock option:selected').text();
AjaxLoad(size);
\$('select.selectBlock').change(function(){
    var size= \$('select.selectBlock option:selected').text();
    AjaxLoad(size);
});
function AjaxLoad(size){
$.post(
    '$subLink?nc_ctpl=187',
    {
        name: '$f_Name (размер ' + size + ')',
        price: $f_Price,
        url: '$fullLink',
        isNaked: 1
    },
    function(html){
        $('#mshop').html(html);
    });
}
</script>
<div id='mshop'></div>

где size, в нашем случае - это поле типа "список", в котором представлены варианты размеров одежды.

  • Далее создаем шаблон текущего компонента и в его системных настройках пишем:
 if(isset($_REQUEST[name])){
    echo $nc_minishop->show_put_button($_REQUEST['name'], $_REQUEST['price'], $_REQUEST['url']);
}
  • Теперь вернемся к ранее написанному коду. Найдите строку '$subLink?nc_ctpl=187' и вместо 187 подставьте номер своего, только что созданного шаблона.
  • Удачной установки! :)

Блог

Что с Мастерхостом? Когда заработает?!

Этот вопрос всё чаще задают в Интернете начиная примерно с 12:00 дня 2 марта. А всё потому, что он накрылся!

далее

Автоматизированная Система Управления Бэкапами

Автоматизированная Система Управления Бэкапами позволяет добиться полного контроля над резервными копиями сайтов внутри инфраструктуры веб-студии. Если вы поддерживаете десятки сайтов на разных хостингах, без подобной системы вы не можете быть на 100% уверены в том, что каждый из них был корректно зарезервирован прошлой ночью.

далее

WebSocket: интеграция с NetCat

Хотите добавить на сайт под управлением CMS NetCat поддержку технологии WebSocket? Обращайтесь к нам! Посетители сайта смогут получать мгновенные уведомления о событиях сайта без обращений к серверу и перезагрузок страниц. Превратите свой сайт в интерактивную площадку, работающую в реальном времени!

далее

NetCat: техническая поддержка и доработка сайтов

Мы работаем с CMS NetCat уже больше 10 лет. У нас большой опыт и ответственный подход к делу.

далее

Весь блог тут