在checkst页面后检索prestashop模块中的产品并放置模块

时间:2011-12-20 16:41:42

标签: php module prestashop

我正在编写一个模块,我们称之为 base ,这将在vistor点击buy +确认后显示一个按钮。这是显示总价格的页面,感谢信息和电子邮件将被发送。

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

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

  2. 您对代码的总体看法如何?将getProducts()作为正确的方法,只是从另一个标准模块复制。你有一个例子吗?

  3. 请忽略全球。我稍后会重构。

    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);
      }
    }
    

    products.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)) );
    

1 个答案:

答案 0 :(得分:1)

你可以使用这个钩子:

{$HOOK_ORDER_CONFIRMATION}
{$HOOK_PAYMENT_RETURN}  

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