Автор Тема: НЕ ПОЛУЧАЕТСЯ поставить партнерский код на сайт.ПОМОГИТЕ  (Прочитано 801 раз)

19 Май 2016, 20:17:47
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
 Задача была поставлена такая :
"необходимо установить партнерский код отслеживания на сайте на страницу  "спасибо"-страницу (страница подтверждения заказа) Вам нужно установить специальный пиксель, который будет отслеживать конверсии и передавать нам информацию о покупках наших пользователей, а им, в свою очередь, позволит получить кэшбэк.
<iframe src="http://bonusbay.go2cloud.org/aff_l?offer_id=110&amount=AMOUNT" scrolling="no" frameborder="0" width="1" height="1"></iframe>AMOUNT - это сумма заказа, благодаря этому будет формироваться процент. "
в своей теме/order-confirmation.tpl
установила код заменив  AMOUNT на {$total_products}
<iframe src="http://bonusbay.go2cloud.org/aff_l?offer_id=110&amount={$total_products}" scrolling="no" frameborder="0" width="1" height="1"></iframe>далее
в controllers/front/OrderConfirmationController.php
после строчки 
$this->setTemplate(_PS_THEME_DIR_.'order-confirmation.tpl');был поставлен код
$order =  new  Order ( $this -> id_order );
$cart =  new  Cart ( $order -> id_cart );
$description = "" ;
foreach  ( $cart -> getProducts () AS $k => $v ) {
$description .= $v [ 'name' ]. "X" . $v [ 'quantity' ];
}
$description = urlencode ( $description );
 
$this -> context -> smarty -> assign ( array (
'total_products' => $order -> total_products,
'description' => $description
 ));
