当用户被发送到“感谢页面”(购物车/结帐/完成)时,我需要获得有关订单的一些信息,以便将其发送到第三方跟踪API.问题是,在这一点上,没有关于订单的信息,无论是在会话中还是在我所知道的任何其他地方.作为一种解决方法,我尝试查询当前连接用户的最后一个订单但是当用户未注册时失败,因为Ubercart即时注册一个帐户并使用户不记录.
所以我的问题是,有没有办法从page-cart.tpl.php模板获取Order对象(cart / checkout / complete)?
到目前为止我的解
在购物车/结帐/审核时抓取$_SESSION [‘cart_order’]变量,将其分配给$_SESSION [‘faux_order’]并在我的脚本中使用faux_order在cart / checkout / complete …这看起来像看到长颈鹿一样难看窒息死亡.
解决方法:
警告!不要使用上面的答案.请参阅我的评论以获得解释
而不是上面提交的答案(您永远不应该使用)创建自定义Ubercart条件操作(CA)并将其添加到您的Ubercart CA工作流程中的“触发器:客户完成结帐”部分,在https://dev.betternow.org/admin/store/ca/overview中找到
我在这里定义一个自定义CA.
function my_module_ca_action() {
$order_arg = array(
'#entity' => 'uc_order',
'#title' => t('Order'),
);
$actions['my_module_status_update'] = array(
'#title' => t('Some Title'),
'#category' => t('Custom UC AC'),
'#callback' => 'my_module_some_function_name',
'#arguments' => array(
'order' => $order_arg,
),
);
return $actions;
}
现在我可以在我的模块中定义的自己的回调函数中使用order id:
function my_module_some_function_name(&$order, $settings) {
echo "This is the order id: " . $order->order_id;
}
我自己使用这种方法向用户显示“谢谢”页面,其中包含他们刚刚购买的产品的链接.
标签:php,drupal,ubercart 来源: https://codeday.me/bug/20190627/1299655.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。