Php 继续购物

Php 继续购物,php,opencart,Php,Opencart,在我的购物车中,我有它,所以当你添加产品时,你会被带到购物车,客户希望用户单击“继续购物”,并被带回到“添加的物品”类别以进行进一步购物。我怎么能这样做 类别URI段在域后为1。您可以在客户端上设置一个cookie,在添加到购物车之前列出他们最后的浏览类别,或者您可以在他们的用户会话中设置它。我认为最简单的方法是只向“添加到购物车”添加一个GET参数包含项目类别路径的链接。类似于example.com/shopping\u cart.php?item=bunny\u拖鞋&item\u categ

在我的购物车中,我有它,所以当你添加产品时,你会被带到购物车,客户希望用户单击“继续购物”,并被带回到“添加的物品”类别以进行进一步购物。我怎么能这样做


类别URI段在域后为1。

您可以在客户端上设置一个cookie,在添加到购物车之前列出他们最后的浏览类别,或者您可以在他们的用户会话中设置它。

我认为最简单的方法是只向“添加到购物车”添加一个GET参数包含项目类别路径的链接。类似于
example.com/shopping\u cart.php?item=bunny\u拖鞋&item\u category=/categories/shooting/
的东西就可以了。我不确定您的应用程序结构是什么样的,但是您可以通过为每个类别页面设置一个
$category
变量,然后将该变量插入GET参数,或者使用PHP的服务器superglobal获取路径信息


然后,在购物车页面上,只需将
$\u GET['item\u category']
变量插入“继续购物”链接即可。当然,您必须首先对参数执行此操作,以确保其中没有任何恶意代码。

Open
catalog/controller/product/category.php

在大约第75行查找
if($category_info){

在一条新的线路上

$tmp = $this->request->get;
unset($tmp['route']);
$this->session->data['continue_redirect'] = $this->url->link('product/category', http_build_query($tmp));
如果类别是会话变量中的有效类别,则该代码基本上将url设置为当前页面url


打开
catalog/controller/checkout/cart.php

查找
$this->data['continue']=$this->url->link('common/home');
在第285行附近

在那条线之后,放

if(!empty($this->session->data['continue_redirect'])) {
    $this->data['continue'] = $this->session->data['continue_redirect'];
    unset($this->session->data['continue_redirect']);
}
这将检查我们在类别控制器中设置的continue_redirect会话变量,如果设置了该变量,则将其分配给continue URL,然后将其取消设置,使其不保留该类别信息。如果需要,请删除该行

unset($this->session->data['continue_redirect']);

请注意,这还没有经过测试,但在理论上应该是可行的,因为除了上面Jay Gilford的答案之外,我没有1.3.x安装

——我刚刚尝试了这个,发现了另一个

$this->data['continue'] = $this->url->link('common/home');

关于第258行。我还需要将代码放在后面,否则重定向只在篮为空时才起作用。

这是通过使用用户会话完成的,但如果您阅读了我在这篇文章上的最后一条评论,我似乎找不到相关代码:)不清楚您使用的opencart的版本,以及它所采用的方法会随着时间的变化而变化这个版本。你在哪个版本上运行这个代码?哇,好吧,你至少应该升级到1.4.9。我意识到这并不总是可能的,但为了安全起见,我强烈推荐它。这将在回答中提出一个可能的解决方案below@JayGilford我的意思是v1.5.1.3。在修复后,我将尝试您的答案。我已更新我的答案以反映1.5.x版本