ฉันจะลบชื่อ / ชื่อกลางของลูกค้าออกจากหน้าเช็คเอาต์ได้อย่างไร


19

ตั้งแต่อัพเกรดเป็น Magento รุ่นล่าสุดฉันสังเกตเห็นว่ามีรายการใหม่ปรากฏขึ้นในหน้าเช็คเอาต์เพื่อขอชื่อลูกค้า / ชื่อกลาง

ฉันจะลบรายการ "ชื่อกลาง / เริ่มต้น" จากหน้าเช็คเอาต์ได้อย่างไร

คำตอบ:


46

Magento 1.9.2.1 อัพเดตมีผลกับชื่อกลางอย่างไร

ก่อนแก้ปัญหา

ฉันมีปัญหาเดียวกันเมื่อปรับปรุงไปวีโอไอพี CE 1.9.2.1จากวีโอไอพี CE 1.9.2.0 การอัปเดตทำให้ชื่อกลางแสดงขึ้น แต่เมื่อฉันตรวจสอบผู้ดูแลระบบSystem > Configuration > Customers > Customer Configuration > Name and Address Optionsการตั้งค่า "แสดงชื่อกลาง (เริ่มต้น)" แสดงข้อความ "ไม่" - ซึ่งเป็นสิ่งที่ฉันต้องการ ฉันเปลี่ยนการตั้งค่าเป็น "ใช่" จากนั้นกลับสู่ "ไม่" ก่อนคลิก "บันทึกการกำหนดค่า" และสิ่งนี้จะลบชื่อกลาง / เริ่มต้นจากการชำระเงินทันทีเมื่อฉันรีเฟรชหน้าเว็บ

ฐานข้อมูล

ในกรณีของฉันฉันกำลังปรับปรุงร้านค้าจาก Magento 1.8.x เป็น Magento 1.9.x มันอยู่ในสภาพแวดล้อมการพัฒนาของฉันที่ฉันอัปเดตจาก 1.9.2.0 เป็น 1.9.2.1 เพื่อให้เว็บไซต์สดเป็นปัจจุบันเมื่อเราเรียกใช้การอัปเกรดจาก 1.8.x เป็น 1.9.x เราจะต้องอัปเดตการตั้งค่าผู้ดูแลระบบจำนวนมากซึ่งเราวางแผนที่จะทำโดยตรงในฐานข้อมูลด้วยแบบสอบถาม ในฐานข้อมูลคุณสามารถดูว่า Magento เปลี่ยนการตั้งค่าชื่อกลางอย่างไร

การตั้งค่าผู้ดูแลระบบที่แสดงอาจทำให้เข้าใจผิด

ตาราง `จับ core_config_data` การตั้งค่าผู้ดูแลระบบ "แสดงชื่อกลาง (เริ่มต้น) `core_config_data`.`path`='customer/address/middlename_show'ที่มีการบันทึกที่

บันทึกนี้เก็บการตั้งค่าในฟิลด์ `value` (0 =" ไม่ ", 1 =" ใช่ ") ฟิลด์นี้จะไม่เปลี่ยนไปเมื่อชื่อกลางปรากฏขึ้นโดยการอัพเกรดวีโอไอพี CE 1.9.2.1 หากคุณบันทึกการเปลี่ยนแปลงใน "แสดงชื่อกลาง (เริ่มต้น)" ในการตั้งค่าผู้ดูแลระบบหลังจาก Magento ทำการเปลี่ยนแปลงในระหว่างการอัปเดตเป็น 1.9.2.1 มันจะเปลี่ยนค่า `core_config_data` ที่นี่

การอัปเดตเป็น 1.9.2.1 ไม่ได้เปลี่ยนเร็กคอร์ดใน `core_config_data` และดังนั้นสิ่งที่จะแสดงในการตั้งค่าผู้ดูแลระบบ แต่การปรับปรุงจะเปลี่ยนระเบียนที่แตกต่างกันของตารางที่แตกต่างกัน

การมองเห็นชื่อกลางจริงคือ 'customer_eav_attribute`

