Задачу я решил таки, по крайней мере сейчас все так как надо, за исключением мелочей.
Поясняю что именно было не так:
Общие настройки:
- Разрешен заказ товаров с нулевым остатком на складе
Предположим есть 2 товара:
- Первый
Доступен для заказа
Наличие: больше нуля
Есть кнопка: Добавить в корзину
Есть надпись: Доступен
- Второй
Доступен для заказа
Наличие: ноль
Есть кнопка: Добавить в корзину
Есть надпись: Доступен
Проблема: в магазине они выглядят одинаково.
А хотелось бы: что бы была разница в отображении.
Чего я добился:
- Первый
Доступен для заказа
Наличие: больше нуля
Есть кнопка: Добавить в корзину (зеленая кнопка)
Есть надпись: Доступен (зеленый текст)
- Второй
Доступен для заказа
Наличие: ноль
Есть кнопка: Предзаказ (серая кнопка)
Есть надпись: Нет в наличии (красный текст)
Итого: Клиент при заказе товара знает что товара сейчас нет, но его можно заказать и для его доставки понадобится больше времени. Что в противном случае может привести к лишним разговорам с менеджером по телефону или к разочарованию при получении товаров.
Если кому интересно, то сделал я это так:
Нужен файл - product-list.tpl (все изменения были в сроках 42-53)
Оригинальный код:
Код:
<div>
{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span><br />{/if}
{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}<span class="availability">{if ($product.allow_oosp || $product.quantity > 0)}{l s='Available'}{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if}
</div>
{/if}
{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity == 1 && $product.customizable != 2 && !$PS_CATALOG_MODE}
{if ($product.allow_oosp || $product.quantity > 0)}
<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart.php')}?add&id_product={$product.id_product|intval}{if isset($static_token)}&token={$static_token}{/if}" title="{l s='Add to cart'}">{l s='Add to cart'}</a>
{else}
<span class="exclusive">{l s='Add to cart'}</span>
{/if}
{/if}
Измененный код:
Код:
<div>
{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}<span class="price" style="display: inline;">
{if !$priceDisplay}{convertPrice price=$product.price}
{else}{convertPrice price=$product.price_tax_exc}
{/if}</span><br />
{/if}
{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
{if ($product.quantity > 0)}<span class="availability">{l s='Available'}</span>
{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}<span class="outofstock">{l s='Product available with different options'}</span>
{else}<span class="outofstock">{l s='Out of stock'}</span>
{/if}
{else}{l s='Out of stock'}
{/if}
</div>
{/if}
{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.customizable != 2 && !$PS_CATALOG_MODE}
{if ($product.quantity > 0)}
<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart.php')}?add&id_product={$product.id_product|intval}
{if isset($static_token)}&token={$static_token}
{/if}" title="{l s='Add to cart'}">
{l s='Add to cart'}
</a>
{elseif ($product.quantity < 1)}
<a class="button ajax_add_to_cart_button preorder" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart.php')}?add&id_product={$product.id_product|intval}
{if isset($static_token)}&token={$static_token}
{/if}" title="{l s='Preorder'}">
{l s='Preorder'}
</a>
{/if}
{/if}
Основным изменением стало удаление переменной: $product.allow_oosp
Я так и не смог найти за что она отвечает и удалил ее на свой страх и риск, но после этого условия начали работать так как надо.
Кстати если кто знает что она делает прошу подсказать.
Далее добавил или отредактировал условия на проверку кол-ва товара и создал свои выводы для разных ситуаций. Ну и добавил новую надпись к кнопке "Предзаказ"
Вроде все. Я не силен в престе и в смарти кстати тоже, но потихоньку постигаю
Если есть более простое решение, то это было только к лучшему.