Herschrijven van aangepaste URL's in OpenCart

In de loop van deze zelfstudie bespreken we de details van aangepaste SEO-vriendelijke URL's. Het is een belangrijk aspect waar u naar moet kijken tijdens het ontwikkelen van aangepaste modules, en dit heeft ook invloed op de algemene rangschikking van zoekmachines.

We gebruiken de nieuwste versie van OpenCart, dus zorg ervoor dat je die hebt geïnstalleerd om de code te volgen.

Wat we gaan doen - in een notendop

Hier volgt een samenvatting van de stappen die we moeten nemen om aangepaste URL's in OpenCart te bereiken:

  • Ten eerste zullen we moeten begrijpen hoe het in de kern werkt.
  • We gaan door de vereiste wijzigingen in de kernbestanden.
  • We zullen de SQL-query's snel bekijken om onze aangepaste URL-toewijzingen in te voegen.
  • We bespreken hoe u de ingebouwde herschrijffuncties gebruikt.

Dus dat is de snelle blik van wat er hierna komt. Laten we verdergaan naar het eerste onderwerp.

De URL-toewijzingen in een database

Allereerst is het belangrijk om te begrijpen hoe SEO-URL's werken in de kern van OpenCart.

Ga je gang en verken de vermeldingen in de "url_alias" MySQL-tabel met phpMyAdmin of iets dergelijks. U ziet toewijzingen als deze.

product_id = 48 ipod-classic category_id = 20 desktops fabrikant_id = 8 apple information_id = 6 bezorging

Er zijn twee belangrijke kolommen om hier op te merken. De eerste is de vraag kolom die het eigenlijke pad opslaat, en de andere is trefwoord, waarin de SEO-alias voor die URL is opgeslagen.

Zoals u kunt zien, zijn er toewijzingen voor verschillende entiteiten zoals product, categorie, informatie en fabrikant. Wanneer een entiteit wordt opgeslagen in de back-end van OpenCart, wordt een gekoppeld item aan deze tabel toegevoegd.

In de front-end, wanneer de gebruiker de URL benadert, vindt OpenCart de gerelateerde toewijzing uit de tabel "url_alias". Op deze manier wordt de werkelijke entiteit toegewezen aan de SEO-vriendelijke URL.

Ga je gang en open het bestand catalogus / controller / common / seo_url.php, en laten we het volgende fragment van de inhoudsopgave methode.

public function index () // Voeg rewrite to url class if ($ this-> config-> get ('config_seo_url')) $ this-> url-> addRewrite ($ this);  // Decode URL if (isset ($ this-> request-> get ['_ route_'])) $ parts = explode ('/', $ this-> request-> get ['_ route_']); // verwijder lege arrays van trailing als (utf8_strlen (end ($ parts)) == 0) array_pop ($ parts);  foreach ($ parts as $ part) $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE keyword = '". $ this-> db-> escape ($ part) . "'"); if ($ query-> num_rows) $ url = explode ('=', $ query-> row ['query']); if ($ url [0] == 'product_id') $ this-> request-> get ['product_id'] = $ url [1];  if ($ url [0] == 'category_id') if (! isset ($ this-> request-> get ['path'])) $ this-> request-> get ['path'] = $ url [1];  else $ this-> request-> get ['path']. = '_'. $ Url [1];  if ($ url [0] == 'manufacturer_id') $ this-> request-> get ['manufacturer_id'] = $ url [1];  if ($ url [0] == 'information_id') $ this-> request-> get ['information_id'] = $ url [1];  if ($ query-> row ['query'] && $ url [0]! = 'information_id' && $ url [0]! = 'manufacturer_id' && $ url [0]! = 'category_id' && $ url [ 0]! = 'Product_id') $ this-> request-> get ['route'] = $ query-> row ['query'];  else $ this-> request-> get ['route'] = 'error / not_found'; breken;  als (! isset ($ this-> request-> get ['route'])) if (isset ($ this-> request-> get ['product_id'])) $ this-> request-> krijg ['route'] = 'product / product';  elseif (isset ($ this-> request-> get ['path'])) $ this-> request-> get ['route'] = 'product / categorie';  elseif (isset ($ this-> request-> get ['manufacturer_id'])) $ this-> request-> get ['route'] = 'product / fabrikant / info';  elseif (isset ($ this-> request-> get ['information_id'])) $ this-> request-> get ['route'] = 'informatie / informatie';  if (isset ($ this-> request-> get ['route'])) return new Action ($ this-> request-> get ['route']); 

Zoals u ziet, halen we het bijbehorende item op uit de tabel "url_alias". Hierna wordt de queryparameter geparseerd en wordt een bijbehorend intern pad geretourneerd.

Dus dit is de manier waarop het in de kern werkt. Helaas werkt de setup alleen voor kern-URL's. Voor aangepaste URL's moeten we de kerncode wijzigen. Dat is het recept van onze volgende sectie.

Het kernbestand verandert

Ga je gang en open het bestand catalogus / controller / common / seo_url.php, en vervang de herschrijven methode met de volgende.

