2011-10-07 3 views
3

Existe-t-il des solutions pour Ubercart 3 (drupal 7) (comme Drupal Ubercart: multi-currency?) ou des astuces pour une meilleure réalisation de telles choses?Multidiffusion pour Ubercart 3 (Drupal 7)

+1

Été là mon ami, j'ai peur qu'il n'y ait absolument rien là pour le moment. Le plus proche est d'effectuer un port personnalisé du module [Support multi-devises pour Ubercart] (http://drupal.org/project/multicurrency) vers Drupal 7 – Clive

+0

Seulement la solution que je fais - est hack uc_store.module fichier pour donner quelque chose comme multidevises – m0rg0t

Répondre

1

Comme l'une des solutions, je trouve et utilise ceci:

dans Ubercart/magasin/uc_store.module ajouter une nouvelle définition, par exemple

define('RUR',0.33); 

où 0,33 - est la différence entre la devise par défaut et le nouveau devise (RUR). RUR/dollar = 0,33

et en fonction uc_currency_format ajouter ceci:

global $language; 
    if ($language->language=='ru') { 
    $sign = ' RUB'; 
    $thou = ','; 
    $dec = '.';  
    $value = $value/RUR; 
    $sign_after = FALSE; 
    }; 

Et plein exercice:

function uc_currency_format($value, $sign = NULL, $thou = NULL, $dec = NULL) { 
    if ($value === NULL) { 
    return NULL; 
    } 

    $output = ''; 

    $sign_after = variable_get('uc_sign_after_amount', FALSE); 
    $prec = variable_get('uc_currency_prec', 2); 
    if (is_null($sign)) { 
    $sign = variable_get('uc_currency_sign', '$'); 
    } 
    if (is_null($thou)) { 
    $thou = variable_get('uc_currency_thou', ','); 
    } 
    if (is_null($dec)) { 
    $dec = variable_get('uc_currency_dec', '.'); 
    }; 

    // If the value is significantly less than the minimum precision, zero it. 
    if ($prec > 0 && round(abs($value), $prec + 1) < pow(10, -$prec)) { 
    $value = 0; 
    } 

    global $language; 
    if ($language->language=='ru') { 
    $sign = '$'; 
    $thou = ','; 
    $dec = '.';  
    $value = $value/RUR; 
    $sign_after = FALSE; 
    }; 

    // Force the price to a positive value and add a negative sign if necessary. 
    if ($value < 0) { 
    $value = abs($value); 
    $output .= '-'; 
    } 

    // Add the currency sign first if specified. 
    if ($sign && !$sign_after) { 
    $output .= $sign; 
    } 

    // Format the number, like 1234.567 => 1,234.57 
    $output .= number_format($value, $prec, $dec, $thou); 

    // Add the currency sign last if specified. 
    if ($sign && $sign_after) { 
    $output .= $sign; 
    }; 

    if ($value=='0') { 
    $output = t('free'); 
    }; 
    return $output; 
} 
+1

10x pour cette solution. Regardez si simple et propre. Y at-il des inconvénients à utiliser cette méthode? –

+0

désavantages: dans cet exemple c'est les changements de base. Aussi dans l'admin et d'autres parties d'Ubercart c'est encore la tendance par défaut du magasin. – m0rg0t

Questions connexes