※この記事は、厳密には正しくありません。
下記を参考にされることを、お薦めいたします。
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 2025 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordCamp Kansai 2016 セッションスピーカー
WordBench京都、WordBench神戸、WordBench奈良、WordPress Meetup八王子など登壇多数
最新の投稿
ブログ2025年11月16日WordCamp Kansai 2025 で「触れるけど壊れないWordPressの作り方」についてお話しました
技術記事2025年6月15日ブロックテーマ時代のWordPress制作ワークフローとは
技術記事2025年3月7日WordPressに百千鳥フォントを入れて遊んでみました
ブログ2025年1月3日移転のお知らせ(2024年)

ご質問・ご相談などありましたら
お気軽にお問い合わせください
資料請求・お問い合わせにはメールアドレスが必要です








mangento初心者 へ返信する コメントをキャンセル