質問

ストアのオーナーとして、ストアを運営する際に 2 つの名前フィールド データ (名と姓) は非常に不便です。

  • 私が使用している配送業者のほとんどは、配送先住所をインポートするときにフルネーム データを 1 つだけ要求します。配送先住所をエクスポートした後、姓名データの両方を 1 つのデータとしてマージする必要があります。(決済会社でも氏名データは1件のみをお願いします)

  • 顧客を名前で管理または検索すると問題が発生する

  • 名前データを 1 つだけ取得するのは面倒ですが、Magento がさまざまな方法で名と姓を異なる方法で使用するため(ウェルカムメッセージでも)問題が発生したため、あきらめました。

  • お客様から見ても不便そうです。名を入力し、他のフィールドをクリックして、フルネームを入力する代わりに姓を入力します。(チェックアウトはコンバージョン率に関連するため重要です)

Magento がストアオーナーとして取得できる名前データが 1 つだけであることを願っています (Magento はストアオーナーのためにも作られていると思います)

開発者の見解として、Magento が 2 つの名前フィールドを要求する理由を少なくとも知ることはできますか?何かメリットはあるのでしょうか?

例)トップの電子商取引会社である Amazon と ebay は 1 つだけを質問します

これは アマゾン 新しい住所フォーム - 名前フィールドは 1 つだけ

enter image description here

eBay 新しい住所フォーム - 名前フィールドは 1 つだけ

enter image description here

役に立ちましたか?

解決

マゼントのアーキテクチャの一部と名と姓を使用することです。

あなたの質問はなぜこれが事実であるかを尋ねます。おそらく、Magentoはfirstnamelastname属性を追加しました(オプションの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();
}
.

その後、firstnamelastnameを単一の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.

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top