Cum să rescrieți URL-urile personalizate în OpenCart

În cursul acestui tutorial, vom trece prin detaliile URL-urilor personalizate pentru SEO. Este un aspect important pe care ar trebui să-l priviți în timp ce dezvoltați module personalizate și afectează și clasamentul general al motorului de căutare.

Vom folosi cea mai recentă versiune de OpenCart, așa că asigurați-vă că ați instalat-o ca să urmați codul.

Ce vom face - într-o scurtă descriere

Iată un rezumat al pașilor pe care trebuie să îi luăm pentru a obține adrese URL personalizate în OpenCart:

  • În primul rând, va trebui să înțelegem cum funcționează în bază.
  • Vom trece prin modificările necesare în fișierele de bază.
  • Vom examina rapid interogările SQL pentru a insera mapările personalizate ale adreselor URL.
  • Vom descrie cum să folosim funcțiile de rescriere încorporate.

Deci, aceasta este o privire rapidă a ceea ce vine în continuare. Să trecem la primul subiect.

Maparea URL-urilor într-o bază de date

Mai întâi de toate, este important să înțelegeți modul în care URL-urile SEO funcționează în centrul OpenCart.

Continuați și explorați intrările din tabelul "url_alias" MySQL folosind phpMyAdmin sau ceva similar. Veți vedea mapări ca acestea.

product_id = 48 ipod-clasă category_id = 20 desktop-uri manufacturer_id = 8 apple information_id = 6 livrare

Există două coloane importante care trebuie notate aici. Primul este întrebare care stochează calea reală, iar cealaltă este cuvinte cheie, care stochează aliasul SEO pentru acea adresă URL.

După cum puteți vedea, există mapări pentru diferite entități, cum ar fi produsul, categoria, informațiile și producătorul. Ori de câte ori o entitate este salvată în back-end-ul OpenCart, se adaugă o înregistrare asociată acestui tabel.

În front-end, ori de câte ori utilizatorul accesează URL-ul, OpenCart găsește cartografia asociată din tabelul "url_alias". În acest fel, entitatea reală este mapată la URL-ul prietenos SEO.

Continuați și deschideți fișierul Catalog / controler / comun / seo_url.php, și să explorăm următorul fragment din index metodă.

indexul funcției publice () // Adăugați rescrie la url class dacă ($ this-> config-> get ('config_seo_url')) $ this-> url-> addRewrite ($ this);  // Decode URL dacă (isset ($ this-> request-> get ['_ route_'])) $ parts = explode ('/', $ this-> request-> get ['route_']); // eliminați orice matrice goală de la trailing dacă (utf8_strlen (end ($ parts)) == 0) array_pop ($ parts);  foreach ($ parts ca $ part) $ interogare = $ this-> db-> interogare ("SELECT * FROM" DB_PREFIX. "url_alias WHERE keyword = . ""); dacă ($ query-> num_rows) $ url = explode ('=', $ interogare-> rând ['interogare']); dacă ($ url [0] == 'product_id')) $ this-> request-> get ['product_id'] = $ url [1];  dacă $ url [0] == 'category_id') if (! isset ($ this-> request-> get ['path']) $ url [1];  altceva $ this-> request-> get ['path']. = '_'. $ Url [1];  dacă ($ url [0] == 'manufacturer_id')) $ this-> request-> get ['manufacturer_id'] = $ url [1];  dacă ($ url [0] == 'informație_id')) $ this-> request-> get ['information_id'] = $ url [1];  dacă ($ query-> row ['query'] && $ url [0]! = 'information_id' && $ url [0]! = 'manufacturer_id' && $ url [ 0]! = 'Product_id') $ this-> request-> get ['rută'] = $ interogare-> rând ['interogare'];  altceva $ this-> request-> get ['route'] = 'error / not_found'; pauză;  dacă isset ($ this-> request-> get ['route'])) if ($ this-> request-> get ['product_id' obțineți ['route'] = 'produs / produs';  elseif (isset ($ this-> request-> get ['cale'])) $ this-> request-> get ['route'] = 'produs / categorie';  elseif (isset ($ this-> request-> get ['manufacturer_id'])) $ this-> request-> obține ['route'] = 'produs / producător / info';  elseif (isset ($ this-> request-> get ['information_id'])) $ this-> request-> obține ['route'] = 'informații / informații';  dacă (isset ($ this-> request-> get ['route'])) retur noi acțiuni ($ this-> request-> get ['route']); 

După cum vedeți, preluăm înregistrarea asociată din tabelul "url_alias". După aceea, parametrul interogării este analizat și se returnează o cale internă asociată.

Deci, acesta este modul în care funcționează în nucleu. Din păcate, configurarea funcționează numai pentru adresele URL principale - pentru adrese URL personalizate trebuie să modificăm codul de bază. Asta e reteta secțiunii următoare.

Modificările fișierului de bază

Continuați și deschideți fișierul Catalog / controler / comun / seo_url.php, și înlocuiți rescrie cu următoarea.