ในกรณี dev ของฉันหลายวีโอไอพีตาราง `eav_attribute` มี 2 "ชื่อกลาง"` attribute_code` (s) ที่ `attribute_id` (s) เป็น6และ21 `customer_eav_attribute`ตารางชุดการแสดงผลของแอตทริบิวต์ที่มีข้อมูล` is_visible`

  • ในสภาพแวดล้อมของฉัน 1.8.x สด `attribute_id` (s) 6 และ 21 `is_visible` = 0ได้
  • หลังจากการปรับปรุง dev ไปวีโอไอพี CE 1.9.2.1จากวีโอไอพี CE 1.9.2.0`is_visible` = 1มันก็กลายเป็น
  • หลังจากฉันสลับและบันทึกผู้ดูแลระบบ "แสดงชื่อกลาง (เริ่มต้น)" เป็น "ไม่" `is_visible`=0อีกครั้งและฟิลด์ชื่อกลาง / เริ่มต้นหายไปจาก Checkout

สรุป

การอัปเดตMagento CE 1.9.2.1พลิกการตั้งค่าชื่อกลางในตาราง "customer_eav_attribute`" โดยไม่มีผลต่อสิ่งที่ปรากฏในผู้ดูแลระบบ Magento ภายใต้การตั้งค่า "แสดงชื่อกลาง (เริ่มต้น)" คุณสามารถแก้ไขวิธีการตั้งค่าที่ผู้ดูแลระบบปรับได้ตามปกติโดยไม่ต้องทำการปรับเปลี่ยนเทมเพลตโดยการสลับการตั้งค่า "แสดงชื่อกลาง (เริ่มต้น)"

ข้อความด้านข้าง

ถ้าด้วยเหตุผลบางอย่างคุณจำเป็นต้องถ่ายโอนการตั้งค่าผู้ดูแลระบบนี้ในหลาย ๆ สำเนาของร้านค้าหรือในชุดของการปรับปรุงผู้ดูแลระบบเช่นในขณะที่อัพเกรดร้านค้าเพื่อให้ตรงกับสภาพแวดล้อม dev ... คุณสามารถใช้คำสั่ง SQL ต่อไปนี้สำหรับการตั้งค่านี้ หากคุณทราบว่า "ชื่อกลาง" คือ `attribute_id` 6 และ 21 ในร้านของคุณนี่เป็นมาตรฐานสำหรับ Magento แต่เพื่อความปลอดภัยให้ตรวจสอบตาราง 'eav_attribute` ของคุณก่อนอีกครั้ง)

UPDATE customer_eav_attribute SET is_visible = 0 WHERE attribute_id IN (6, 21);


แก้ไขในวีโอไอพี 1.9.2.1 การทำงานที่ดีสำหรับฉัน
รา

5

คำตอบทางเทคนิค

ตัวเลือกการตั้งค่าระบบได้มีรูปแบบการแบ็กเอนด์ ( Mage_Adminhtml_Model_System_Config_Backend_Customer_Show_Customer) ที่มี_afterSaveวิธีการที่จะทำให้การเปลี่ยนแปลงเดียวกันในแอตทริบิวต์ลูกค้า EAV (ตารางที่: customer_eav_attribute)

ค่าตัวเลือกการกำหนดค่าระบบและค่าแอ็ตทริบิวต์ EAV is_visibleอาจไม่จำเป็นต้องซิงค์

การสลับสวิตช์สองสามครั้งจะช่วยแก้ไขหรือถ้าคุณชอบฉันและใช้สคริปต์การติดตั้ง / อัปเกรดสำหรับทุกสิ่งคุณสามารถทำสิ่งต่อไปนี้:

Mage::getModel('core/config')
    ->saveConfig('customer/address/middlename_show', 0);    

try {

    $attribute = Mage::getSingleton('eav/config')
        ->getAttribute('customer', 'middlename')
        ->setIsVisible(0)
        ->save();

    $attribute = Mage::getSingleton('eav/config')
        ->getAttribute('customer_address', 'middlename')
        ->setIsVisible(0)
        ->save();

} catch (Exception $e) {
    Mage::logException($e);
    throw $e;
}

