У меня есть этот код, который я использую в XCart 4.6, чтобы скрыть кнопку оформления заказа.
{section name=product loop=$products}
{if $products[product].productid eq 3065}
{else}
<a href="http://academyprohair.com/cart.php" style="margin-top:5px;"><img src="{$AltImagesDir}/button_checkout.jpg" alt="" /></a>
{/if}
{/section}
Он отлично работает на странице корзины, но разрывается на каждой другой странице и скрывает кнопку оформления заказа независимо от того, какой товар находится в корзине.
В вашем вопросе есть несколько вопросов:
массив {$products}
который содержит товары в корзине, доступен только на страницах корзины и оформления заказа. Вы не можете использовать его на других страницах, потому что он не существует.
То, как вы проверяете, находится ли конкретный товар в корзине, неверно На первом месте. Код, который вы предоставили, напечатает, например, 5 ссылок на корзину, если у вас есть 5 продуктов в корзине, которые не имеют id=3065
,
Итак, давайте найдем решение. Так как вам нужно проверить, есть ли один продукт в корзине на каждой странице (чтобы скрыть ссылку Checkout), вам нужно создать PHP-скрипт, который проверяет наличие товара. Мы установим глобальную переменную smarty is_product_in_cart
, который вы можете использовать в любом месте в файлах TPL. Основной файл xcart, который мы изменим home.php
в корне, мы добавим код, прежде чем показать шаблон (до окончания func_display('customer/home.tpl', $smarty);
):
/* academyprohair.com custom code */
$my_products = func_products_in_cart($cart);
$is_product_in_cart = 'N';
foreach( $my_products as $product ) {
if ( $product['productid']==3065 ) {
$is_product_in_cart = 'Y';
break;
};
};
$smarty->assign('is_product_in_cart', $is_product_in_cart);
В ваших шаблонах везде, кроме страниц Корзина и Оформление заказа, вы можете легко показать ссылку на корзину с помощью:
{if $is_product_in_cart neq 'Y' }
<a href="http://academyprohair.com/cart.php" style="margin-top:5px;"><img src="{$AltImagesDir}/button_checkout.jpg" alt="" /></a>
{/if}
Других решений пока нет …