Note to self for Magento and EC

Sunday, July 17, 2011

フリガナ対応 1

Magentoは日本のフリガナに対応していません(v1.5.1.0時点)。
そこで、下記のサイトで紹介されていた方法で対応を行いました。
(素晴らしい情報、ありがとうございます!)

Magentoの住所でフリガナが保存されない



上記のサイトにあるように、まずは下記のExtensionを導入します。

PepMaq_Japan_Furigana
または
PepMaq_Japan_Package14
(上記を含めたパッケージ)

これはフリガナ機能を追加する素晴らしい拡張なのですが
残念ながら対応バージョンがv1.4となっており、
v1.5.1.0に導入するには修正が必要になります。

エクステンションを導入すると、フリガナのフォームが追加されます。
ただ、そのままだとフリガナを入力してもDBに保存されないため
下記の修正を行います。

* デフォルトのデザインパッケージの場合
app/design/frontend/base/default/template/customer/form
register.phtml

このファイルの最後に下記を追加

<?php
$eavConfig = Mage::getSingleton('eav/config');
$attribute = $eavConfig->getAttribute('customer', 'firstnamekana');
$attribute->setData('used_in_forms',
    array(
        'checkout_register',
        'customer_account_edit',
        'customer_account_create',
        'adminhtml_customer'
        ));
$attribute->save();
?>
<?php
$eavConfig = Mage::getSingleton('eav/config');
$attribute = $eavConfig->getAttribute('customer', 'lastnamekana');
$attribute->setData('used_in_forms',
    array(
        'checkout_register',
        'customer_account_edit',
        'customer_account_create',
        'adminhtml_customer'
        ));
$attribute->save();
?>
<?php
$eavConfig = Mage::getSingleton('eav/config');
$attribute = $eavConfig->getAttribute('customer_address', 'firstnamekana');
$attribute->setData('used_in_forms',
    array(
        'adminhtml_customer_address',
        'customer_address_edit',
        'customer_register_address'
        ));
$attribute->save();
?>
<?php
$eavConfig = Mage::getSingleton('eav/config');
$attribute = $eavConfig->getAttribute('customer_address', 'lastnamekana');
$attribute->setData('used_in_forms',
    array(
        'adminhtml_customer_address',
        'customer_address_edit',
        'customer_register_address'
        ));
$attribute->save();
?>


次に、この処理を実行するために
フロントエンドのマイアカウントからユーザーを一度新規作成します。
レジに進んだ時のユーザー登録ではここを通らないのでだめ。

この時点でDBに登録できるようになっているので
上記で追加したregister.phtmlの処理を削除(元に戻す)します。
一度処理を行えば良いので、エクステンションのインストール時など
本当はもっと別のところで処理するべきなのでしょうが、
Magentoの仕組みがまだよくわかっていないため暫定対処しておきます。


また、このままでは日本語以外の言語設定でユーザー登録時に
カナ用フィールドが表示されないため、フリガナが必須である
アラートが表示され登録できません。

そのため、DBの設定を変更して必須ではなくします。
eav_attributeテーブルのattribute_codeが
firstnamekana
lastnamekana
となっているレコード(2個ずつ、計4個)の
is_requiredフィールドを0に設定します。

フリガナはフォームで入力チェックが行われるため
これで日本語環境時は必須、他言語環境時は不要となりました。


ただ、この時点でもまだ下記の問題点があります。
- カナはアカウント情報用と住所情報用の2種類があるが、
  ユーザーが登録する画面によって片方しか登録されない
- 管理画面の顧客情報でカナの表示順がバラバラ

これらについては別途記載したいと思います。

0 comments:

Post a Comment