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

Автор klyanna, 19 мая 2016, 20:17:47

« назад - далее »

klyanna

 Задача была поставлена такая :
"необходимо установить партнерский код отслеживания на сайте на страницу  "спасибо"-страницу (страница подтверждения заказа) Вам нужно установить специальный пиксель, который будет отслеживать конверсии и передавать нам информацию о покупках наших пользователей, а им, в свою очередь, позволит получить кэшбэк.
<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 день не могу разобраться.ПОМОГИТЕ

Mr.Sen

'total_products' => $this->total_products
В шаблоне проверьте переменную
{$total_products'|var_dump}

klyanna

Цитата: Mr.Sen от 20 мая 2016, 09:19:34
'total_products' => $this->total_products
В шаблоне проверьте переменную
{$total_products'|var_dump}


Что значит проверить?

Mr.Sen

В шаблоне добавить код, как я написал. Открыть страницу, посмотреть что выводит эта переменная.

klyanna

Цитата: Mr.Sen от 20 мая 2016, 09:39:52
В шаблоне добавить код, как я написал. Открыть страницу, посмотреть что выводит эта переменная.


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


если можете объясните подробнее ,я не особо сильна программировании ::)

PrestaMan

В 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.
Лучшие цены!!!

klyanna

#6
сделала всё как вы написали, у меня вышла ошибка HTTP ERROR 500....не получается....видимо что-то не правильно указываю.посмотрите пожалуйста мой файл ::)

PrestaMan

Включите показ ошибок в prestashop, увидите что у вас неправильно, в каком файле и в какой строке.
http://prestashop-forum.ru/index.php/topic,1304.0.html
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

klyanna


klyanna

все возможные варианты перепробывала всё равно не получается ???

coder

Нет других вариантов. Вам все написали. Проверяйте на ошибки. Включите показ ошибок, смотрите лог ошибок. Так поймете почему у вас не работает этот код.

klyanna

#11
ошибок ни каких не выходит. клики засчитываются, конверсии по прежнему нет.
Где я не правильно прописала код-не вижу.ПОМОГИТЕ ПОЖАЛУЙСТА

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

DarinSr

Вы код смотрели? Сумма заказа в шаблоне выводиться правильно? Если сумма правильная, то вам нужно писать в тех. поддержку партнерки. Задача сайта передать сумму, а не подсчитывать конверсию.