PHP开发 加入小组

298个成员 3006个话题 创建时间:2011-05-30

解决zencart在产品列表点击buy now,从购物车返回后在次buy now无法增加产品

发表于 2012-03-23 5792 次查看

发现zencart 一个bug, 也不清楚是模版的问题,还是zencart本身的问题。

在产品列表点击buy now 图标,把产品加到购物车,在点击back to shopping按钮返回产品列表页面,继续添加商品,当再次点击buy now图标添加另外的产品,产品不会加到购物车,而是把第一次加到购物车的产品数量加1。查看back to shopping的链接发现有个products_id参数,值是之前加入购物车的产品ID,基本肯定问题出在这里,回到产品列表的查看buy now 链接,发现所有的链接的products_is之前加入购物车的产品ID,找到问题所在了。

解决方案:

找到模板 tpl_shopping_cart_default.php  136行左右,即生成back to shopping链接的那行,

<div><?php echo zen_back_link() . zen_image_button(BUTTON_IMAGE_CONTINUE_SHOPPING, BUTTON_CONTINUE_SHOPPING_ALT) . '</a>'; ?></div>

该链接是由函数zen_back_lin()函数生成的,如果修改这个函数,其他使用这个函数的地方会受到影响。但是该函数接受一个参数$link_only,默认为false,默认情况返回包含<a href="url"的HTML代码。如果$link_only为true,只返回url地址,这样我可以用正则替换把&products_id=xxxx部分替换为空,这样就可以正常工作了,把上面的代买改为:<div><?php echo '<a href="' . preg_replace('/&amp;products_id=\d*/i', '', zen_back_link(true)) . '">' . zen_image_button(BUTTON_IMAGE_CONTINUE_SHOPPING, BUTTON_CONTINUE_SHOPPING_ALT) . '</a>'; ?></div>

 

发表回复
功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。