如果特定项目在购物车中,XCart禁用结帐按钮

时间:2015-01-23 22:06:02

标签: php e-commerce smarty x-cart

我有这个代码我在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 个答案:

答案 0 :(得分:0)

您的问题有几个问题:

保存购物车中商品的数组{$products}仅适用于购物车和结帐页面。您不能在其他页面上使用它,因为它不存在。

首先检查特定商品是否在购物车中的方式是错误的。如果您在购物车中有5个产品没有id=3065,则您提供的代码将打印例如5个指向购物车的链接。

所以,让我们找一个解决方案。由于您需要检查每个页面上是否有一个产品在Cart中(隐藏Checkout链接),因此您需要创建检查项目存在的PHP脚本。我们将设置全局智能变量is_product_in_cart,您可以在TPL文件中的任何位置使用它。我们将在root上更改的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}