Magentoの顧客管理でフィールドの順序を変える

以前の記事「Magentoの住所でフリガナが保存されない」の続きです。
コメントで、管理画面の表示順序を直せないかとリクエストを頂きましたので、その方法です。

※この記事では、データベースを直接操作していますが、本来ならばセットアップ用のスクリプトを組むべきです。
このへん、まだ私はよくわからないのですよね。
どなたか、ご教授いただけるとありがたいのですが。

前回の記事の内容を適用しただけでは、管理画面で顧客情報を開いた時の項目の表示順が、日本の様式に合っていません。
氏名は、「プリフィックス・名・ミドルネーム・姓・サフィックス・・・」の順に
住所は、「番地・市区町村・都道府県・国名・・・」の順になっています。

これを、任意の順序に変更します。

表示順はどこで決まっているのか?

顧客データは、データベースの「customer_eav_attribute」テーブルで規定されています。
この中の、sort_orderフィールドが、フィールドの表示順になります。
この値を書き換えてやるだけで、並べたい順序にすることができます。

新しい表示順を決める

しかし、「customer_eav_attribute」テーブルには、実際の項目名はありません。
attribute_id フィールドが項目を表す一意の値ですので、これをキーにして、「eav_attribute」テーブルを参照します。
frontend_label フィールドが項目名(英語表記)です。
これをもとに、新しい表示順を決めます。

頭の中だけでこれらを考えるのは大変ですので、私はExcelを使って、下記の要領で sort_order の値を決めました。

admincustomer.jpg

  1. 「customer_eav_attribute」テーブルと、「eav_attribute」テーブルをエクスポートする。
    phpMyAdminであれば、Excel形式がおすすめ。

  2. エクスポートしたテーブルをExcelで開いて、「customer_eav_attribute」テーブルのattribute_idの値に対応する、「eav_attribute」テーブルの entity_type_id と frontend_label を得る
    (VLOOKUP関数を使いましょう)

  3. Excel上で、並べたい順に行を並べ替える。
    (行番号をクリックして行ごと選択し、「切り取り→切り取ったセルの挿入」で移動)
    entity_type_id の値が1の項目はアカウント情報。2の項目は住所用のものなので、分けて考えること。

  4. 並べ終わったら、sort_order の値を、昇順になるように変更する。
  5. phpMyAdminなどで、実際のデータベース上の「customer_eav_attribute」テーブルの sort_order の値を変更する

Excelで並び替えたものをcsv書き出しして、データベースにインポートしてもよいのですが、失敗すると怖いですし、実際に修正する値はそれほど多くないので、私は修正したい部分だけ phpMyAdmin で打ちかえました。

これで、管理画面をリロードしてみれば、sort_orderの値の順に入力項目が並びかえられています。

なお、不要項目を非表示にするのは、また別の手段が必要になります。

こちらはまた、別の機会ということにさせてください。(今回も、力尽きました・・・)

Magentoの顧客管理でフィールドの順序を変える” に対して 2 件のコメントがあります

  1. mangento初心者 より:

    早速素晴らしい記事を書いていただき、有難うございます!
    後ほど記事を参考に、項目の並び順を変えてみます。
    まずはお礼まで。

  2. >mangento初心者さん
    私も基本をすっ飛ばして試行錯誤でやっているので、新しいこととかわかったら教えてくださいね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です