1
ขอบคุณทำงานได้ดีมาก คุณควรเพิ่มรหัสสำหรับแอตทริบิวต์ที่อยู่ของลูกค้าเช่นกัน:$attribute = Mage::getSingleton('eav/config') ->getAttribute('customer_address', 'middlename') ->setIsVisible(0) ->save();
Andreas von Studnitz

2

วิธีที่ง่ายที่สุด:

วีโอไอพีเวอร์ชั่น 1.9.2.1

System > Configuration > Customers > Customer configuration > Name and Address Options

Show Middle Name (initial) = No

ป้อนคำอธิบายรูปภาพที่นี่


สิ่งนี้ถูกตั้งค่าแล้ว
SR_Magento

เพียงเลือกใช่ -> บันทึก อีกครั้งเลือกไม่ -> บันทึก รีเฟรชแคชแล้วดู
Pratik Kamani

0

การลบ{{depend middlename}}{{var middlename}}เช่น @sr_magento แนะนำในคำตอบของเขาจริง ๆ แล้วไม่ได้ลบลบShow Middle Name (initial)ฟิลด์จากหน้าเช็คเอาต์ตัวเอง โดยจะลบออกจากพื้นที่ที่มีการแสดง / พิมพ์ข้อมูลที่อยู่ลูกค้าเช่นในพื้นที่ผู้ดูแลระบบเทมเพลต PDF และอีเมล

ไม่จำเป็นต้องลบฟิลด์ออกจากเทมเพลตอีเมล นี่คือ overkill และคุณจะต้องเพิ่มรายการเหล่านั้นไปยังเทมเพลตอีเมลอีกครั้งในกรณีที่คุณตัดสินใจเปิดใช้งานShow Middle Name(initial)ในอนาคต

ฉันสังเกตเห็นความผิดพลาดนี้เช่นกันหลังจากอัพเดตจากMagento CE 1.9.2.0เป็นMagento CE 1.9.2.1โดยใช้ Magento downloader ดูเหมือนว่าการปรับปรุงจะปรับการตั้งค่าสำหรับShow Middle Name (initial)ภายใต้

System > Configuration > Customers > Customer Configuration > Name and Address Options

จาก"No"ที่จะ"ใช่" มันเกิดขึ้นกับฉันในร้านค้าหลายแห่งบนเซิร์ฟเวอร์ที่แตกต่างกัน

หากต้องการยกเลิกการตั้งค่าให้กลับเป็น"ไม่"และบันทึกการกำหนดค่า Show Middle Name (initial)ข้อมูลจะไม่ถูกแสดงบนหน้าเช็คเอาต์


@sr_magento วิธีการของคุณอาจใช้งานได้ (แม้ว่าฉันไม่แน่ใจว่าทำไมฉันสงสัยว่าเพียงบันทึกการตั้งค่าทำเคล็ดลับ) แต่เหตุผลของคุณไม่ถูกต้อง การเปลี่ยนแปลงสิ่งที่Address Templatesคุณแนะนำไม่ได้เปลี่ยนช่องป้อนข้อมูลของหน้าชำระเงินในส่วนหน้าของร้านค้า จะมีผลเฉพาะเทมเพลตสำหรับการพิมพ์ที่อยู่ โปรดอ่านเอกสารดังต่อไปนี้ คุณถูกต้องเกี่ยวกับพื้นที่ของลูกค้าในแผงผู้ดูแลระบบ ฉันจะใช้ถ้อยคำนี้เป็นส่วนหนึ่งของคำตอบอีกครั้ง
ForMat

0

หากคุณต้องการลบโดยตรงจากไฟล์แล้ว

เปิดไฟล์ต่อไปนี้

app => design => frontend => base => default => template => customer => widget => name.phtml

ค้นหาif ($this->showMiddlename()) ความคิดเห็นออกหรือลบที่สมบูรณ์ถ้าคำสั่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.