Как сделать услугу для товара стандартно включенной?

Есть необходимость сделать одну услугу стандартно уже выбранной, а покупатель если хочет, может от нее отказаться


Пытался в файле product.cart.html поставить в нужном месте checked, при загрузке страницы с товаром, услуга уже выбрана, но стоимость услуги не приплюсовалась к цене.

Так вот, как сделать чтоб услуга автоматически плюсовалась к цене товара, или как другим способом сделать услугу автоматом включенную?

11 ответов

  • 2
    Леонид Вакуленко 18 февраля 2015 09:21 #

    В JSe внутри product.cart.html, после new Product(...); вставьте вот такое:

    $('.services').change();

    Это заставит его пересчитать цену.

    • +1
      Koribo Koribo 18 февраля 2015 10:33 #

      $(function () {

      new Product('#cart-form{if $wa->get('cart')}-dialog{/if}', {

      currency: {json_encode($currency_info)}

      {if count($product.skus) > 1 or $product.sku_type}

      ,services: {json_encode($sku_services)}

      {/if}

      {if $product.sku_type}

      ,features: {json_encode($sku_features_selectable)}

      {/if}

      });

      $('.services').change();

      });


      Вот так? не работает:((


      • +1
        Леонид Вакуленко Леонид Вакуленко 18 февраля 2015 10:40 #

        Вроде должно. Я пробую у себя на теме default, срабатывает.

        Могу предположить, что у вас в теме нет блока div.services

        {if $services}
        <div class="services">
        {foreach $services as $s}

        Или есть какая-то ошибка JS, смотрите в консоли.

        При клике по чекбоксам-то, кстати, сумма пересчитывается? Если нет, то точно что-то не так с JS'ом.

  • 1
    Koribo 18 февраля 2015 10:31 #
    $(function () {
    new Product('#cart-form{if $wa->get('cart')}-dialog{/if}', {
    currency: {json_encode($currency_info)}
    {if count($product.skus) > 1 or $product.sku_type}
    ,services: {json_encode($sku_services)}
    {/if}
    {if $product.sku_type}
    ,features: {json_encode($sku_features_selectable)}
    {/if}
    });
    $('.services').change();
    });


    Вот так? не работает:(

  • 1
    Koribo 18 февраля 2015 13:15 #

    Магазин установил неделю назад, шаблон тоже default. Блок div.services есть. Файл product.cart.html сбросил к оригинальной версии, JS вобще не трогал. При клике по чекбоксам все нормаль считается.




    • +1
      Леонид Вакуленко Леонид Вакуленко 19 февраля 2015 03:28 #

      А так? На том, что возвращает new Product(...) выполнить метод updatePrice():

      var p = new Product(...);
      p.updatePrice();

      • +1
        Koribo Koribo 19 февраля 2015 04:03 #

        Теперь работает, большое спасибо

      • +1
        Koribo Koribo 19 февраля 2015 04:09 #

        А можно сделать чтоб также приплюсовывало цены в категории, в файле list-thumbs.html ?

        • +2
          Леонид Вакуленко Леонид Вакуленко 19 февраля 2015 04:21 #

          Уффф... Одной строчкой не решается точно))

          Навскидку план примерно такой.

          • В шаблоне list-thumbs до цикла по $products получить список услуг с ценами. Видимо, с помощью самописного плагина или хэлпера.
          • В цикле по $products добавить к $p.price стоимость применимых услуг. Убедиться, что нет косяков с разными комбинациями валют: продукта, услуги, фронтэнда и валюты магазина по умолчанию.
          • В форме добавления в корзину дополнительно передавать hidden-поля, описывающие добавленную услугу. Они такие же, как на странице одного продукта.
      • +2
        szaika@itotvet.ru szaika@itotvet.ru 13 апреля 2015 11:08 #

        Можно ещё обойтись одним jQuery:

        $(document).ready(function () {
        $('input[name="services[]"]').trigger('click');
        });


        • +1
          seoVmig seoVmig Эксперт 30 октября 2017 17:43 #

          Она работает, только вот при обновление страницы делает противоположный эффект, снова имитацию клика, но только с обратным эффектом))) интересно было узнать как всё таки сделать услугу по умолчанию обязательной к покупке ?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите