Малко помощ за интеграция афилиейт проследяващ код в Опенкарт

lqllqlq

Well-Known Member
Трябва ми малко помощ за интеграцията на афф проследяващ код в success страницата при поръчка на Опенкарт.
Кода, които трябва да се вкара в success.php е:

Код:
<script type="text/javascript">
document.write(unescape("%3Cscript id=%27pap_x2s6df8d%27 src=%27" + (("https:" == document.location.protocol) ? "https://" : "http://") + "my.афилиейтплатформа.com/scripts/trackjs.js%27 type=%27text/javascript%27%3E%3C/script%3E")); 
 </script> <script type="text/javascript">
PostAffTracker.setAccountId('[I]уникален код на акаунта в системата'[/I]);
var sale = PostAffTracker.createSale();
[B]sale.setTotalCost('120.50');
sale.setOrderID('ORD_12345XYZ');
sale.setProductID('test product');[/B]

PostAffTracker.register();
</script>

при които TotalCost(), setOrderID() и setProductID() трябва да се подават от магазина. Важно е да отбележа, че TotalCost() трябва да е стойност на поръчката без ДДС и без цена на транспорта.

Това, което е направено, и явно грешно щом пускам тази тема, е :

Код:
sale.setTotalCost('<?php echo $this->cart->getTotal(); ?>');
sale.setOrderID('<?php echo $order_id; ?>');
sale.setProductID('');

като проблема е, че по този начин вади следният резултат при тест:

Код:
sale.setTotalCost('0');
sale.setOrderID('0');
sale.setProductID('');

И понеже съм много бос в тази насока ще помоля за малко акъл как трябва да стане това, така че да не връща 0(нула) за стойност, а правилните неща.
 
От: Малко помощ за интеграция афилиейт проследяващ код в Опенкарт

Я дай резултата от
PHP:
print_r($this->cart);
print_r(order_id);
 
От: Малко помощ за интеграция афилиейт проследяващ код в Опенкарт

Трябва ми малко помощ за интеграцията на афф проследяващ код в success страницата при поръчка на Опенкарт.
Кода, които трябва да се вкара в success.php е:

1. На въпросния джава скрипт код изобщо не му е мястото в контролера(примерно да го ръгнеш като стойност на променлива(ужас)), а в съответния темплейтен файл. Така нарушаваш архитектурения шаблон за дизайн на системата(MVC-L).
2. Отвори контролера success.php и виж най-отгоре каква е логиката. Ако в свръхглобалната $_SESSION присъства елемент с ключ "ордер айди"(тоест в сесийнтата бисквитка на потребителя присъства инфомрация за направена поръчка, а не просто е отворил пътя checkout/success) то да се унищожи всякаква инфомрация свързана с тази поръчка. От там ти идва и нулвеия резултат от метода getTotal(), тъй като преди това се извиква друг такъв clear() който изчиства информацията пазена за продуктите в "количката".

Какво трябва да направиш ?
в контролера success.php намери това:
PHP:
if (isset($this->session->data['order_id'])) {
		
        //Бла бла	
}

Трябва да си вземеш нужната информация от преди всичко останало в условието(надявам се знаеш как), и в темплейтния файл да провериш дали същ. тези новоизлюпени променливи или масив там както си прециниш и ако да, генерираш въпросния ти предоставен скрипт със нужните данни от тях.

Също бих ти препоръчал да изпозлваш метода getSubTotal() , защото при другия се начеслява и данък ако има, а ти не искаш това.
 
От: От: Малко помощ за интеграция афилиейт проследяващ код в Опенкарт

