XCart отключить кнопку проверки, если конкретный товар находится в корзине

У меня есть этот код, который я использую в 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}

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

1 ответ

Решение

В вашем вопросе есть несколько вопросов:

массив {$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}
Другие вопросы по тегам