funcția publică rescrie ($ link) $ url_info = parse_url (str_replace ('&', '&', $ link)); ($ data ['date'), $ date = '$ value') $ $ url = "; $ data = )) if (($ date ['route'] == 'produs / produs' && $ cheie == 'product_id') || (($ data ['route'] == 'produs / producător / info' | | $ data ['route'] == 'produs / produs') && $ cheie == 'manufacturer_id') || )) $ interogare = $ this-> db-> interogare ("SELECT * FROM" .DB_PREFIX. "url_alias WHERE 'interogare' = ' int ")"); dacă ($ query-> num_rows && $ interogare-> rând ['cuvânt cheie]]) $ $ query => rând [' cuvânt cheie ']; ($ data = $ key); elseif ($ key == 'cale') $ categories = explode ('_', $ value); -> db-> interogare ("SELECT * FROM" .DB_PREFIX. "url_alias WHERE 'interogare' = 'categorie_id ='. rând ['cuvânt cheie']]) $ url. = '/'. $ query-> rând ['cuvânt cheie]]; altceva $ url = "; pauză;  dezactivat ($ date [$ key]); // CODUL CUSTOMULUI NOSTRU altceva $ query = $ this-> db-> interogare ("SELECT * FROM" .DB_PREFIX. "Url_alias WHERE 'interogare' = ' ; dacă ($ query-> num_rows && $ interogare-> rând ['cuvânt cheie]]) $ url. =' / '. $ Query-> rândul [ 'cuvânt cheie'];  altceva $ url = "; pauză; // CODUL CUSTOMULUI NOSTRU dacă ($ url) unset ($ data ['route']); $ query ="; dacă ($ date) foreach ($ date ca $ cheie => valoare $) $ query. = '&'. rawurcode ((șir) $ cheie). '='. rawurlencode ((string) $ value);  dacă ($ interogare) $ query = '?' . str_replace ('&', '&', trim ($ interogare, '&'));  reveniți $ url_info ['scheme']. ': //'. $ url_info ['host']. ('url_info [' port '])' '' ''. $ url_info ['port']: "). $ url. interogare $;  altceva return $ link; 

rescrie metoda este folosită pentru a converti o adresă URL internă într-o adresă URL prietenoasă SEO. Dar face acest lucru numai pentru adresele URL interne. Prin urmare, trebuie să adăugăm codul personalizat pentru ca acesta să funcționeze și pentru modulele personalizate. În schimbările noastre de cod, am furnizat ultima alt caz care încarcă cartografia pentru modulul nostru personalizat. Nu am adăugat cartografia noastră personalizată încă, deci hai să o facem în următoarea secțiune.

Deși am modificat direct fișierul de bază, este doar de dragul simplității. Ar trebui să utilizați OCMOD pentru a modifica fișierul de bază fără să îl modificați.

Adăugați intrări MySQL

În această secțiune, vom adăuga o mapare SEO URL pentru modulul nostru personalizat. Din nou, este un scop simplu SQL, de exemplu, puteți obține acest lucru folosind scripturi de instalare a modulelor.

INSCRIEȚI ÎN "url_alias" ("interogare", "cuvânt cheie") VALUES ("personalizat / particularizat", "personalizat-rescrie");

Continuați și rulați-o în baza de date OpenCart.

În secțiunea următoare și finală, vom vedea cum să folosim funcția de ajutor pentru a produce legături SEO prietenoase.

Cum functioneaza

Continuați și creați un fișier nou Catalog / controler / personalizat / custom.php cu următorul conținut.

url-> link-ul ( 'personalizat / personalizată'); $ this-> response-> setOutput ("Link-ul de rescriere URL personalizat"); 

Acum, în front-end, deschideți adresa http://www.yourstore.com/index.php?route=custom/custom.

Da, este un ecran alb simplu, cu doar o legătură, și asta ne-am propus. Lucrul important pe care trebuie să-l observăm aici este URL- din acel link - este acum SEO-friendly! Faceți clic pe acesta și se va încărca aceeași pagină, pe măsură ce am adăugat cartografiere pentru tabelul "url_alias".

Deci, acesta este întregul concept demonstrat într-un mod simplu. Puteți să o extindeți și să faceți un model pentru a introduce link-uri prietenoase pentru modulul dvs. personalizat.

Concluzie

Astăzi, am discutat un subiect important în URL-urile prietenoase SEO-urilor personalizate pentru OpenCart. Am făcut o abordare foarte simplă pentru a explica acest lucru și sper că a fost util pentru dvs..

Dacă sunteți în căutarea unor instrumente OpenCart suplimentare, utilitare, extensii și așa mai departe, pe care le puteți folosi în propriile proiecte sau pentru educația proprie, nu uitați să vedeți ce avem la dispoziție pe piață.

Simțiți-vă liber să postați întrebările și sugestiile utilizând feedul de mai jos.

Cod