Множественный выбор параметра товара в Минимагазине 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 подставьте номер своего, только что созданного шаблона.
  • Удачной установки! :)

Блог

Как отресайзить картинки батчем?

Все фотографии, которые вы собираетесь отресайзить, должны быть в одной директории, скажем «uploads». Внутри нее можно сохранить любую структуру директорий. Мы научимся создавать копию этой директории, внутри которой все картинки будут отресайзены, причем только в сторону уменьшения разрешения.

далее

Tilda Module: интеграция NetCat с Tilda.cc

Представляем нашу новую разработку, модуль интеграции CMS NetCat с платформой Tilda.cc. Модуль дает возможностью полуавтоматически размещать классные лендинги прямо в структуре вашего сайта!

далее

Как оптимально заархивировать файлы, чтобы распаковать их средствами ISPmanager?

В определенных случаях файлы выгоднее заливать на веб-сервер в виде архива. Во-первых, если данные хорошо сжимаются, или же просто файлов очень много, это сократит время заливки. Во-вторых, в любом случае это обезопасит данные от случайного повреждения, так как при распаковке архива происходит проверка его целостности с помощью контрольной суммы (CRC). Однако, не вполне понятно, какой формат архива и тип сжатия выбирать? Мы провели небольшое экспериментальное исследование на эту тему.

далее

Как расшифровать бэкапы, зашифрованные ISPmanager?

В ISPmanager версии 5.52.0 и старше, реализована новая система резервного копирования, построенная на основе некоей ISPtar. И работает она... своеобразно. Попробуем разобраться, как именно.

далее

Весь блог тут