Eliminarea câmpurilor de verificare în OpenCart
Notă: Acest ghid a fost scris pentru OpenCart 1.x. Deși procesul este similar pentru OpenCart 2.x și 3.x, codul actual va diferi de cel din acest ghid.
În mod prestabilit, OpenCart solicită clienților dvs. să specifice un număr de informații personale și câmpuri de adrese în timpul efectuării plății. În timp ce acest lucru este potrivit pentru majoritatea magazinelor, uneori vă recomandăm să simplificați procesul de verificare prin eliminarea câtorva câmpuri din pagina de control.
Cea mai ușoară metodă este să ascundeți câmpurile de intrare și să eliminați verificările de eroare. Voi folosi OpenCart 1.5.1.3 ca bază, dar acest lucru ar trebui să fie similar pentru toate versiunile 1.5.x. Vă recomandăm să modificați fișierele OpenCart numai prin vQmod sau OCMOD.
Pasul 1: Modificarea șablonului
Există două șabloane principale responsabile de câmpurile de intrare în timpul efectuării plății în tema OpenCart implicită: catalog / view / theme / default / template / checkout / register.tpl pentru înregistrarea contului și catalog / view / theme / default / template / checkout / guest.tpl pentru verificarea clienților. Ambele fișiere urmează o structură similară, astfel încât procesul de modificare a șablonului de verificare al clienților va fi același ca pentru înregistrarea de noi utilizatori.
Există, de asemenea, două moduri posibile de introducere a modificărilor: fie prin modificarea șabloanelor originale (direct sau cu vQmod), fie prin modificarea copiilor șabloanelor și apoi îndreptarea controlerului pentru a încărca noile fișiere. Voi descrie a doua metodă, deoarece reduce numărul de modificări de bază care la rândul său vor face mai ușor să faceți upgrade ulterior. De asemenea, puteți schimba șabloanele originale dacă doriți – procesul va fi același.
Mai întâi, să copiem șablonul original: catalog / view / theme / default / template / checkout / register.tpl în catalog / view / theme / default / template / checkout / register-new.tpl .
Numai acest lucru nu va face ca OpenCart să utilizeze noul nostru șablon, de asemenea, trebuie să-i spunem operatorului să îl folosească în locul originalului. În catalog / controler / checkout / register.php găsiți următoarele linii (145 – 149):
1 2 3 4 5 | if (file_exists(DIR_TEMPLATE . $this->config->get(‘config_template’) . ‘/template/checkout/register.tpl’)) { $this->template = $this->config->get(‘config_template’) . ‘/template/checkout/register.tpl’; } else { $this->template = ‘default/template/checkout/register.tpl’; } |
Schimbați register.tpl în register-new.tpl pentru a spune controlorului să vă încarce noul șablon. Dacă utilizați o temă personalizată, asigurați-vă că aveți noul fișier în dosarul temei.
Acum ar trebui să puteți vedea modificările pe care le faceți pentru a înregistra-new.tpl pe pagina de casă atunci când selectați pentru a crea un cont nou. Să facem schimbările!
Trebuie să ascundem câmpurile de intrare pe care nu dorim să le afișăm aplicând stil = “display: none” și eliminând etichetele corespunzătoare. Să presupunem că nu avem nevoie de câmpuri de telefon, fax, companie și cod poștal.
Mai întâi eliminăm următoarele linii de cod din register-new.tpl :
1 2 3 4 5 6 7 8 9 | .. <span class=“required”>*</span> <!–?php echo $entry_telephone; ?–> .. <!–?php echo $entry_fax; ?–> .. <!–?php echo $entry_company; ?–> .. <span class=“required”>*</span> <!–?php echo $entry_postcode; ?–> .. |
Acum trebuie să ascundem câmpurile de intrare aplicând stil = “display: none” :
1 2 3 4 5 6 7 8 9 | .. <input class=“large-field” style=“display: none;” name=“telephone” type=“text” value=“” /> .. <input class=“large-field” style=“display: none;” name=“fax” type=“text” value=“” /> .. <input class=“large-field” style=“display: none;” name=“company” type=“text” value=“” /> .. <input class=“large-field” style=“display: none;” name=“postcode” type=“text” value=“” /> .. |
De asemenea, puteți să eliminați câmpurile de introducere în loc să le ascundeți, însă va trebui să vă asigurați că nu sunt accesate în controler sau veți primi o grămadă de notificări “Undefined index” mai târziu.
Dacă actualizați acum pagina, veți vedea că câmpurile de intrare au dispărut (eliminați pauzele de linie inutile pentru a alinia corect câmpurile). Cu toate acestea, noul checkout nu va funcționa încă. Acum trebuie să efectuăm modificările necesare în controler pentru a elimina validarea inutilă a câmpurilor ascunse.
Pasul 2: Modificarea controlerului
Controlorii responsabili pentru validarea ecranului de checkout sunt catalogul / controlerul / checkout / register.php pentru înregistrarea contului și catalogul / controlerul / checkout / guest.php pentru verificarea clienților. Ca și în cazul șabloanelor, ele au o structură similară, așa că voi descrie doar modificarea primei.
Orice validare a formularului de intrare începe pe linia 18, când o solicitare de post este transmisă controlorului. Întrucât compania și faxul nu sunt intrări obligatorii, vom comenta verificările de eroare pentru restul câmpurilor noastre: Telefon și cod poștal. Puteți comenta fie blocuri întregi, fie doar liniile în care sunt setate variabilele de eroare.
1 2 3 4 5 6 7 | if ((utf8_strlen($this->request->post[‘telephone’]) < 3) || (utf8_strlen($this->request->post[‘telephone’]) > 32)) { //$json[‘error’][‘telephone’] = $this->language->get(‘error_telephone’); } .. if ($country_info && $country_info[‘postcode_required’] && (utf8_strlen($this->request->post[‘postcode’]) < 2) || (utf8_strlen($this->request->post[‘postcode’]) > 10)) { //$json[‘error’][‘postcode’] = $this->language->get(‘error_postcode’); } |
Practic, acesta este: câmpurile de intrare sunt ascunse, astfel încât valorile goale vor fi transmise controlerului. Cu toate acestea, deoarece formularele HTML pot fi modificate pe partea clientului, vrem să fim siguri că nimeni nu încearcă să postă valori pentru câmpurile de intrare eliminate dintr-un formular modificat, astfel încât vom clarifica explicit valorile postului pentru ambele câmpuri înainte de începerea validării . Dacă ați eliminat câmpurile în loc să le ascundeți, acest lucru va asigura, de asemenea, că nu primiți notificări “Undefined index”:
1 2 3 4 5 | if ($this->request->server[‘REQUEST_METHOD’] == ‘POST’) { if (!$json) { $this->request->post[‘telephone’] = ”; $this->request->post[‘postcode’] = ”; .. |
Acum am terminat! Clienții noștri nu mai trebuie să introducă numărul de telefon și codul postal, iar câmpul de introducere a companiei este eliminat din formular.