Тег «Shopscript 5»

Дополнительное поле адреса в печатных формах

Во всех печатных формах можно вывести дополнительные поля, которые вы определили для адресов доставки (или оплаты). Правда, для этого придется приложить немного усилий. Даже странно, что разработчики Shopscript 5 не позаботились о том, чтобы показывать идентификаторы дополнительных полей. Проглядели?

В качестве примера добавим поле «Номер склада» в печатную форму «Простая накладная».

В настройках магазина, в разделе «Оформление заказа», на закладке «Контактная информация» найдите группу полей «Поля адреса» и добавьте к ним еще одно с названием «Номер склада».

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

Теперь создайте новый заказ или отредактируйте существующий так, чтобы у нового поля было какое-нибудь значение.

Дополнительное поле в заказе

Теперь нужно выяснить идентификатор дополнительного поля, который Shopscript 5 присвоил самостоятельно. Возможно, этот идентификатор где-то показывается, но нам увидеть его не удалось. А он есть.

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

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

В шаблоне печатной формы удалите все (Ctrl-A потом Del) и напишите вместо всего три строчки:

<pre>
{print_r($order.shipping_address)}
</pre>

Откройте заказ и в нем откройте исправленную печатную форму — необходимо отметить соответствую опцию в верхнем правом углу и нажать кнопку «Печать». На экране откроется примерно такой документ, со списками идентификаторов полей адреса и их значениями. Возможно список будет выглядить немного по-другому, но надеюсь, необходимый идентификатор найти сможете. У меня получился nomer-sklada. Запомните название идентификатора.

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

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

В подходящее место шаблона давьте вывод нового поля. Примерно вот так:

{if !empty($order.shipping_address['nomer-sklada'])}
    <p>
        Номер склада:
        <b>{$order.shipping_address['nomer-sklada']}</b>
    </p>
{/if}

Я добавил в раздел с адресом доставки, получилось вот такое:

Дополнительное поле в заказе

Сохраните отчет. Все.

Автоматическое добавление наклеек

Либо я чего-то не нашел, либо в Shopscript 5 действительно нет возможности автоматически добавлять "бейджи" типа "Новинка" или "Скидка". Только вручную. Ну, вручную там можно какие хочешь делать, это понятно. Но самостоятельно следить, чтобы у товара появилась соответствующая наклейка очень грустно. Пришлось добавить пару строк в шаблоне.

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

{if !$product.badge}
    {if (((time() - strtotime($product.create_datetime)) / (60*60*24)) < 30)}
        {$product.badge = 'new'}
    {/if}
    {if $product.compare_price && ($product.compare_price > $product.price)}
        {$product.badge = 'lowprice'}
    {/if}
{/if}
 

Включение-выключение автоматического добавлений бейджей, а также срок, в течение которого товар считается новинкой, можно сделать переменными темы (см. по ссылке пункт 6).