2013年2月12日

複数ウェブサイト+複数通貨での支払い / Multi Website + Currency Checkout - Magento

MagentoのチェックアウトはウェブサイトのBase Currencyでしかチェックアウトできないようになっています。
そのためアメリカのユーザが米ドル(USD)で、日本のユーザが日本円(JPY)でチェックアウトできるようにするには、Paypalプラグインを使用するか、サイトを複数作成する方法が一般的です。
このページは複数のウェブサイトを作成し、それぞれに通貨を設定する方法を記載しています。

完成図
www.example.com (JPY, 日本語)
www.example.com/en/ (USD, 英語)

  1. ルートカテゴリ作成
    Catalog ⇛ Manage Categories ⇛ New Root Category
    Name: English Root
    Is Active: Yes
    Include in Navigation Menu: Yes / No
  2. ウェブサイト作成
    System ⇛ Manage Stores ⇛ Create Website
    Name: English
    Code: en
  3. ストア作成
    System ⇛ Manage Stores ⇛ Create Store
    Website: (2)で作成したウェブサイト
    Name: Main Website
    Root Category: (1)で作成したルートカテゴリ
  4. ストアビュー作成
    System ⇛ Manage Stores ⇛ Create Store View
    Store: (3)で作成したストア
    Name: English View
    Code: en
    Status: Enabled
  5. URL設定
    左上の Current Configuration Scope を(2)で作成したウェブサイトに変更。
    System ⇛ Configuration ⇛ Web ( GENERAL ) ⇛ Unsecure ⇛ Base Link URL を {{unsecure_base_url}}en/ に変更。
    同じように
    System ⇛ Configuration ⇛ Web ( GENERAL ) ⇛ Secure ⇛ Base Link URL を {{secure_base_url}}en/ に変更。

  6. en ディレクトリ作成
    1. ルートディレクトリにenディレクトリを作成。
    2. index.php と .htaccess ファイルをenディレクトリ内にコピー
    3. en/index.php の下記の部分を
    $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';
    $mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';
    以下のように変更。
    $mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : 'en';
    $mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'website';
  7. ウェブサイト通貨
    左上の Current Configuration Scope が Default Config になっていることを確認の上
    System ⇛ Configuration ⇛ Catalog ( CATALOG ) ⇛ Price ⇛ Catalog Price Scope が Website になっているか確認。

  8. Base Currency設定
    左上の Current Configuration Scope を(2)で作成したウェブサイトに変更。
    System ⇛ Configuration ⇛ Currency Setup ( GENERAL ) ⇛ Currency Options ⇛ Base Currency を変更。(この場合は US Dollar)

  9. 各種設定
    Productの値段はそれぞれサイトごとに指定する必要があります。でないと日本円で100円と指定したものが、100米ドルにそのまま使用されます。

1~6までが複数のウェブサイト作成。
7,8でウェブサイトごとに別々のBase Currencyを設定することで複数の通貨での支払いが可能になります。

2013年2月8日

よく使いそうな日付関連まとめ - PHP



タイムゾーンの取得
<?php echo date_default_timezone_get(); ?>
タイムゾーンの設定
<?php date_default_timezone_set('Asia/Tokyo'); ?>
サポートされるタイムゾーンのリスト
http://www.php.net/manual/ja/timezones.php



日付
<?php
 echo date('Y年n月j日');  // 2013年2月8日
 echo date('Y-m-d H:i:s'); // 2013-02-08 11:28:04
 echo date('F jS, l');  // February 8th, Friday
?>


時刻
<?php
 echo date('H:i:s');   // 11:28:04
 echo date('g:ia');   // 11:28am
?>


現在のタイムスタンプ
<?php
 echo time();
 echo date('U');
 echo mktime(date('H'),date('i'),date('s'),date('m'),date('d'),date('Y'));
 echo strtotime('now');
?>


日付情報
<?php var_dump(getdate()); 
// array
//  'seconds' => int 20
//  'minutes' => int 29
//  'hours' => int 11
//  'mday' => int 8
//  'wday' => int 5
//  'mon' => int 2
//  'year' => int 2013
//  'yday' => int 38
//  'weekday' => string 'Friday' (length=6)
//  'month' => string 'February' (length=8)
//  0 => int 1360276160
?>
月の日数
<?php echo date('t'); ?>  // 28
うるう年判定
<?php echo date('L'); ?>  // 0 or 1
年始から何日目か
<?php echo date('z日目'); ?>


日付計算例

現在時刻より1週間と2日、4時間2秒前
<?php
 echo date('Y年n月j日 H時i分s秒', mktime(date('H') - 4,date('i'),date('s') - 2,date('m'),date('d') - 9,date('Y')));
 echo date('Y年n月j日 H時i分s秒', strtotime("-1 week -2 days -4 hours -2 seconds"));
?>
第17週目の日曜日
<?php echo date("Y年n月j日", strtotime("2013-W17-0")); 
// 0=日曜日, 1=月曜日, 2=火曜日, 3=水曜日, 4=木曜日, 5=金曜日, 6=土曜日
?>
年始から123日目の日付
<?php
 echo date("Y年n月j日", mktime(0, 0, 0, 1, 1+123, 2013));
 echo date("Y年n月j日", strtotime("+123 days", strtotime('2013-01-01')));
?>