Tolong bisakah seseorang memposting panduan tentang penghapusan bidang telepon 'wajib' dalam checkout berdasarkan tata letak magento Versi 1.8.0.0, sebagian besar sumber daya Google saat ini sudah usang dan tidak lagi berfungsi. Ini akan menjadi tempat yang tepat untuk menyimpan panduan cara terbaru.
Akan sangat membantu jika seseorang dapat mengkonfirmasi solusi yang berfungsi dengan mengunduh Magento 1.8.0.0 dan memberikan bukti penghapusannya, cuplikan kode ini terkadang membantu, tetapi kami belum menemukan solusi yang berfungsi dengan cara yang mudah dibaca / didokumentasikan.
Jawaban:
Sebelum
1.8.1
saya tidak mengetahui cara apa pun untuk membuat pekerjaan ini, Anda harus mengganti kelas inti abstrak di kumpulan kode lokal atau menulis ulang setiap kelas anak tunggal (jelek, saya tahu).Sejak
1.8.1
saat itu, mereka memperkenalkan acara tersebutcustomer_address_validation_after
. Saya menyingkirkan validasi dengan menggunakan refleksi, meskipun saya tidak terlalu bangga akan hal itu. Mungkin tidak menyelesaikan masalah Anda, tapi saya pikir saya tetap akan mempostingnya.Saya juga menulis skrip pembaruan untuk mendefinisikan arsip yang tidak diperlukan, dan mengedit semua formulir untuk menghapus validasi frontend. Seperti yang saya katakan, ini mungkin bukan solusi terbaik, tetapi lebih baik daripada menulis ulang 3-4 kelas IMHO.
UPDATE Tim inti dibungkus acara
customer_address_validation_after
di awal bersyarat dari1.9.0
melalui1.9.1.1
(saya benar-benar bertanya-tanya mengapa, tidak masuk akal bagi saya ...) jadi solusi saya tidak akan bekerja untuk versi ini, sayangnya. Syaratnya untungnya dihapus di1.9.2
.sumber
Anda perlu memodifikasi
Mage_Customer_Model_Address_Abstract
kelas * pada saluran 375-377 mengomentari Validasi Zend dari nomor telepon.serta atribut telepon itu sendiri dalam database menghapus kelas yang diperlukan. Ini dapat dilakukan dengan permintaan berikut
Ini akan menangani validasi frontend (Javascript) dari bidang telepon.
** Pastikan untuk menyalin file kelas ke
local
direktori kode Anda *sumber
eav_attribute
dengan kode 'telepon', jadi Anda tidak dapat menentukan yang mana yang telah diperbarui. Maka kode harus bekerja (baru saja mengujinya). Untuk bagian visual, Anda masih harus menghapus<em>*</em>
label bidang dalam semua bentuk (checkout / edit alamat). Tentu saja, jika Anda memiliki semacam checkout satu langkah terinstal, itu bisa mengesampingkan beberapa fungsi Magento default dan jawaban ini mungkin tidak berfungsi.Saya menyarankan untuk mengubah templat alamat untuk tema situs dan menjadikan ponsel bidang tersembunyi dengan nilai default berupa spasi atau tanda hubung. Ini tidak memerlukan penulisan ulang / overwrites.
sumber
Bisakah Anda tidak hanya menulis ulang kelas yang menggunakan abstrak menggunakan ekstensi kustom dan konfigurasi penulisan ulang.
Mage_Sales_Model_Quote_Address
,Mage_Customer_Model_Address
,Mage_Sales_Model_Order_Address
,Kemudian Anda dapat membuat
validate
fungsi Anda sendiri yang akan mengecualikan pemeriksaan telepon, atau lebih baik lagi memeriksa semua atribut yang diperlukan dan memvalidasi bahwa mereka ditetapkan.sumber
Saya baru saja menjumpai ekstensi kecil yang bagus "Webguys_Telefonkeinpflicht" oleh Tobi, yang pada dasarnya mengikuti pendekatan David. Ini menulis ulang subclass masing-masing. Yang saya sukai cukup banyak adalah kenyataan bahwa ia hanya mengirim acara di kelas-kelas yang ditulis ulang dan semua penyesuaian lebih lanjut kemudian dilakukan di pengamat acara. Ia juga mengamati
core_block_abstract_to_html_after
acara untuk menghapus bintang dan kelas yang diperlukan dari bidang input dengan beberapa sihir hitam regex. Dan itu tentu saja dilengkapi dengan skrip pengaturan, yang membuat atribut telepon tidak diperlukan dalameav_attribute
tabel. Anda dapat memeriksa ekstensi di GitHub .sumber