Slik omskriver du egendefinerte nettadresser i OpenCart

I løpet av denne opplæringen vil vi gå gjennom detaljene for egendefinerte SEO-vennlige nettadresser. Det er et viktig aspekt du bør se på mens du utvikler egendefinerte moduler, og det påvirker også den generelle søkemotorrangeringen.

Vi bruker den nyeste versjonen av OpenCart, så sørg for at du har installert det for å følge koden.

Hva skal vi gjøre - i et nøtteskall

Her er et sammendrag av trinnene vi må ta for å oppnå egendefinerte nettadresser i OpenCart:

  • Først må vi forstå hvordan det fungerer i kjernen.
  • Vi vil gjennomgå endringene som kreves i kjernefilene.
  • Vi tar en rask titt på SQL-spørringene for å sette inn våre tilpassede URL-mappings.
  • Vi vil dekke hvordan du bruker innebygde omskrivningsfunksjoner.

Så det er et raskt blikk av hva som kommer opp neste. La oss gå videre til det første emnet.

Nettadressemappene i en database

Først av alt er det viktig å forstå hvordan SEO-nettadresser fungerer i kjernen i OpenCart.

Gå videre og undersøk oppføringene i "url_alias" MySQL-tabellen ved hjelp av phpMyAdmin eller noe lignende. Du får se mappings som dette.

product_id = 48 ipod-classic category_id = 20 desktops manufacturer_id = 8 apple information_id = 6 levering

Det er to viktige kolonner å merke seg her. Den første er spørsmål kolonne som lagrer den faktiske banen, og den andre er søkeord, som lagrer SEO-aliaset for denne nettadressen.

Som du kan se, er det mappings for ulike enheter som produkt, kategori, informasjon og produsent. Når en enhet er lagret i back-end av OpenCart, legges en tilknyttet oppføring til denne tabellen.

I fronten, når brukeren får tilgang til nettadressen, finner OpenCart den tilhørende kartleggingen fra "url_alias" -tabellen. På denne måten er den faktiske enheten kartlagt til SEO-vennlig URL.

Gå videre og åpne filen katalog / styreenhet / common / seo_url.php, og la oss utforske følgende utdrag fra index metode.

offentlig funksjon indeks () // Legg til omskriv til url klasse hvis ($ this-> config-> get ('config_seo_url')) $ this-> url-> addRewrite ($ this);  // Dekode URL hvis (isset ($ this-> request-> få ['_ route_'])) $ parts = explode ('/', $ this-> request-> få ['_ route_']); // fjerne eventuelle tomme arrays fra trailing if (utf8_strlen (end ($ parts)) == 0) array_pop ($ parts);  foreach ($ deler som $ del) $ query = $ this-> db-> spørring ("VELG * FRA". DB_PREFIX. "url_alias WHERE søkeord = '". $ this-> db-> escape ($ part) . "'"); hvis ($ query-> num_rows) $ url = explode ('=', $ query-> rad ['query']); hvis ($ url [0] == 'product_id') $ this-> request-> få ['product_id'] = $ url [1];  hvis $ url [0] == 'category_id') if (! isset ($ this-> request-> få ['path'])) $ this-> request-> get ['path'] = $ url [1];  ellers $ this-> request-> get ['path']. = '_'. $ Url [1];  hvis ($ url [0] == 'manufacturer_id') $ this-> request-> få ['manufacturer_id'] = $ url [1];  hvis ($ url [0] == 'information_id') $ this-> request-> få ['information_id'] = $ url [1];  hvis ($ spørring-> rad ['spørring'] && $ url [0]! = 'informasjon_id' && $ url [0]! = 'manufacturer_id' && $ url [0]! = 'category_id' && $ url [ 0]! = 'Product_id') $ this-> request-> få ['route'] = $ spørring-> rad ['spørring'];  annet $ this-> request-> få ['route'] = 'feil / ikke-funnet'; gå i stykker;  hvis (! isset ($ this-> request-> få ['route'])) if (isset ($ this-> request-> få ['product_id'])) $ this-> request-> få ['route'] = 'produkt / produkt';  elseif (isset ($ this-> request-> get ['path'])) $ this-> request-> få ['route'] = 'produkt / kategori';  elseif (isset ($ this-> request-> get ['manufacturer_id'])) $ this-> request-> få ['route'] = 'produkt / produsent / info';  elseif (isset ($ this-> request-> få ['information_id'])) $ this-> request-> få ['route'] = 'informasjon / informasjon';  hvis (isset ($ this-> request-> få ['rute'])) return ny handling ($ denne-> forespørsel-> få ['rute']); 

Som du ser, henter vi den tilknyttede oppføringen fra "url_alias" -tabellen. Etter det blir spørringsparameteren analysert og en tilhørende intern vei returneres.

Så, slik fungerer det i kjernen. Dessverre fungerer oppsettet bare for kjerne-nettadresser-for egendefinerte nettadresser vi må endre kjernekoden. Det er oppskriften til vår neste del.

Kjernefilen endres

