Плагин "Минимальный заказ" и всплывающее окно при двух артикулах товара


Здравствуйте, Владимир!

Стоит такой плагин "Минимальный заказ". Включил для артикула товара минимальное количество 12 и кратность 12. В карточке товара работает всё как надо: при выборе этого артикула сразу меняется количество на минимальное 12, а при увеличение делается кратным 12-ти.
Но вот в категории так не работает: когда при нажатии кнопки в корзину выходит окно с выбором артикула и выбираешь нужный, то количество не меняет здесь на кратное и минимальное 12-ти, и в корзине плавающей показывает, что попадает 1 шт и количество за 1 шт. Но только после захода в корзину кратность пересчитывается и плавающая корзина тогда тоже.

Обратился к разработчику плагина с вопросом как так. Он ответил: "На странице товара плагин работает через хук frontend_product.cart скорее всего во всплывающем окне данный хук отсутствует".

Хотел у вас уточнить так ли это? И что нужно сделать, чтобы стало также работать как в карточке товара?

Тестовый товар вот этот. Категория, в которой он находится здесь.

6 ответов
  • Владимир Сергеев
    Разработчик
    Решение
    22 июня 2017 12:27

    Да, это так.
    Найдите в файле product.cart.html код:

    {if $wa->get('cart') && !empty($theme_settings.qbtnPlugin)}
    	<div style="margin-bottom: 10px;">
            {shopQuickorderPlugin::quickorderForm($product)}
        </div>
    {/if}
    
    </div>{* / add2cart*}

    И перед </div>{* / add2cart*} добавьте код:

    {if $wa->get('cart')}
        <!-- plugin hook: 'frontend_product.cart' -->
        {* @event frontend_product.%plugin_id%.cart *}
        {foreach $frontend_product as $_}{$_.cart}{/foreach}
    {/if}

    Если у автора плагина есть "ручной" хук (только для вывода его плагина) то лучше использовать его.

  • Роман
    Решение
    23 июня 2017 09:30

    Большое спасибо Владимир! Но добавление хука frontend_product.cart по вашей инструкции только ухудшает ситуацию и не решает первоначальную проблему, и к тому же начинают лезть во всплывающее окно другие плагины и не корректно работать.

    Так как на странице товара в блоке "Купить" все плагины срабатывают корректно, а проблема только в категориях, то возможно ли сделать так, чтобы в категории (списках) товаров при нажатие кнопки "В корзину" (для товаров с двумя артикулами) открывалось окно с содержанием Блока "Купить" из страницы товара?

  • Владимир Сергеев
    Разработчик
    Решение
    23 июня 2017 13:00

    Роман, так во всплывающее окно и так идёт инфа из блока покупки.
    Просто на странице товара хуки плагинов расположены в другом месте.
    Я поэтому и написал про "ручной" хук плагина.
    Т.к. хук frontend_product.cart выводит все плагины без разбора.
    Нужен именно ручной или именной хук для вывода именно этого плагина.

  • Роман
    Решение
    23 июня 2017 13:03

    К сожалению, разработчик плагина сказал, что нет "ручного" хука в плагине. Возможно ли внесение изменений в код темы дизайна так, чтобы во всплывающем окне не выводились другие плагины?

    • Владимир Сергеев
      Разработчик
      Решение
      23 июня 2017 15:36

      В product.cart.html перед </div>{* / purchase*} попробуйте добавить этот код:

      {if $wa->get('cart')}    
          <!-- plugin hook: 'frontend_product.cart' -->
          {* @event frontend_product.%plugin_id%.cart *}
          {foreach $frontend_product as $plugin_name => $_}
          	{if $plugin_name == 'имя-плагина'}
      	            {$_.cart}
              {/if}
          {/foreach}
      {/if}

      Где имя-плагина замените на его id.

      • Владимир Сергеев
        Разработчик
        Решение
        23 июня 2017 17:19

        Вернее имя плагина надо заменить на id-plugin.
        Например если id плагина – hooks, то имя плагина надо заменить на hooks-plugin

        • Роман
          Решение
          26 июня 2017 10:11

          Нашёл в файле product.cart.html код:

          {if $wa->get('cart') && !empty($theme_settings.qbtnPlugin)}
          	<div style="margin-bottom: 10px;">
                  {shopQuickorderPlugin::quickorderForm($product)}
              </div>
          {/if}
          
          </div>{* / add2cart*}

          И перед </div>{* / add2cart*} добавил код:

          {if $wa->get('cart')}
              <!-- plugin hook: 'frontend_product.cart' -->
              {* @event frontend_product.%plugin_id%.cart *}
              {foreach $frontend_product as $_}{$_.cart}{/foreach}
          {/if}


          И в product.cart.html перед </div>{* / purchase*} добавил этот код:

          {if $wa->get('cart')}     
              <!-- plugin hook: 'frontend_product.cart' -->
              {* @event frontend_product.%plugin_id%.cart *}
              {foreach $frontend_product as $plugin_name => $_}
              	{if $plugin_name == 'wholesale-plugin'}
          	     {$_.cart}
                  {/if}
              {/foreach}
          {/if}

          И ничего, к сожалению, не изменилось. Во всплывающем окне плагин wholesale не срабатывает, как он это делает на странице товара, а также лезут другие плагины и не корректно срабатывают, например, плагин bonuses начисляет бонусы неверно; плагин arrived выводится при наличие товара, а должен при отсутствии товара.

          • Владимир Сергеев
            Разработчик
            Решение
            26 июня 2017 10:26

            И перед </div>{* / add2cart*} добавил код:

            {if $wa->get('cart')}
                <!-- plugin hook: 'frontend_product.cart' -->
                {* @event frontend_product.%plugin_id%.cart *}
                {foreach $frontend_product as $_}{$_.cart}{/foreach}
            {/if}

            Это лишнее.. Этот код выводит все плагины..

            • Роман
              Решение
              26 июня 2017 10:36

              Убрал лишнее. Плагин bonuses перестал выводиться. Плагин arrived появляется при первом открытие всплывающего окна, а потом исчезает, думаю это глюк самого плагина. На у сам плагин wholesale так и не срабатывает. Кстати, заметил в консоли браузера при всплывающем окне выводится сообщение:

              Указан неверный селектор "form#cart-form"

              Это от плагина wholesale, но в его настройках нет этого параметра, только можно поменять селектор для кнопки Оформить на "form .cart-total". Разработчик плагина писал в инструкции, что эти селекторы в разных тема разные. Может в этом проблема?

              • Владимир Сергеев
                Разработчик
                Решение
                26 июня 2017 10:42

                Может быть.
                При открытии диалогового окна (когда нажимаешь на кнопку купить и есть несколько артикулов) и при открытии окна быстрого просмотра у формы в появившемся окне стоит селектор: form#cart-form-dialog

  • Владимир Сергеев
    Разработчик
    Решение
    23 июня 2017 13:04

    Может забить на этот плагин? =)
    Удалите мои предыдущие рекомендации – отключите плагины во всплывающем окне.

    Потом откройте файлы темы для приложения Магазин и найдите файл product.cart.html
    В этом файле найдите строки:

    <span class="qty">
        × <input name="quantity" {if $wa->isMobile()}inputmode="numeric" pattern="[0-9]*"{/if}value="1" type="number" min="1" {if !$wa->shop->settings('ignore_stock_count') && $product.count}max="{$product.count}"{/if}>
    </span>

    И замените их на эти:

    {if !$wa->get('cart')}			
    	<span class="qty">
    	    × <input name="quantity" {if $wa->isMobile()}inputmode="numeric" pattern="[0-9]*"{/if}value="1" type="number" min="1" {if !$wa->shop->settings('ignore_stock_count') && $product.count}max="{$product.count}"{/if}>
    	</span>
    {else}
    	<span class="qty">
    		× <input name="quantity" {if $wa->isMobile()}inputmode="numeric" pattern="[0-9]*"{/if}value="12" type="number" min="12" step="12" {if !$wa->shop->settings('ignore_stock_count') && $product.count}max="{$product.count}"{/if}>
    	</span>
    {/if}

    Где 12 замените на своё число кратности.
    Первый фрагмент кода будет выводиться на странице товара, второй – во всплывающем окне.

    • Роман
      Решение
      23 июня 2017 13:08

      Спасибо! Сейчас попробую этот вариант.

    • Владимир Сергеев
      Разработчик
      Решение
      23 июня 2017 13:12

      Подождите!
      Лучше используйте этот код.
      Там логика поменяна наоборот:

      {if $wa->get('cart')}			
      	<span class="qty">
      		× <input name="quantity" {if $wa->isMobile()}inputmode="numeric" pattern="[0-9]*"{/if}value="12" type="number" min="12" step="12" {if !$wa->shop->settings('ignore_stock_count') && $product.count}max="{$product.count}"{/if}>
      	</span>
      {else}
      	<span class="qty">
      		× <input name="quantity" {if $wa->isMobile()}inputmode="numeric" pattern="[0-9]*"{/if}value="1" type="number" min="1" {if !$wa->shop->settings('ignore_stock_count') && $product.count}max="{$product.count}"{/if}>
      	</span>
      {/if}
    • Роман
      Решение
      23 июня 2017 13:44

      Вставил ваш код как есть. У обоих артикулов выводится: на странице товара количество 1, а в категории во всплывающем окне количество 12. Не есть правильно.

      Нужно чтобы одинаково работало и во всплывающем окне и на странице товара например так: первый артикул как обычно минимально 1 и кратно 1, а второй артикул минимально 12 и кратно 12.

      Так можно?

      • Владимир Сергеев
        Разработчик
        Решение
        23 июня 2017 13:59
        Вставил ваш код как есть. У обоих артикулов выводится: на странице товара количество 1, а в категории во всплывающем окне количество 12. Не есть правильно.

        Так на странице товара плагин же должен это дело обрабатывать.
        Поэтому я и поставил условие, что если во всплывающем окне, то 12, если на странице товара, то как обычно..

        Нужно чтобы одинаково работало и во всплывающем окне и на странице товара например так: первый артикул как обычно минимально 1 и кратно 1, а второй артикул минимально 12 и кратно 12.

        Можно сделать, чтобы и там и там было одинаково. Но вот, чтобы кол-во от артикулов изменялось сделать нельзя к сожалению. =(

        • Роман
          Решение
          23 июня 2017 14:15

          Жалко. Тогда без плагина никак. Буду с его разработчиками договариваться тогда.

  • Роман
    Решение
    23 июня 2017 13:05

    Разработчик другого плагина даже написал так:

    " Тут есть недочет разработчика этой темы. При открытии этого окна ему необходимо сделать имитацию клика по уже активному артикулу. Иначе не будет работать и штатный функционал. Например если вы по умолчанию выберите активным второй артикул и присвоите ему персональное фото, то работать это не будет."

    • Владимир Сергеев
      Разработчик
      Решение
      23 июня 2017 13:08

      Тема старовата чуть-чуть! Я был молод! =)
      Если сделать иммитацию клика по артикулу, то вы получите точно такое же окно, как и диалог с выбором артикулов.
      Там не будет ни описания товара, ни его галереи.

      В новых темах я уже сделал по другому. Но пока обновления этой темы не запланировано.

      • Роман
        Решение
        23 июня 2017 13:14

        Действительно старовата уже, но меня полностью удовлетворяет по функционалу. Смотрел ваши новые темы, но мне в них не хватает то одного, то другого. И у других разработчиков тоже всё не то. Эта тема самая подходящая для меня. Хотя я бы с удовольствием обновил, т.к. дизайн уже староват и приелся.

Добавить ответ
Чтобы добавить комментарий, зарегистрируйтесь или войдите
Мы получаем и обрабатываем персональные данные посетителей нашего сайта в соответствии с официальной политикой.
Если Вы продолжите использовать сайт, мы будем считать, что Вас это устраивает.
Подписывайтесь и получайте скидки!

Узнавайте первым о скидках и специальных предложениях!