Magento が姓と名を尋ねる理由は何ですか?
-
12-12-2019 - |
質問
ストアのオーナーとして、ストアを運営する際に 2 つの名前フィールド データ (名と姓) は非常に不便です。
私が使用している配送業者のほとんどは、配送先住所をインポートするときにフルネーム データを 1 つだけ要求します。配送先住所をエクスポートした後、姓名データの両方を 1 つのデータとしてマージする必要があります。(決済会社でも氏名データは1件のみをお願いします)
顧客を名前で管理または検索すると問題が発生する
名前データを 1 つだけ取得するのは面倒ですが、Magento がさまざまな方法で名と姓を異なる方法で使用するため(ウェルカムメッセージでも)問題が発生したため、あきらめました。
お客様から見ても不便そうです。名を入力し、他のフィールドをクリックして、フルネームを入力する代わりに姓を入力します。(チェックアウトはコンバージョン率に関連するため重要です)
Magento がストアオーナーとして取得できる名前データが 1 つだけであることを願っています (Magento はストアオーナーのためにも作られていると思います)
開発者の見解として、Magento が 2 つの名前フィールドを要求する理由を少なくとも知ることはできますか?何かメリットはあるのでしょうか?
例)トップの電子商取引会社である Amazon と ebay は 1 つだけを質問します
これは アマゾン 新しい住所フォーム - 名前フィールドは 1 つだけ
eBay 新しい住所フォーム - 名前フィールドは 1 つだけ
解決
マゼントのアーキテクチャの一部と名と姓を使用することです。
あなたの質問はなぜこれが事実であるかを尋ねます。おそらく、Magentoはfirstname
とlastname
属性を追加しました(オプションのmiddlename
のものと一緒にデフォルトとして定義されていますが、表示されていません)。これは他のより確立されたサイトからの出発ですが、マゼントは可能な範囲の範囲の加盟店に対応しなければならず、できるだけ特殊でないことを試みる必要があります。
しかし、マゼントのすべてのように、石には何も設定されず、それは変更することができますが、これはコーディング運動であり、その結果、非常に複雑な手順になることがあります。これを有効にするには、いくつかの異なることをする必要があります。私が下の撮影するステップを試してみてください。
1。フルネーム属性を追加します
顧客への属性として追加される必要があります。これを処理するモジュールを作成できますが、基本的には、属性スクリプトを実行してfullname
を顧客属性セットに対して属性としてインストールする必要があります。
これについては、Web周辺にはたくさんの便利なチュートリアルがあります。 real="noreferrer"> Excellence Magentoは素晴らしい1つ(コード下記に部分的に表示されている、あなたの要件に編集されました)
$setup->addAttribute('customer', 'fullname', array(
'type' => 'text',
'input' => 'text',
'label' => 'Full Name',
'global' => 1,
'visible' => 1,
'required' => 1,
'user_defined' => 1,
'default' => '0',
'visible_on_front' => 1
));
.
2。テンプレートに新しい属性を追加
あなたは今やあなたの新しい属性のフィールドをすべての関連テンプレートに追加する必要があります。それによってそれをユーザ入力を許可する。
プロセス内の最初の名前と姓のフィールドを該当する場所に削除できます。
3。 firstName属性とlastName属性を調整する
姓名と姓はデータベース内の必須属性であるため、属性自分自身からrequired
ステータスを削除するまで多くのことができません。
設定を調整するために単一のスクリプトを書く必要があります。コードは次のように似ています。
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('customer','firstname');
if ($attributeId) {
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attribute->setIsRequired(false)->save();
}
$attributeId = Mage::getResourceModel('eav/entity_attribute')->getIdByCode('customer','lastname');
if ($attributeId) {
$attribute = Mage::getModel('catalog/resource_eav_attribute')->load($attributeId);
$attribute->setIsRequired(false)->save();
}
.
その後、firstname
とlastname
を単一のfullname
フィールドに正常に転送する必要があります。
既存の顧客がいる場合は、firstname
フィールドとlastname
フィールドとfullname
を組み合わせるスクリプトを作成できるようになります。
他のヒント
シンプルそれはMagentoアーキテクチャによって異なります。Magentoは、属性として「ファーストネーム」または「姓」を保存し、またPeoplesによってめったに使用されない「ミドルネーム」。
なぜこのシナリオを持っているのかわかりません。
マジェントには、 $customer->getName()
常に完全な名前を返す顧客オブジェクトの関数。
getfullName() や getData('fullname') ではなく getName() を使用する必要があるだけです。
これであなたの懸念がすべて解決されることを願っています。:)
開発者の見解として、Magento が 2 つの名前フィールドを要求する理由を少なくとも知ることはできますか?何かメリットはあるのでしょうか?
first_name と last_name からフルネームを作成でき、それらを別々に使用することもできますが、名前のフィールドが 1 つしかない場合、それはできません。フロントエンドレンダリングと同様に、次のように挨拶を取得したいと考えています Hello Aman
それよりも Hello Aman Srivastava
.