2010-04-09 3 views
1

Il existe certains produits pour lesquels j'aimerais disposer d'un message de confirmation de paiement spécial différent de celui par défaut.Comment modifier de façon dynamique les messages par défaut d'ubercart à partir de mon module?

Je sais que je pourrais probablement le faire par en changeant la page de redirection par défaut à autre chose. [Je ne sais pas si cela introduirait un autre problème]

Cependant, je voudrais savoir s'il existe une norme/meilleure façon d'aborder ce problème.

Merci !,

D

Répondre

1

Considérons le module String Overrides. Voici une citation à ce sujet (à partir de la page du projet du module):

Fournit un moyen rapide et facile de remplacer n'importe quel texte sur le site.

Caractéristiques:

  • permutés tout ce qui est passé à travers t()
  • support Locale, vous permettant de passer outre les chaînes dans toutes les langues
  • Possibilité d'importer/exporter * .po fichiers, pour faciliter la migration de le module Locale
  • Notez que ceci ne remplace pas Locale car avoir des milliers de surcharges peut causer plus de douleur que d'avantages. Utilisez ceci seulement si vous avez besoin de quelques changements de texte faciles.
+0

Va montrer qu'il y a habituellement un moyen plus facile :-) – dkinzer

0

Je suppose que la seule autre façon possible de faire ce que je pense est à prioritaire la fonction de thème que Ubercart utilise pour afficher le message. Et cela semble probablement le plus logique.

Dans ce cas, je l'emporterait sur theme_uc_cart_complete_sale

je pourrais mettre un

$_SESSION['is_special_product'] == TRUE; 

puis définissez $ message à mon special_message de $ si elle a été définie.

if ($_SESSION['special_product']) { 
     $special_message = t('This is my special message'); 
     $message = variable_get('special_product_message', $special_message; 
    } 

Enfin, pour passer outre de mon module je devrai accrocher dans le crochet pré-processus:

function $modulename_prepocess_$hook(&$message) { 
     if ($_SESSION['special_product']) { 
     $special_message = t('This is my special message'); 
     $message = variable_get('special_product_message', $special_message; 
    } 
} 

Il est important de noter que il ne suffit pas d'avoir cette fonction dans votre module. Les fonctions de prétraitement ne sont invoquées que lorsque le fichier modèle qui remplace la fonction de thème est appelé.

Plus de détails peuvent être trouvés à http://drupal.org/node/223430

Questions connexes