Gå videre og åpne filen katalog / styreenhet / common / seo_url.php, og erstatt omskrive metode med følgende.

public function rewrite ($ link) $ url_info = parse_url (str_replace ('&', '&', $ link)); $ url = "; $ data = array (); parse_str ($ url_info ['query'], $ data); foreach ($ data som $ key => $ verdi) if (isset ($ data ['route'] )) if (($ data ['route'] == 'produkt / produkt' && $ key == 'product_id') || (($ data ['route'] == 'produkt / produsent / info' | | $ data ['route'] == 'produkt / produkt') && $ key == 'manufacturer_id') || ($ data ['route'] == 'informasjon / informasjon' && $ key == 'information_id' )) $ query = $ this-> db-> spørring ("VELG * FRA". DB_PREFIX. "url_alias WHERE 'spørring' = '". $ this-> db-> escape ($ key.' = '. int) $ verdi). '' "); hvis ($ spørring-> num_rows && $ query-> rad ['søkeord']) $ url. = '/'. $ spørring-> rad ['søkeord']; $ $ = $ this $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ -> db-> spørring ("VELG * FRA". DB_PREFIX. "url_alias WHERE 'spørring' = 'category_id =". (int) $ kategori. "'"); hvis ($ spørring-> num_rows && $ query-> rad ['søkeord']) $ url. = '/'. $ spørring-> rad ['søkeord']; else $ url = "; gå i stykker;  unset ($ data [$ key]); / / VÅRE KUNDEKODE ellers $ query = $ this-> db-> spørring ("VELG * FRA". DB_PREFIX. "Url_alias WHERE 'spørring' = '". $ Data [' route ']. ; hvis ($ spørring-> num_rows && $ query-> rad ['søkeord']) $ url. = '/'. $ Query-> rad [ 'søkeord'];  ellers $ url = "; break; // VÅR KODEKODE hvis ($ url) unset ($ data ['route']); $ query ="; hvis ($ data) foreach ($ data som $ key => $ verdi) $ query. = '&'. rawurlencode ((streng) $ nøkkel). '='. rawurlencode ((string) $ verdi);  hvis ($ spørring) $ query = '?' . str_replace ('&', '&', trim ($ query, '&'));  returnere $ url_info ['scheme']. ': //'. $ url_info ['vert']. (isset ($ url_info ['port']) '': '. $ url_info [' port ']: "). str_replace (' / index.php ',", $ url_info [' sti ']). $ url. $ Query;  ellers return $ link; 

De omskrive Metoden brukes til å konvertere en intern URL til en SEO-vennlig URL. Men det gjør dette kun for interne nettadresser. Derfor må vi legge til egendefinert kode for at den skal fungere for våre tilpassede moduler også. I våre kodendringer har vi gitt den siste annet tilfelle som laster kartleggingen for vår tilpassede modul. Vi har ikke lagt til vår tilpassede kartlegging ennå, så la oss gjøre det i vår neste del.

Selv om vi har endret kjernefilen direkte, er det bare for enkelhets skyld. Du bør bruke OCMOD til å endre kjernefilen uten å faktisk endre den.

Legg til MySQL-innlegg

I denne delen legger vi til en SEO-URL-kartlegging for vår tilpassede modul. Igjen, det er en vanlig SQL for eksempel formål-du kan oppnå det som bruker modul installere skript.

INSERT TIL 'url_alias' ('query', 'keyword') VALUES ('custom / custom', 'custom-rewrite');

Gå videre og kjør det i OpenCart-databasen din.

I neste og siste avsnitt vil vi se hvordan du bruker hjelperfunksjonen til å produsere SEO-vennlige lenker.

Hvordan det fungerer

Gå videre og opprett en ny fil katalog / styreenhet / tilpassede / custom.php med følgende innhold.

url-> kobling ( 'tilpassede / custom'); $ this-> response-> setOutput ('Custom URL Rewrite Link'); 

Nå i fronten, åpne URL-adressen http://www.yourstore.com/index.php?route=custom/custom.

Ja, det er en vanlig hvit skjerm med bare en lenke, og det er det vi tenkte på. Det viktige å merke seg her er URL av den linken - det er nå SEO-vennlig! Klikk på det og det vil laste den samme siden, ettersom vi har lagt til kartleggingen for det i "url_alias" -tabellen.

Så det er hele konseptet på en enkel måte. Du kan utvide den og lage en modell for å sette inn SEO-vennlige lenker for din tilpassede modul.

Konklusjon

I dag har vi diskutert et viktig tema i OpenCart-tilpassede SEO-vennlige nettadresser. Vi tok en veldig enkel tilnærming til å forklare det, og jeg håper at det var nyttig for deg.

Hvis du leter etter ekstra OpenCart-verktøy, verktøy, utvidelser og så videre som du kan utnytte i dine egne prosjekter eller for din egen utdanning, ikke glem å se hva vi har tilgjengelig på markedet.

Du er velkommen til å legge inn dine spørsmål og forslag ved å bruke feedet under.