0

我正在编写一个模块,我们称之为base,它会在访问者点击购买+确认后显示一个按钮。那是显示总价的页面,将发送感谢信息和电子邮件。

在该页面上,我想使用按钮添加我的模块,单击该按钮会将产品详细信息发送到另一个 Web 服务。现在我有几个问题:

  1. 我可以使用哪个钩子将该按钮放在确认(结帐后)页面上。正如你所看到的,我使用了几个钩子来查看按钮是否出现。它只出现在 leftCollumn

  2. 您对代码的一般看法是什么。getProducts() 是正确的方法,只是从另一个标准模块复制而来。你有我的例子吗?

请忽略全局。我稍后会重构。

base.php(只是其中的重要部分)

<?php
if ( !defined( '_PS_VERSION_' ) )
  exit;

class Base extends Module
{

  public function install() {
        return parent::install() && $this->registerHook('payment') && $this->registerHook('invoice') && $this->registerHook('leftColumn');
  }

  public function uninstall() {
        parent::uninstall();
  }

  public function getContent() {
        return '<h2>'.$this->displayName.'</h2> <div>nothing to configure</div>';
  }

  public function hookPayment($params) {
        if (!$this->active)
          return;

        global $smarty;
        $smarty->assign('buttonText', $this->l('Send to my base'));
        return $this->display(__FILE__, 'base.tpl');
}


  public function ajaxCall($params) {
        if (Configuration::get('PS_CATALOG_MODE'))
          return "return;";

        return $params['cart']->getProducts(true);
  }
}

产品.php

include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
include(dirname(__FILE__).'/base.php');

$cart = new Cart((int)($cookie->id_cart));
$cart->id_lang = (int)($cookie->id_lang);

$base = new Base();
var_dump( $base->hookAjaxCall(array('cookie' => $cookie, 'cart' => $cart)) );
4

1 回答 1

1

你可以使用这个钩子:

{$HOOK_ORDER_CONFIRMATION}
{$HOOK_PAYMENT_RETURN}  

付款验证后,此挂钩显示在 order-confimation.tpl 中。

于 2011-12-22T20:50:19.597 回答