Î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.
Iată un rezumat al pașilor pe care trebuie să îi luăm pentru a obține adrese URL personalizate în OpenCart:
Deci, aceasta este o privire rapidă a ceea ce vine în continuare. Să trecem la primul subiect.
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.
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.
Î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.
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.
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.