1. На въпросния джава скрипт код изобщо не му е мястото в контролера(примерно да го ръгнеш като стойност на променлива(ужас)), а в съответния темплейтен файл. Така нарушаваш архитектурения шаблон за дизайн на системата(MVC-L).
2. Отвори контролера success.php и виж най-отгоре каква е логиката. Ако в свръхглобалната $_SESSION присъства елемент с ключ "ордер айди"(тоест в сесийнтата бисквитка на потребителя присъства инфомрация за направена поръчка, а не просто е отворил пътя checkout/success) то да се унищожи всякаква инфомрация свързана с тази поръчка. От там ти идва и нулвеия резултат от метода getTotal(), тъй като преди това се извиква друг такъв clear() който изчиства информацията пазена за продуктите в "количката".

Какво трябва да направиш ?
в контролера success.php намери това:
PHP:
if (isset($this->session->data['order_id'])) {
		
        //Бла бла	
}

Трябва да си вземеш нужната информация от преди всичко останало в условието(надявам се знаеш как), и в темплейтния файл да провериш дали същ. тези новоизлюпени променливи или масив там както си прециниш и ако да, генерираш въпросния ти предоставен скрипт със нужните данни от тях.

Също бих ти препоръчал да изпозлваш метода getSubTotal() , защото при другия се начеслява и данък ако има, а ти не искаш това.

За Subtotala - разбрах и ще го сменя.

За:
PHP:
if (isset($this->session->data['order_id'])) {
		
        //Бла бла	
}

след него е сложен въпросният код.

За останалото, почти те разбрах, но не ми стана ясно как да си реша проблема, защото както сам посочих - никак ме няма в тази насока.

Това ми се струва по-просто, но дали е правилно:
Код:
sale.setTotalCost('{amount}');
sale.setOrderID('{orderId}');
sale.setProductID('{productId}');
 
Последно редактирано:
От: От: От: Малко помощ за интеграция афилиейт проследяващ код в Опенкарт

За Subtotala - разбрах и ще го сменя.
след него е сложен въпросният код.
За останалото, почти те разбрах, но не ми стана ясно как да си реша проблема, защото както сам посочих - никак ме няма в тази насока. Мерси все пак.

controller/checkout/success.php :

PHP:
if (isset($this->session->data['order_id'])) {
	
    // добавя се в сесийната бисквитка на потребителя информация за общата сума без данък и номера на поръчката
	$this->session->data['tracker_info'][] = $this->cart->getSubTotal(); 
	$this->session->data['tracker_info'][] = $this->session->data['order_id']; 
    // край на новия код от два реда надолу всичко си е постарому
		
	$this->cart->clear();
			
	unset($this->session->data['shipping_method']);
	unset($this->session->data['shipping_methods']);
	unset($this->session->data['payment_method']);
	unset($this->session->data['payment_methods']);
	unset($this->session->data['guest']);
	unset($this->session->data['comment']);
	unset($this->session->data['order_id']);	
	unset($this->session->data['coupon']);
	unset($this->session->data['reward']);
	unset($this->session->data['voucher']);
	unset($this->session->data['vouchers']);
			
}

view/theme/blabla/template/common/success.tpl (избери си място където да сложиш въпросния джава скрипт буламач):

Код:
<?php
  if (!empty($this->session->data['tracker_info'])) { 
  
	list($total_cost, $order_id) = $this->session->data['tracker_info']; 
?>
  
<script type="text/javascript">
document.write(unescape("%3Cscript id=%27pap_x2s6df8d%27 src=%27" + (("https:" == document.location.protocol) ? "https://" : "http://") + "my.афилиейтплатформа.com/scripts/trackjs.js%27 type=%27text/javascript%27%3E%3C/script%3E")); 
</script> 
<script type="text/javascript">
PostAffTracker.setAccountId('unikalen kod bla bla');

var sale = PostAffTracker.createSale();

sale.setTotalCost('<?php echo $total_cost; ?>');
sale.setOrderID('<?php echo $order_id; ?>');
sale.setProductID('');

PostAffTracker.register();
</script>
  
<?php 
	unset($this->session->data['tracker_info']); 
   } 
?>

От това по-елементарно няма на къде.
 
От: Малко помощ за интеграция афилиейт проследяващ код в Опенкарт

Edit: Сработи!
 
Последно редактирано:

Горе