以前の記事「Magentoの住所でフリガナが保存されない」の続きです。
コメントで、管理画面の表示順序を直せないかとリクエストを頂きましたので、その方法です。
※この記事では、データベースを直接操作していますが、本来ならばセットアップ用のスクリプトを組むべきです。
このへん、まだ私はよくわからないのですよね。
どなたか、ご教授いただけるとありがたいのですが。
前回の記事の内容を適用しただけでは、管理画面で顧客情報を開いた時の項目の表示順が、日本の様式に合っていません。
氏名は、「プリフィックス・名・ミドルネーム・姓・サフィックス・・・」の順に
住所は、「番地・市区町村・都道府県・国名・・・」の順になっています。
これを、任意の順序に変更します。
表示順はどこで決まっているのか?
顧客データは、データベースの「customer_eav_attribute」テーブルで規定されています。
この中の、sort_orderフィールドが、フィールドの表示順になります。
この値を書き換えてやるだけで、並べたい順序にすることができます。
新しい表示順を決める
しかし、「customer_eav_attribute」テーブルには、実際の項目名はありません。
attribute_id フィールドが項目を表す一意の値ですので、これをキーにして、「eav_attribute」テーブルを参照します。
frontend_label フィールドが項目名(英語表記)です。
これをもとに、新しい表示順を決めます。
頭の中だけでこれらを考えるのは大変ですので、私はExcelを使って、下記の要領で sort_order の値を決めました。
- 「customer_eav_attribute」テーブルと、「eav_attribute」テーブルをエクスポートする。
phpMyAdminであれば、Excel形式がおすすめ。 - エクスポートしたテーブルをExcelで開いて、「customer_eav_attribute」テーブルのattribute_idの値に対応する、「eav_attribute」テーブルの entity_type_id と frontend_label を得る
(VLOOKUP関数を使いましょう) - Excel上で、並べたい順に行を並べ替える。
(行番号をクリックして行ごと選択し、「切り取り→切り取ったセルの挿入」で移動)
entity_type_id の値が1の項目はアカウント情報。2の項目は住所用のものなので、分けて考えること。 - 並べ終わったら、sort_order の値を、昇順になるように変更する。
- phpMyAdminなどで、実際のデータベース上の「customer_eav_attribute」テーブルの sort_order の値を変更する
Excelで並び替えたものをcsv書き出しして、データベースにインポートしてもよいのですが、失敗すると怖いですし、実際に修正する値はそれほど多くないので、私は修正したい部分だけ phpMyAdmin で打ちかえました。
これで、管理画面をリロードしてみれば、sort_orderの値の順に入力項目が並びかえられています。
なお、不要項目を非表示にするのは、また別の手段が必要になります。
こちらはまた、別の機会ということにさせてください。(今回も、力尽きました・・・)
この記事を書いた人
![川井 昌彦](https://www.cherrypieweb.com/wp/wp-content/uploads/2024/01/DSC_2091-150x150.jpg)
-
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き
1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数
最新の投稿
技術記事2024年4月14日クエリ―ループブロックで結果なしの時にブロックごと非表示にする方法
技術記事2024年3月31日ブロックテーマで(Google Fonts以外の)日本語Webフォントを使う
日記2023年12月22日小説を読んでAIがちょっと好きになった – 「タイタン」/野崎まど
技術記事2023年12月16日あなたの悩みは、開発者に役に立つ悩みかも
コメントを残す