O código abaixo faz parte de uma Controller, onde os dados estão disponíveis, e iremos armazenar os dados via sessão, para que possamos resgatá-los em nosso observer.
<?php
class Default_Controller extends Mage_Core_Controller_Front_Action {
public function indexAction() {
$session = Mage::getSingleton( 'checkout/session' );
$session->setDirectCheckoutUtmSource( $_GET['utm_source'] );
$session->setDirectCheckoutUtmCampaing( $_GET['utm_campaing'] );
}
?>
Aqui, em nosso observer, eu resgato os parâmetros que foram passados via sessão pela nossa Controller.
<?php
class Projeto_CustomBlocks_Model_NomeDoObserver {
public function NomeDoMetodo() {
$session = Mage::getSingleton('checkout/session');
$utmSource = $session->getDirectCheckoutUtmSource();
$utmCampaing = $session->getDirectCheckoutUtmCampaing();
$query = array();
if ( !empty( strval( $utmSource ) ) ) {
$query[] = "utm_source=$utmSource";
}
if ( !empty( strval( $utmCampaing ) ) ) {
$query[] = "utm_campaing=$utmCampaing";
}
$query = implode( "&", $query );
header("Location: " . Mage::getUrl('checkout/onepage', array( '_query' => $query)));
}
}