openbare functie herschrijven ($ link) $ url_info = parse_url (str_replace ('&', '&', $ link)); $ url = "; $ data = array (); parse_str ($ url_info ['query'], $ data); foreach ($ data als $ key => $ value) if (isset ($ data ['route'] )) if (($ data ['route'] == 'product / product' && $ key == 'product_id') || (($ data ['route'] == 'product / fabrikant / info' | | $ data ['route'] == 'product / product') && $ key == 'manufacturer_id') || ($ data ['route'] == 'informatie / informatie' && $ key == 'information_id' )) $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE 'query' = '". $ this-> db-> escape ($ key.' = '. ( int) $ value). "'"); if ($ query-> num_rows && $ query-> row [' keyword ']) $ url. =' / '. $ query-> row [' keyword ']; unset ($ data [$ key]); elseif ($ key == 'path') $ categories = explode ('_', $ value); foreach ($ categories as $ category) $ query = $ this -> db-> query ("SELECT * FROM". DB_PREFIX. "url_alias WHERE 'query' = 'category_id =". (int) $ category. "'"); if ($ query-> num_rows && $ query-> row ['keyword']) $ url. = '/'. $ query-> row ['keyword']; else $ url = "; breken;  niet ingesteld ($ data [$ key]); // ONZE CUSTOM CODE else $ query = $ this-> db-> query ("SELECT * FROM". DB_PREFIX. "Url_alias WHERE 'query' = '". $ Data [' route ']. "'") ; if ($ query-> num_rows && $ query-> row ['keyword']) $ url. = '/'. $ Query-> row [ 'keyword'];  else $ url = "; break; // OUR CUSTOM CODE if ($ url) unset ($ data ['route']); $ query ="; if ($ data) foreach ($ data as $ key => $ value) $ query. = '&'. rawurlencode ((tekenreeks) $ -code). '='. rawurlencode ((string) $ value);  if ($ query) $ query = '?' . str_replace ('&', '&', trim ($ query, '&'));  retourneer $ url_info ['schema']. ': //'. $ url_info ['host']. (isset ($ url_info ['port'])? ':'. $ url_info ['port']: "). str_replace ('/ index.php',", $ url_info ['path']). $ url. $ Vraag;  else return $ link; 

De herschrijven methode wordt gebruikt om een ​​interne URL om te zetten in een SEO-vriendelijke URL. Maar dit gebeurt alleen voor interne URL's. Daarom moeten we aangepaste code toevoegen om deze ook voor onze aangepaste modules te laten werken. In onze codewijzigingen hebben we de laatste gegeven anders zaak waarmee de toewijzing voor onze aangepaste module wordt geladen. We hebben onze aangepaste toewijzing nog niet toegevoegd, dus laten we dit in onze volgende sectie doen.

Hoewel we het kernbestand rechtstreeks hebben aangepast, is het eenvoudig omwille van de eenvoud. Gebruik OCMOD om het kernbestand te wijzigen zonder het daadwerkelijk te wijzigen.

Voeg MySQL-gegevens toe

In deze sectie zullen we een SEO URL-toewijzing voor onze aangepaste module toevoegen. Nogmaals, het is een eenvoudige SQL, bijvoorbeeld voor doeleinden - je kunt dat bereiken met behulp van module-installatiescripts.

INVOEGEN IN 'url_alias' ('query', 'keyword') VALUES ('custom / custom', 'custom-rewrite');

Ga je gang en voer het uit in je OpenCart-database.

In het volgende en laatste deel zullen we zien hoe we de hulpfunctie kunnen gebruiken om SEO-vriendelijke links te maken.

Hoe het werkt

Ga je gang en maak een nieuw bestand catalogus / controller / custom / custom.php met de volgende inhoud.

URL-> link ( 'op maat / custom'); $ this-> response-> setOutput ('Aangepaste URL Rewrite Link'); 

Open nu in de front-end de URL http://www.yourstore.com/index.php?route=custom/custom.

Ja, het is een eenvoudig wit scherm met slechts één link, en dat is wat we van plan waren. Het belangrijkste om op te merken is de URL van die link - het is nu SEO-vriendelijk! Klik erop en het laadt dezelfde pagina, omdat we de toewijzing hebben toegevoegd in de tabel "url_alias".

Dus dat is het hele concept op een eenvoudige manier aangetoond. U kunt het uitbreiden en een model maken om SEO-vriendelijke links voor uw aangepaste module in te voegen.

Conclusie

Vandaag hebben we een belangrijk onderwerp besproken in OpenCart-aangepaste SEO-vriendelijke URL's. We hebben een heel eenvoudige benadering gevolgd om het uit te leggen, en ik hoop dat dit nuttig voor je was.

Als u op zoek bent naar aanvullende OpenCart-hulpmiddelen, hulpprogramma's, uitbreidingen en dergelijke die u kunt gebruiken in uw eigen projecten of voor uw eigen opleiding, vergeet dan niet te zien wat we beschikbaar hebben op de markt.

U kunt uw vragen en suggesties plaatsen via de onderstaande feed.