Получить продукты в модуле prestashop и разместить модуль после страницы проверки

Я пишу модуль, назовем его base, который будет отображать кнопку после того, как посетитель нажмет на покупку+подтверждение. Это страница, на которой отображается общая стоимость, а также сообщение с благодарностью и электронное письмо.

На этой странице я хотел бы добавить свой модуль с кнопкой, которая по щелчку отправляет сведения о продукте в другой веб-сервис. Теперь у меня есть несколько вопросов:

  1. Какой хук я могу использовать, чтобы разместить эту кнопку на странице подтверждения (после оформления заказа). Как видите, я использую несколько хуков только для того, чтобы посмотреть, появится ли кнопка. Он появляется только в левой колонке

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

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

person vik    schedule 20.12.2011    source источник


Ответы (1)


Вы можете использовать эти крючки:

{$HOOK_ORDER_CONFIRMATION}
{$HOOK_PAYMENT_RETURN}  

Эти хуки отображаются в файле order-confimation.tpl после подтверждения платежа.

person prestarocket    schedule 22.12.2011
comment
hookPaymentReturn — это то, что я хотел. Спасибо за это. Можете ли вы также помочь мне с другим вопросом? Как я могу получить продукты размещенного заказа и некоторые подробности о пользователе? Как и ожидалось, корзина пуста после заказа. - person vik; 27.12.2011
comment
Хорошо, получил мой ответ. $params содержит всю необходимую мне информацию. И беглый взгляд на классы Prestashop поможет понять, как обращаться с этими данными. - person vik; 29.12.2011