ИТОГ:
проверила, клики учитываются,а процент от суммы не считается.
ЧТо я сделал не так? Где может быть ошибка, 3 день не могу разобраться.ПОМОГИТЕ
20 Май 2016, 09:19:34
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1806
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
'total_products' => $this->total_productsВ шаблоне проверьте переменную
{$total_products'|var_dump}
20 Май 2016, 09:21:55
Ответ #2
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
'total_products' => $this->total_productsВ шаблоне проверьте переменную
{$total_products'|var_dump}


Что значит проверить?
20 Май 2016, 09:39:52
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1806
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблоне добавить код, как я написал. Открыть страницу, посмотреть что выводит эта переменная.
20 Май 2016, 09:59:54
Ответ #4
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В шаблоне добавить код, как я написал. Открыть страницу, посмотреть что выводит эта переменная.


выходит ошибка  500.


если можете объясните подробнее ,я не особо сильна программировании ::)
20 Май 2016, 10:36:37
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В OrderConfirmationController.php сначало нужно объявить переменную
class OrderConfirmationControllerCore extends FrontController
{
        public $total_products;
        ...
потом инициализировать переменную
public function init()
{
        ....
        $order = new Order((int)($this->id_order));
        $this->total_products = $order->getTotalProductsWithoutTaxes(); // без налога или getTotalProductsWithTaxes с налогом
и определить переменную шаблона
public function initContent()
{
        $this->context->smarty->assign(array(
                ...
                'total_products' => $this->total_products
После этого можете использовать переменную в шаблоне order-confirmation.tpl
{$total_products}
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
20 Май 2016, 12:00:12
Ответ #6
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
сделала всё как вы написали, у меня вышла ошибка HTTP ERROR 500....не получается....видимо что-то не правильно указываю.посмотрите пожалуйста мой файл ::)
20 Май 2016, 12:10:14
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Включите показ ошибок в prestashop, увидите что у вас неправильно, в каком файле и в какой строке.
http://prestashop-forum.ru/index.php/topic,1304.0.html
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
22 Май 2016, 14:15:54
Ответ #8
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
06 Июнь 2016, 13:44:21
Ответ #9
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
все возможные варианты перепробывала всё равно не получается ???
06 Июнь 2016, 14:54:04
Ответ #10
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Нет других вариантов. Вам все написали. Проверяйте на ошибки. Включите показ ошибок, смотрите лог ошибок. Так поймете почему у вас не работает этот код.
06 Июнь 2016, 19:31:34
Ответ #11
  • Новичок
  • *
  • Сообщений: 23
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
ошибок ни каких не выходит. клики засчитываются, конверсии по прежнему нет.
Где я не правильно прописала код-не вижу.ПОМОГИТЕ ПОЖАЛУЙСТА

class OrderConfirmationControllerCore extends FrontController
{
    public $ssl = true;
    public $php_self = 'order-confirmation';
    public $id_cart;
    public $id_module;
    public $id_order;
    public $reference;
    public $secure_key;

 public $total_products;
    /**
     * Initialize order confirmation controller
     * @see FrontController::init()
     */
    public function init()
    {
        parent::init();

        $this->id_cart = (int)(Tools::getValue('id_cart', 0));
        $is_guest = false;

        /* check if the cart has been made by a Guest customer, for redirect link */
        if (Cart::isGuestCartByCartId($this->id_cart)) {
            $is_guest = true;
            $redirectLink = 'index.php?controller=guest-tracking';
        } else {
            $redirectLink = 'index.php?controller=history';
        }

        $this->id_module = (int)(Tools::getValue('id_module', 0));
        $this->id_order = Order::getOrderByCartId((int)($this->id_cart));
        $this->secure_key = Tools::getValue('key', false);
        $order = new Order((int)($this->id_order));
        $this->total_products = $order->getTotalProductsWithoutTaxes(); // без налога или getTotalProductsWithTaxes с налогом

        if ($is_guest) {
            $customer = new Customer((int)$order->id_customer);
            $redirectLink .= '&id_order='.$order->reference.'&email='.urlencode($customer->email);
        }
        if (!$this->id_order || !$this->id_module || !$this->secure_key || empty($this->secure_key)) {
            Tools::redirect($redirectLink.(Tools::isSubmit('slowvalidation') ? '&slowvalidation' : ''));
        }
        $this->reference = $order->reference;
        if (!Validate::isLoadedObject($order) || $order->id_customer != $this->context->customer->id || $this->secure_key != $order->secure_key) {
            Tools::redirect($redirectLink);
        }
        $module = Module::getInstanceById((int)($this->id_module));
        if ($order->module != $module->name) {
            Tools::redirect($redirectLink);
        }
    }

    /**
     * Assign template vars related to page content
     * @see FrontController::initContent()
     */
    public function initContent()

    {
        parent::initContent();

        $this->context->smarty->assign(array(
            'is_guest' => $this->context->customer->is_guest,
            'HOOK_ORDER_CONFIRMATION' => $this->displayOrderConfirmation(),
            'HOOK_PAYMENT_RETURN' => $this->displayPaymentReturn(),
'total_products' => $this->total_products
        ));

        if ($this->context->customer->is_guest) {
            $this->context->smarty->assign(array(
                'id_order' => $this->id_order,
                'reference_order' => $this->reference,
                'id_order_formatted' => sprintf('#%06d', $this->id_order),
                'email' => $this->context->customer->email
            ));
            /* If guest we clear the cookie for security reason */
            $this->context->customer->mylogout();

        }
        $this->setTemplate(_PS_THEME_DIR_.'order-confirmation.tpl');

$order = new Order($this->id_order);
    $cart = new Cart($order->id_cart);
$id_order = $this->id_order;
    $description="";
    foreach ($cart->getProducts() AS $k=>$v)
        {
    $description.=$v['name']."X".$v['quantity'];
    }    
    $description=urlencode($description);
 
    $this->context->smarty->assign(array(
    'total_products'=>$order->total_products,
    'description'=>$description,
'id_order' =>$id_order

    ));

    }

    /**
     * Execute the hook displayPaymentReturn
     */
    public function displayPaymentReturn()
    {
        if (Validate::isUnsignedId($this->id_order) && Validate::isUnsignedId($this->id_module)) {
            $params = array();
            $order = new Order($this->id_order);
            $currency = new Currency($order->id_currency);

            if (Validate::isLoadedObject($order)) {
                $params['total_to_pay'] = $order->getOrdersTotalPaid();
                $params['currency'] = $currency->sign;
                $params['objOrder'] = $order;
                $params['currencyObj'] = $currency;

                return Hook::exec('displayPaymentReturn', $params, $this->id_module);
            }
        }
        return false;
    }

    /**
     * Execute the hook displayOrderConfirmation
     */
    public function displayOrderConfirmation()
    {
        if (Validate::isUnsignedId($this->id_order)) {
            $params = array();
            $order = new Order($this->id_order);
            $currency = new Currency($order->id_currency);

            if (Validate::isLoadedObject($order)) {
                $params['total_to_pay'] = $order->getOrdersTotalPaid();
                $params['currency'] = $currency->sign;
                $params['objOrder'] = $order;
                $params['currencyObj'] = $currency;

                return Hook::exec('displayOrderConfirmation', $params);
            }
        }
        return false;
    }
}
07 Июнь 2016, 09:57:37
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы код смотрели? Сумма заказа в шаблоне выводиться правильно? Если сумма правильная, то вам нужно писать в тех. поддержку партнерки. Задача сайта передать сумму, а не подсчитывать конверсию.