我需要重建结帐页面,其中包含最新的废弃产品.
如果您已经登录到Opencart的消费者网站,打这个网址- http://www.example.com/index.php?route=checkout/cart,必定会列出所有车产品(即还没有购买) .
无需登录到消费者的网站,如果有人直接点击此网址- http://www.example.com/index.php?route=checkout/cart&email=someone@example.com -它会列出那些尚未购买的所有产品by someone@example.com(也称为abandoned products/cart),提供的someone@example.com是opencart网站的注册用户.
我想将该网址中的电子邮件地址作为查询字符串传递到结帐/购物车页面,并使用该地址返回该客户电子邮件的废弃产品.
如何在结帐/购物车页面中显示该电子邮件并向用户显示废弃的购物车产品?
我非常新opencart,我不太了解核心功能,所以我搜索了如何实现这一点,但是获得了付费的扩展(例如THIS),我的要求是让它在URL中构建,即我以上解释.
提供:Opencart安装是库存版本,没有安装其他插件/插件.
编辑
我试过以下.
if(isset($this->request->get['email']))
{
$email = $this->request->get['email'];
$cart_details = $this->db->query("SELECT cart FROM " . DB_PREFIX . "customer c where c.email = '" . $email . "'"); // just for tesing, i will fix this to prevent SQL injection.
$this->session->data['cart']= $cart_details->row['cart'];
}
Run Code Online (Sandbox Code Playgroud)
当我回应时"$cart_details->row['cart']",它获得了所需的价值,但即使在设置该值后,session结帐页面也没有重建被遗弃产品的列表.
Ari*_*yak 14
我更改了checkout/controller/checkout/cart.php索引方法,并添加了一个检查以查看自定义URL是否包含"cmail".然后我验证网址中提供的电子邮件地址.此时,我查询数据库以获取客户的"购物车"列(注意我已用于escape防止SQL注入),然后将其解码并放入会话中.如果您使用网址"localhost/index.php?route=checkout/cart&cmail=some@domain.com"访问该网站,您将在页面中重建购物车.我使用了以下代码.
if(isset($this->request->get['cmail']))
{
$email = $this->request->get['cmail'];
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
$cart_details = $this->db->query("SELECT cart,customer_id FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'");
if($cart_details->num_rows > 0)
{
$cart_data = $cart_details->row['cart'];
if ($cart_data && is_string($cart_data)) {
$cart = unserialize($cart_data);
foreach ($cart as $key => $value) {
$this->session->data['cart'][$key] = $value;
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1335 次 |
| 最近记录: |