доп. параметр товара "дата самовывоза"


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

Из ниже указанной темы:

http://help.weberia.ru/prostor...

Вытекает следующая:

Как сделать дату самовывоза в блоке покупки для определенной категории товара? Например "текущая дата"+1.

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

9 ответов
  • Владимир Сергеев
    Разработчик
    Решение
    24 июля 2018 19:53

    Код, который я посоветовал ранее в топике, на который вы ссылаетесь: 

    <div class="delivery-message" style="padding:20px 15px 15px;">
        Самовывоз: <span>{time()|wa_datetime:"humandate"}</span>
    </div>

    Замените его на этот: 

    {* Сколько дней прибавить для всех товаров *}
    {$plus_samo_day = 1}
    {* Если есть доп. параметр, то переписать день этим доп. параметром *}
    {if !empty($product.params.plus_samo_day)}
        {$plus_samo_day = $product.params.plus_samo_day}
    {/if}
    {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
    <div class="delivery-message" style="padding:20px 15px 15px;">
        Самовывоз: <span>{$samo_date|wa_datetime:"humandate"}</span>
    </div>

    Таким образом в коде выше заложено следующее: для всех товаров прибавлен 1 день для самовывоза. 
    Если вы добавить доп. параметр 

    plus_samo_day=10

    то, вы замените 1 день на 10.

    Если честно, то код не проверял... 

  • Рафаэль
    Решение
    24 июля 2018 20:07

    Добавил вот такой код:

    {* Сколько дней прибавить для всех товаров *}
    {$plus_samo_day = 1}
    {* Если есть доп. параметр, то переписать день этим доп. параметром *}
    {if !empty($product.params.plus_samo_day)}
        {$plus_samo_day = $product.params.plus_samo_day}
    {/if}
    {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
    <div class="delivery-message" style="padding:20px 15px 15px;">
       	<i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>{$delivery_date|wa_datetime:"humandate"}</span><br>г.Екатеринбург,Краснолесья 133</br>
    </div>


    В карточке определенного товара прописал

    plus_samo_day=10

    Все по-прежнему...

    Может я что то не так сделал?

  • Рафаэль
    Решение
    21 августа 2018 10:53

    Сейчас в коде дата самовывоза по умолчанию:текущая дата+1 

    {$plus_samo_day = 1}

    А как сделать чтобы дата самовывоза по умолчанию была такая же как дата доставки+доп параметр для определенных товаров?

    • Владимир Сергеев
      Разработчик
      Решение
      21 августа 2018 21:48


      {$plus_samo_day = 1}
      {if !empty($product.params.plus_samo_day)}
          {$plus_samo_day = $plus_samo_day + $product.params.plus_samo_day}
      {/if}

      • Владимир Сергеев
        Разработчик
        Решение
        21 августа 2018 21:48

        P.S.

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

  • Рафаэль
    Решение
    24 сентября 2018 08:32

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

    Вопрос: В карточке товара в блоке покупки можно устанавливать доставку через 1,2,3 и тд дня. Как сделать доставку "Сегодня"?

    Если в настройках темы ставим "0", стираются все значения:

    Хотя логичнее было бы и слово "доставка" то же стереть, так как информация пропала и слово доставка за собой ничего не несет.

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

      Нужно заменить код:

      {* Сколько дней прибавить для всех товаров *}
      {$plus_samo_day = 1}
      {* Если есть доп. параметр, то переписать день этим доп. параметром *}
      {if !empty($product.params.plus_samo_day)}
          {$plus_samo_day = $product.params.plus_samo_day}
      {/if}
      {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
      <div class="delivery-message" style="padding:20px 15px 15px;">
         	<i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>{$delivery_date|wa_datetime:"humandate"}</span><br>г.Екатеринбург,Краснолесья 133</br>
      </div>

      На код: 

      {* Сколько дней прибавить для всех товаров *}
      {$plus_samo_day = 1}
      {* Если есть доп. параметр, то переписать день этим доп. параметром *}
      {if !empty($product.params.plus_samo_day)}
          {$plus_samo_day = $product.params.plus_samo_day}
      {/if}
      {if $plus_samo_day !== 0}
          {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
          <div class="delivery-message" style="padding:20px 15px 15px;">
              <i class="fa fa-dropbox"></i> <b>Доставка: </b><span>{$delivery_date|wa_datetime:"humandate"}</span>
          </div>
      {elseif $plus_samo_day == 0}
          <div class="delivery-message" style="padding:20px 15px 15px;">
      	<i class="fa fa-dropbox"></i> <b>Доставка: </b><span>Сегодня</span>
          </div>
      {/if}

  • Рафаэль
    Решение
    24 сентября 2018 19:28

    Чувствую что тут уже все перемешалось и доставка и самовывоз...не выходит как надо. Необходимо внести ясность:

    Сегодня 24 сентября, мне нужно:

    1) Чтобы доставка у меня была 26 сентября, а товар который уже есть в пункте выдачи можно было выдать завтра то есть 25 сентября, если в товаре в доп параметре задан критерий plus_samo_day=1

    (если есть критерий в доп параметре)

    2)Если критерий не задан, то условия самовывоза как у доставки 26 сентября.

    3)Если товара нет в наличии.Самовывоза нет, доставки нет- условия как у доставки -поле исчезает

    4)Если в поле доставки прописываю 0, то высвечивается и в доставке и в самовывозе - Сегодня

    Код на данный момент выглядит так


    {* Сколько дней прибавить для всех товаров *}
    {$plus_samo_day = 1}
    {* Если есть доп. параметр, то переписать день этим доп. параметром *}
    {if !empty($product.params.plus_samo_day)}
        {$plus_samo_day = $product.params.plus_samo_day}
    {/if}
    {if $plus_samo_day !== 0}
        {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
        <div class="delivery-message" style="padding:20px 15px 15px;">
            <i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>{$delivery_date|wa_datetime:"humandate"}</span>
        </div>
    {elseif $plus_samo_day == 0}
        <div class="delivery-message" style="padding:20px 15px 15px;">
    	<i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>Сегодня</span>
        </div>
    {/if}

    Как его написать правильно?

    • Владимир Сергеев
      Разработчик
      Решение
      25 сентября 2018 11:49

      Данный код для самовывоза. Просто я запутался и написал там "доставку". 
      На счёт работоспособности, наверно надо код обернуть ещё проверкой на наличие какого-нибудь числа в параметре. 

      {* Сколько дней прибавить для всех товаров *}
      {$plus_samo_day = 1}
      {* Если есть доп. параметр, то переписать день этим доп. параметром *}
      {if !empty($product.params.plus_samo_day)}
          {$plus_samo_day = $product.params.plus_samo_day}
      {/if}
      {if !empty($plus_samo_day)}{*<- проверка на наличие параметра*}
      {if $plus_samo_day !== 0}
          {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
          <div class="delivery-message" style="padding:20px 15px 15px;">
              <i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>{$delivery_date|wa_datetime:"humandate"}</span>
          </div>
      {elseif $plus_samo_day == 0}
          <div class="delivery-message" style="padding:20px 15px 15px;">
      	<i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>Сегодня</span>
          </div>
      {/if}
      {/if}{*<- проверка на наличие параметра*}

      Для доставки сделайте по аналогии.. 

  • Рафаэль
    Решение
    25 сентября 2018 12:38

    Не выходит...

    1)Самовывоз не цепляется за доп.параметр

    plus_samo_day = 1

    2)Самовывоз не исчезает, когда товара нет в наличии

    3) Работает как доставка

    Вроде все делаю по правилам, как вы написали...не получается

    Если переправить код

    $delivery_date|wa_datetime:"humandate"}

    на

    {$samo_date|wa_datetime:"humandate"}

    то для всего самовывоза получается дата доставки плюс один день от сегодняшней, а должен только для тех товаров, у которых прописан доп.параметр plus_samo_day = 1. Для всего остального (у которых ничего не прописано) должна действовать формула как в доставке.

    • Владимир Сергеев
      Разработчик
      Решение
      25 сентября 2018 17:08

      Пришлите мне оба кода: для доставки и для самовывоза. 
      Завтра посмотрю. 

      На счёт, если товара нет в наличии, видимо, пропустил "мимо ушей" (работы много, голова квадратная). 

  • Рафаэль
    Решение
    28 сентября 2018 06:27

    На данный момент  выглядит так:

    доставка

    	{if !empty($show_delivery_message) && $product_available}
    		<div class="delivery-message" style="padding:20px 15px 15px;">
    			{$delivery_message}{if !empty($plus_day)} <span class="">{$delivery_date|wa_datetime:"humandate"}</span>{/if}
    		</div>
    	{/if}

    самовывоз

    {* Сколько дней прибавить для всех товаров *}
    {$plus_samo_day = 1}
    {* Если есть доп. параметр, то переписать день этим доп. параметром *}
    {if !empty($product.params.plus_samo_day)}
        {$plus_samo_day = $product.params.plus_samo_day}
    {/if}
    {if !empty($plus_samo_day)}{*<- проверка на наличие параметра*}
    {if $plus_samo_day !== 0}
        {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
        <div class="delivery-message" style="padding:20px 15px 15px;">
            <i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>{$samo_date|wa_datetime:"humandate"}</span>
        </div>
    {elseif $plus_samo_day == 0}
        <div class="delivery-message" style="padding:20px 15px 15px;">
    	<i class="fa fa-dropbox"></i> <b>Самовывоз: </b><span>Сегодня</span>
        </div>
    {/if}
    {/if}{*<- проверка на наличие параметра*}


    • Владимир Сергеев
      Разработчик
      Решение
      1 октября 2018 17:32

      На счёт доставки

      Код:

      {if !empty($show_delivery_message) && $product_available}
          <div class="delivery-message" style="padding:20px 15px 15px;">
              {$delivery_message}{if !empty($plus_day)} <span class="">{$delivery_date|wa_datetime:"humandate"}</span>{/if}
          </div>
      {/if}

      Замените на код: 

      {if !empty($show_delivery_message) && $product_available}
          <div class="delivery-message" style="padding:20px 15px 15px;">
      	{$delivery_message}{if !empty($plus_day) && $plus_day !== '0'} <span class="">{$delivery_date|wa_datetime:"humandate"}</span>{else}Сегодня{/if}
          </div>
      {/if}

      Если $plus_day будет равен нулю, то будет сегодня. 
      Если товара нет ни на одном складе, то доставка не будет отображаться. 
      Если товар будет хотя бы на одном складе, то товар доставка будет отображаться. 

      • Владимир Сергеев
        Разработчик
        Решение
        1 октября 2018 17:36

        Блин.. нет.
        Если plus_day не будет, то тогда тоже будет "сегодня".

      • Владимир Сергеев
        Разработчик
        Решение
        1 октября 2018 17:41

        Вот этот код лучше: 

        {if !empty($show_delivery_message) && $product_available && !empty($plus_day)}
            <div class="delivery-message" style="padding:20px 15px 15px;">
        	{$delivery_message}{if $plus_day !== '999'} <span class="">{$delivery_date|wa_datetime:"humandate"}</span>{else}Сегодня{/if}
            </div>
        {/if}

        И нулём лучше не пользоваться, поскольку это неоднозначная переменная. Используйте для "сегодня" лучше переменную 999.

    • Владимир Сергеев
      Разработчик
      Решение
      1 октября 2018 17:47

      На счёт самовывоза 

      Заменить этим кодом: 

      {* Сколько дней прибавить для всех товаров *}
      {$plus_samo_day = '1'}
      {* Если есть доп. параметр, то переписать день этим доп. параметром *}
      {if !empty($product.params.plus_samo_day)}
          {$plus_samo_day = $product.params.plus_samo_day}
      {/if}
      {$samo_date = time() + ($plus_samo_day * 24 * 60 * 60)}
      {if $product_available && !empty($plus_samo_day)}
          <div class="delivery-message" style="padding:20px 15px 15px;">
         	Самовывоз: {if $plus_samo_day !== '999'}<span>{$samo_date|wa_datetime:"humandate"}</span>{else}Сегодня{/if}
          </div>
      {/if}

      Также как и с доставкой: Сегодня = 999.

  • Рафаэль
    Решение
    1 октября 2018 18:33

    То что надо!

    Хотел узнать еще вот что:

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

    Другими словами как сделать вместо числа 

    {$plus_samo_day = '1'}

    Вместо числа 1 , переменную, которая равна числу дней до доставки, которая изменяется в настройках витрины:

    Чтобы каждый день не лезть в шаблон, а менять вместе с датой доставки.


  • Рафаэль
    Решение
    3 октября 2018 06:37

    Спасибо, работает!

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

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