0

私はモジュールを書いています。これをbaseと呼びましょう。これは、vistor が購入 + 確認をクリックした後にボタンを表示します。合計金額が表示されるページで、お礼のメッセージとメールが送信されます。

そのページで、クリックすると製品の詳細が別の Web サービスに送信されるボタンを含むモジュールを追加したいと考えています。今、私はいくつかの質問があります:

  1. そのボタンを確認(チェックアウト後)ページに配置するには、どのフックを使用できますか。ご覧のとおり、ボタンが表示されるかどうかを確認するためだけに、いくつかのフックを使用しています。leftColumn にのみ表示されます

  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 に答える