Опубликовано: 8 декабря 2015

Цена = 0 и вывести текст "Цену уточняйте" Есть решение

Приветствую!

У меня много товаров без цены, но их можно положить в корзину.

Цена = 0 как-то не логично, нашел вот такую тему

https://support.webasyst.ru/forum/2053/yesli-tsena-tovara-0-vyvesti-po-zaprosu/

Сумел заменить код, чтобы это работало в списках и на витрине, а также в сравнении.

Не подскажите в каких шаблонах и какой код поменять чтобы то же самое было на витрине в "быстром просмотре", карточке товара и корзине.

Комментарии (6)

  • Решение
    Тирон Александр 8 декабря 2015 15:40 #

    Попробуйте заменить строку в файле product.cart.html:

    {shop_currency_html($product.price)}

    на:

    {if $product.price != "0"}
    {shop_currency_html($product.price)}
    {else}
    По запросу
    {/if}
    
    1
    • Николай Каплин Николай Каплин 8 декабря 2015 15:55 #

      Ага. Теперь в быстром просмотре и в карточке товара вместо цены нужная надпись. Но во всплывающей мини-корзине и в корзине пока нолик :) Спасибо, может кто знает как в корзине решить.

      1
      • Тирон Александр Тирон Александр 18 декабря 2015 15:36 #

        В файле desktop.pane.html строка:

        {wa_currency_html($item.price, $wa->shop->currency())}

        меняем на строку:

        {if $item.price != "0"}
        {wa_currency_html($item.price, $wa->shop->currency())}
        {else}
        По запросу
        {/if}
        2
  • Николай Каплин 18 декабря 2015 15:58 #

    Да, так уже получше. По крайней мере во всплывающей в футере мини-корзине уже видно что цена по запросу, хотя все еще присутствует ниже цена = 0. Но оно понятно, что корзина считает сумму и писать уже в самой корзине а затем на последнем шаге оформления что цена по запросу это уже избыточные навороты. В условиях не стабильных экономик и проблем с национальными валютами наверное пора вводить опцию на уровне всей корзины. Когда цена указана как ноль, выводить вместо цены какой-то текст на протяжении всего оформления заказа. У нас в магазине цена = 0 означает не то что в основном функционале, то есть "товар под заказ", а то что товар есть но цену озвучит менеджер по телефону так как много факторов влияют на формирование цены, а управлять этим из админки технически не возможно в данном случае.

    1
    • Тирон Александр Тирон Александр 18 декабря 2015 16:08 #

      В файле desktop.pane.html замените строку:

      [`Total amount (with discount)`]<span class="bold cart-total">{wa_currency_html($cart_total, $wa->shop->currency())}</span>

      строкой:

      {if $cart_total > 0}
      [`Total amount (with discount)`]<span class="bold cart-total">{wa_currency_html($cart_total, $wa->shop->currency())}</span>
      {else}
      Тут желаемый текст
      {/if}


      так же сделайте и для строки:

      <span class="cart-total">{wa_currency_html($cart_total, $wa->shop->currency())}</span>

      заменив ее на строки:

      <span class="cart-total">
      {if $cart_total > 0}
      {wa_currency_html($cart_total, $wa->shop->currency())}
      {else}
      тут желаемый текст
      {/if}
      </span>


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

      1
  • Владимир Юрьевич Шпак 18 декабря 2015 16:14 #

    Поддерживаю, болезненый вопрос и у меня. Иногда забываю выставить цену.

    Можно скомпановать вышесказанное и упорядочить, а то уже непонятно , что и куда.

    1
    • Николай Каплин Николай Каплин 18 декабря 2015 16:22 #

      Ну да это костыли и довольно корявые, хотя лучше так чем никак.

      Логика работы этого решения хромает. Если я допустим сначала добавил товар с ценой, а следом за ним товар с ценой = 0 то во всплывающей корзине мы видим Цена = 0, а не надпись. А вот после F5 (рефреша страницы) все показывается корректно.

      То есть беглые правки решают часть проблемы чтобы клиент не придирался что по факту магазин продал товар без цены. :)

      1
      • Тирон Александр Тирон Александр 18 декабря 2015 16:32 #

        Что бы все заработало как надо - нужно проработать вопрос полностью. То как вы на данный момент используете приложение Магазин не является его стандартным поведением.

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

        2
        • Николай Каплин Николай Каплин 18 декабря 2015 16:36 #

          Это понятно, что для нулевой цены есть хорошая опция "под заказ" которая отрабатывает на 100%. Но сделана она как раз для таких случаев, о котором пишет здесь же Владимир Юрьевич Шпак

          В нашем случае думаю заморачиваться не будем пока так как работы с корзиной наиболее дорогостоящие. Вам спасибо за помощь. Отличная поддержка авторов темы оформления.

          1
          • Тирон Александр Тирон Александр 18 декабря 2015 16:47 #

            Для решения момента добавления товара в корзину в файлах:

            product.js, product.min.js, profitbuy.shop.js, profitbuy.shop.min.js

            замените строку:

            cart_total.html(response.data.total);

            строкой:

            if (parseInt(response.data.total, 10) > 0) {
            cart_total.html(response.data.total);
            } else {
            cart_total.html('Тут нужный текст');
            }

            *в каждом файле таких замен следует сделать две


            1
  • Тирон Александр 18 декабря 2015 16:52 #

    Для решения момента добавления товара в корзину(сумма в корзине) в файлах:

    product.js, product.min.js, profitbuy.shop.js, profitbuy.shop.min.js

    замените строку:

    cart_total.html(response.data.total);

    строкой:

    if (parseInt(response.data.total, 10) > 0) {
    cart_total.html(response.data.total);
    } else {
    cart_total.html('Тут нужный текст');
    }

    *в каждом файле таких замен следует сделать две

    1
  • Тирон Александр 18 декабря 2015 17:01 #

    Для самих товаров в плавающей корзине можно попробовать следующий реверанс:

    1) В файле list-thumbs.html заменить строку:

    data-price = "{shop_currency_html($p.price)|escape}"

    строкой:

    data-price = "{if $p.price > 0}{shop_currency_html($p.price)|escape}{else} Нужный текст {/if}"

    2) В файле product.cart.html заменить строку:

    data-price = "{shop_currency_html($product.price)|escape}"

    строкой:

    data-price = "{if $product.price > 0}{shop_currency_html($product.price)|escape}{else} Нужный текст {/if}"

    *возможно придется что то подправить, но теоретически должно работать

    1
    • Тирон Александр Тирон Александр 18 декабря 2015 17:03 #

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

      Это довольно сложная проблема работы логики приложения Магазин и инструкцией тут не обойтись. У большинства возникнет еще больше вопросов при попытке ее воспроизвести. Лучше всего подобные изменения заказывать доработкой, там можно учесть все интересующие моменты и проработать все узкие места, а главное что бы все это работало голова будет болеть не у вас, а создающего эту доработку ;).

      1
    • Николай Каплин Николай Каплин 18 декабря 2015 17:23 #

      Спасибо, много кода я конечно попробую, но боюсь внести какой-то баг в корзину и не сразу его отследить, а потом забуду что делал. Корзина важный элемент. Если руководство будет давить рискну, а так пока хватит того что до корзины и в мини-корзины предупреждение что цену уточнять. Далее пусть на себя винят :)

      1
      • Тирон Александр Тирон Александр 18 декабря 2015 17:27 #

        Просто помечайте измененные места комментариями:

        {* тут комментарий для SMARTY *}

        /* тут комментарий для JAVASCRIPT */

        <!-- тут комментарий для HTML -->

        1
        • Николай Каплин Николай Каплин 18 декабря 2015 17:36 #

          Я так и делаю, но в js шаблонах указанный код встречается не один раз, кроме того файл product.min.js похоже оптимизирован, удалены пробелы. Как-то страшно мне такие файлы редактировать :) Я не программист и малейшее выпадение "шаблона" и я могу накосячить :)

          1
          • Тирон Александр Тирон Александр 18 декабря 2015 17:41 #

            Сделайте хитрый ход - в местах подключения минифицированных файлов JS удалите приставку ".min", таким образом вы сможете использовать не минифицированные файлы.

            Изменения нужно сделать для указанных в комментариях файлов. Их подключение вы найдете в файлах head.html и product.cart.html

            1
  • Владимир Юрьевич Шпак 18 декабря 2015 19:44 #

    Саша, ты молодчина, но всё таки давайте данную доработку добавим в шаблон, я считаю, что это актуально не только для невнимательных как я но и для тех, кто работает с нулевыми ценами.

    2
    • Денис Фитеров Денис Фитеров 9 декабря 2018 18:43 #

      Добрый вечер.

      Сделал все как в вашей статье.

      Но у меня в товаре выбор параметров - то есть несколько вариаций цен у товара в зависимости от выбранной пробы.

      Попробуйте заменить строку в файле product.cart.html:

      {shop_currency_html($product.price)}

      на:

      {if $product.price != "0"}
      {shop_currency_html($product.price)}
      {else}
      По запросу 

      {/if}

      При первоначальной загрузке действительно стала появляться надпись "Цена договорная". Но потом она превращается в о р.

      пример страницы http://t2.seoshnig.ru/tseli_i_braslety/bismark/

      в чем может быть проблема ?

      С уважением, Денис

      1

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

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

    Услуги

    Контакты

    Дорогие друзья!

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

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

    Internet Explorer

    от Microsoft

    Chrome

    от Google

    Safari

    от Apple

    Opera

    от Opera Software

    Firefox

    от Mozilla

    Вверх