2010-06-21 3 views
4

Lorsque l'utilisateur est envoyé à la "page de remerciements" (panier/caisse/complète), je dois obtenir des informations sur la commande pour l'envoyer à une API de suivi tierce . Le problème est que sur ce point il n'y a aucune information sur la commande, que ce soit en session ou dans tout autre endroit que je connaisse. Pour contourner ce problème, j'ai tenté d'interroger la dernière commande pour l'utilisateur actuellement connecté, mais cela échoue lorsque l'utilisateur n'est pas enregistré car Ubercart enregistre un compte à la volée et laisse l'utilisateur non enregistré. Donc, ma question est la suivante: y a-t-il un moyen d'obtenir l'objet Order à ce stade (panier/checkout/complete) du template page-cart.tpl.php?Obtenir automatiquement la commande que l'utilisateur vient de compléter dans Ubercart

Ma solution à ce jour:

Prenez le $ _SESSION [ 'cart_order'] variable à panier/caisse/examen, attribuer à $ _SESSION [ 'faux_order'] et utiliser faux_order dans mon script au panier/caisse/complet ... qui est aussi laid que de voir une girafe étrangler à mort.

Répondre

4

AVERTISSEMENT! N'UTILISEZ PAS LA RÉPONSE CI-DESSUS. Voir mon commentaire pour l'explication.

Au lieu de la réponse présentée ci-dessus (que vous ne devez jamais utiliser!) Créer une coutume Ubercart action conditionnelle (CA) et l'ajouter à la section « Trigger: le client termine checkout » dans votre flux de travail Ubercart CA, trouvé dans https://dev.betternow.org/admin/store/ca/overview

ici, je suis en train de définir une coutume CA

function my_module_ca_action() { 
    $order_arg = array(
     '#entity' => 'uc_order', 
    '#title' => t('Order'), 
    ); 


    $actions['my_module_status_update'] = array(
     '#title' => t('Some Title'), 
    '#category' => t('Custom UC AC'), 
    '#callback' => 'my_module_some_function_name', 
    '#arguments' => array(
     'order' => $order_arg, 
      ), 
      ); 
     return $actions; 
} 

maintenant, je peux utiliser l'identifiant de l'ordre dans ma propre fonction de rappel définie dans mon module:

function my_module_some_function_name(&$order, $settings) { 
    echo "This is the order id: " . $order->order_id; 
} 

J'utilise moi-même cette approche pour afficher une page de remerciement aux utilisateurs avec un lien vers le produit qu'ils viennent d'acheter.

0

$ _SESSION ['cart_order'] est disponible sur la page de commande page.

Alors ...

Créer un cookie représentant l'ID de commande comme ceci:

<?php setcookie('orderID', '$_SESSION['cart_order']'); ?> 

Ensuite, sur la page de confirmation de commande , vous pouvez appeler le cookie sauvé comme ceci:

Si l'utilisateur revient ensuite et crée une nouvelle commande, le cookie sera mis à jour dès qu'il atteindra la page de révision de la commande.

Questions connexes