Ubercart 3 (Drupal 7) 的多币种

Posted

技术标签:

【中文标题】Ubercart 3 (Drupal 7) 的多币种【英文标题】:Mulitcurrency for Ubercart 3 (Drupal 7) 【发布时间】:2011-12-03 01:43:04 【问题描述】:

是否存在适用于 Ubercart 3 (drupal 7) 的任何解决方案(如 Drupal Ubercart: multi-currency? )或更好地实现此类事情的提示?

【问题讨论】:

朋友去过那里,恐怕目前那里什么都没有。最接近您的方法是将 Multi-currency Support for Ubercart 模块的自定义端口执行到 Drupal 7 似乎如此。我唯一的解决方案是破解 uc_store.module 文件以提供类似多币种的东西 【参考方案1】:

作为解决方案之一,我找到并使用了这个:

在ubercart/store/uc_store.module中添加新的define,例如

define('RUR',0.33);

其中 0.33 - 是默认货币和新货币 (RUR) 之间的差值。 卢尔/美元 = 0.33

并在 uc_currency_format 函数中添加:

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

功能齐全:

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;

【讨论】:

此解决方案的 10 倍。看起来如此简单和干净。使用这种方法有缺点吗? 缺点:在这个例子中是核心变化。同样在 Ubercart 的管理和其他部分,它仍然是商店的默认货币。【参考方案2】:

我不建议您对其进行硬编码。您将在下次更新时丢失所有更改。试试看这个话题:http://drupal.org/node/1434470#comment-5582812

【讨论】:

以上是关于Ubercart 3 (Drupal 7) 的多币种的主要内容,如果未能解决你的问题,请参考以下文章

带有 ubercart 的 drupal 6 或 7

主题为Drupal 7的Ubercart“/ cart”页面

Ubercart 和 Drupal 7 - hook_add_to_cart

Drupal/Ubercart ...节点样式?

Drupal,Ubercart - 将自定义字段添加到结帐表单

Drupal Ubercart:多币种?