※この記事は、厳密には正しくありません。
下記を参考にされることを、お薦めいたします。
Magento1.4.2以降の顧客データモデルの変更に関する注意
http://rack990.sakura.ne.jp/archives/entry-804.html
また、バージョン1.6以上では、下記のエクステンションを使用すれば解決します。
Principle-Works Magentoエクステンション
日本語化コアエクステンション
http://principle-works.jp/magento-extension
Magentoの日本語化においては、「PepMaq Japan Package14」という大変優れたエクステンションがあります。
Magentoコネクトからこれを入れるだけで、
- フリガナ対応
- 姓名の順序入れ替え
- 日本円表示で小数点以下の表示をしない
- 都道府県入力
- 日本語翻訳
ができます。
いやーすばらしい!!
・・・と思っていたんですが、Magentoのバージョン 1.4.2 での仕様変更に、フリガナ部分が対応しきれておらず、フォームから入力しても登録されずに空欄になってしまうのです。
(対象バージョンではないので、PEPMAQさんのせいではありません)
クライアントに納得していただければ、フリガナだけアンインストールして解決なのですが、そうもいきません。
悩んでいたら、解決方法が下記のサイトで見つかりました。
1.4.2.0でフリガナ(カナ)が登録できていないとき
http://lab.webarton.com/archives/338
名前のフリガナ項目追加
http://www.oenotria.com/index.php?option=com_content&view=article&id=57:furigana&catid=43:magento&Itemid=53
ただ、残念ながら上記の方法でうまく行くのはアカウントの方だけで、住所の方はやっぱりフォームから入力しても空欄のままです。
そこで、なんとかならないかとあちこちいじっていたら、なんだかできるようになりました(笑)
よくわからないでいじっている部分もありますので、間違っていたらご指摘いただけるとありがたいです。
なお、私は、直接データベースを操作してしまいましたが、データベースを直接いじらない方法も考えて見ました。
最後の方に書いておきましたので、ご参考にしていただければと思います。
データベース操作に関しては、下記の記事を参考にしました。
MAGENTOで顧客情報に「ふりがな」を追加する
http://rack990.sakura.ne.jp/archives/entry-561.html
それでは手順です。
MySQLを直接操作します。(私は、phpMyAdminで操作を行いました)
目次
1.テーブル「eav_attribute」を確認
このテーブルに、attribute_codeが、firstnamekana および lastnamekana となっている行が2つずつあるか確認してください。
エクステンションがインストールされていればあるはずです。
ただし、環境によって attribute_id は異なっているかもしれません。
attribute_id | entity_type_id | attribute_code |
---|---|---|
124 | 1 | firstnamekana |
126 | 2 | firstnamekana |
125 | 1 | lastnamekana |
127 | 2 | lastnamekana |
もしなければ、attribute_code が、firstname および lastname のものをコピーして、それぞれに kana を付け足して、新しい行として挿入してください。
entity_type_id が、1のものと2のものがあるので、計4行です。
挿入したときに attribute_id が上記と異なってしまってもかまいません。
ここで、attribute_code が、firstname および lastname の行(計4行)と、firstnamekana および lastnamekana の行(計4行)の attribute_id をメモしておいてください。
2.テーブル「eav_entity_attribute」を確認
このテーブルに、「1.でメモした firstnamekana および lastnamekana の行の attribute_id」の行(計4行)があるか確認してください。
エクステンションがインストールされていればあるはずです。
私の環境の場合は、attribute_id が 124, 125 , 126, 127 のものになります。
entity_attribute_id | entity_type_id | attribute_id |
---|---|---|
305 | 1 | 124 |
306 | 1 | 125 |
307 | 2 | 126 |
308 | 2 | 127 |
もしなければ、「1.でメモした、firstname および lastname の行の attribute_id」の行(計4行)をコピーして、それぞれの attribute_id を、「1.でメモした firstnamekana および lastnamekana の行の attribute_id」に置き換えて、新しい行として挿入してください。
挿入したときに entity_attribute_id が上記と異なってしまってもかまいません。
3.テーブル「customer_form_attribute」に行を挿入
「1.でメモした firstnamekana および lastnamekana の行の attribute_id」に対応した行を挿入します。
下記に従い、attribute_id をあなたの環境のものに置き換えて挿入してください。
form_code | attribute_id |
---|---|
adminhtml_customer | 124 |
checkout_register | 124 |
customer_account_create | 124 |
customer_account_edit | 124 |
adminhtml_customer_address | 126 |
customer_address_edit | 126 |
customer_register_address | 126 |
adminhtml_customer | 125 |
checkout_register | 125 |
customer_account_create | 125 |
customer_account_edit | 125 |
adminhtml_customer_address | 127 |
customer_address_edit | 127 |
customer_register_address | 127 |
上記のサイトに書いてある手順を行われた方は、一部、すでに挿入されていると思います。
おそらく、form_code が、checkout_register の行と、attribute_id が、126 および 127 のものが挿入されていないのではないでしょうか?
無い行は、新しい行として挿入してください。
これで、住所でもフリガナが保存されると思います。
実はこの手順は、firstname および lastname に対応する行を複製して、firstnamekana および lastnamekana にしたのと同じことです。
データベースをいじらない方法
最初に紹介したサイトでは、データベースを操作せずに、ファイルの先頭にPHPのコードを付け足して対応しています。
そのコードは、おそらく、3.の手順と、同じ事を行っています。
そこで、3.の手順をPHPに置き換えてみました。
おそらく、上記のサイトで掲載されているコードを下記のものに置き換えればよいと思います。
※この操作は実際には行っていないので、試される方は十分注意してください。
<?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(); ?>
1つ目と2つ目のブロックは、上記のサイトで掲載されているコードにおいて、
$attribute->setData(‘used_in_forms’, array()) に、checkout_register を追加しています。
これらは、アカウント情報に対するものです。
3つ目と4つ目のブロックは、住所に対するものになります。
$attribute = $eavConfig->getAttribute() の1つ目の引数が、customer_address になっているのがポイントです。
$attribute = $eavConfig->getAttribute() の1つ目の引数は、テーブル「eav_entity_type」で調べられます。
このテーブルの entity_type_id の値が、テーブル「eav_entity_attribute」の、entity_type_id に対応しています。
そして、entity_type_code の値が引数になっています。
ここまでくれば、住所でもフリガナが保存されるようになります。
ただ、PEPMAQさんのエクステンションは、管理画面の住所の編集の部分に対応されていないようで、姓名の順序などが英文表記の場合と同じになっています。
こちらは、該当するphtml を開いて位置を変えるだけなので、敷居は低いと思います。
「customer_eav_attribute」テーブルの、sort_orderフィールドの値を変えることで表示順を変えることができます。
私は、力尽きたのでそのままにしていますが、機会があれば追記しておきます。
(2010年6月29日 「Magentoの顧客管理でフィールドの順序を変える」 を公開しました)
この調子では、Magentoが日本で流行るのは、まだ先かなぁ。
この記事を書いた人
-
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き
1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数
最新の投稿
ご質問・ご相談などありましたら
お気軽にお問い合わせください
資料請求・お問い合わせにはメールアドレスが必要です
コメントを残す