Under denna handledning går vi igenom detaljerna i anpassade SEO-vänliga webbadresser. Det är en viktig aspekt som du bör titta på när du utvecklar anpassade moduler, och det påverkar också den övergripande rankningen av sökmotorer.
Vi använder den senaste versionen av OpenCart, så se till att du har installerat det för att följa koden.
Här är en sammanfattning av de steg som vi måste ta för att uppnå anpassade webbadresser i OpenCart:
Så det är det snabba ögonkastet av vad som kommer upp nästa. Låt oss gå vidare till det första ämnet.
Först och främst är det viktigt att förstå hur SEO-webbadresser fungerar i kärnan i OpenCart.
Gå vidare och utforska posterna i "url_alias" MySQL-tabellen med phpMyAdmin eller något liknande. Du får se mappings så här.
product_id = 48 ipod-classic category_id = 20 skrivbord manufacturer_id = 8 apple information_id = 6 leverans
Det finns två viktiga kolumner att notera här. Den första är fråga kolumn som lagrar den faktiska banan och den andra är nyckelord, som lagrar SEO-aliaset för den webbadressen.
Som du kan se finns det mappings för olika enheter som produkt, kategori, information och tillverkare. När någon enhet sparas i back-end av OpenCart läggs en tillhörande post till den här tabellen.
I fronten, när användaren åtkomst till webbadressen, finner OpenCart den relaterade mappningen från "url_alias" -tabellen. På så sätt mappas den faktiska enheten till den SEO-vänliga URL-adressen.
Gå vidare och öppna filen katalog / styrenheten / gemensam / seo_url.php
, och låt oss utforska följande snipp från index
metod.
public function index () // Lägg till omskrivning till url klass om ($ this-> config-> get ('config_seo_url')) $ this-> url-> addRewrite ($ this); // Avkod URL om (isset ($ this-> request-> få ['_ route_'])) $ parts = explodera ('/', $ this-> request-> get ['_ route_']); // ta bort tomma arrays från efterföljande om (utf8_strlen (slutet ($ delar)) == 0) array_pop ($ parts); föreach ($ delar som $ del) $ query = $ this-> db-> fråga ("VÄLJ * FRÅN". DB_PREFIX. "url_alias VAR sökord = '". $ this-> db-> escape ($ part) . "'"); om ($ query-> num_rows) $ url = explodera ('=', $ query-> rad ['query']); om ($ url [0] == 'product_id') $ this-> request-> få ['product_id'] = $ url [1]; om $ url [0] == 'category_id') if (! isset ($ this-> request-> få ['path'])) $ this-> request-> get ['path'] = $ url [1]; annat $ this-> request-> få ['path']. = '_'. $ Url [1]; om ($ url [0] == 'manufacturer_id') $ this-> request-> få ['manufacturer_id'] = $ url [1]; om ($ url [0] == 'information_id') $ this-> request-> få ['information_id'] = $ url [1]; om $ query-> row ['query'] && $ url [0]! = 'information_id' && $ url [0]! = 'manufacturer_id' && $ url [0]! = 'category_id' && $ url [ 0]! = 'Product_id') $ this-> request-> få ['route'] = $ query-> row ['query']; annat $ this-> request-> få ['route'] = 'error / not_found'; ha sönder; if (isset ($ this-> request-> get ['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 / tillverkare / info'; elseif (isset ($ this-> request-> få ['information_id'])) $ this-> request-> få ['route'] = 'information / information'; om (isset ($ this-> request-> få ['route'])) returnera ny åtgärd ($ this-> request-> get ['route']);
Som du kan se hämtar vi den tillhörande posten från tabellen "url_alias". Därefter analyseras frågeparametern och en tillhörande intern sökväg returneras.
Så det här är hur det fungerar i kärnan. Tyvärr fungerar inställningen bara för kärnadresser-för anpassade webbadresser som vi behöver ändra kärnkoden. Det är receptet på nästa avsnitt.
Gå vidare och öppna filen katalog / styrenheten / gemensam / seo_url.php
, och ersätt skriva om
metod med följande.
public function rewrite ($ link) $ url_info = parse_url (str_replace ('&', '&', $ länk)); $ url = "; $ data = array (); parse_str ($ url_info ['query'], $ data); foreach ($ data som $ key => $ värde) if (isset ($ data ['route'] )) if (($ data ['route'] == 'produkt / produkt' && $ key == 'product_id') || (($ data ['route'] == 'produkt / tillverkare / info' | | $ data ['route'] == 'produkt / produkt') && $ key == 'manufacturer_id') || ($ data ['route'] == 'information / information' && $ key == 'information_id' )) $ query = $ this-> db-> fråga ("VÄLJ * FRÅN". DB_PREFIX. "url_alias WHERE 'fråga' = '". $ this-> db-> escape ($ key.' = '. int) $ värde). "'"); om ($ query-> num_rows && $ query-> rad [' nyckelord ']) $ url. =' / '. $ query-> rad [' nyckelord ']; $ categories = explodera ('_', $ value); foreach ($ kategorier som $ kategori) $ query = $ this -> db-> fråga ("VÄLJ * FRÅN". DB_PREFIX. "url_alias WHERE 'query' = 'category_id =". (int) $ kategori. "'"); om ($ query-> num_rows && $ query-> rad ['nyckelord']) $ url. = '/'. $ query-> rad ['nyckelord']; else $ url = "; ha sönder; unset ($ data [$ key]); // vår kundkod annat $ query = $ this-> db-> fråga ("VÄLJ * FRÅN". DB_PREFIX. "Url_alias WHERE" fråga "=" ". $ Data ['route']. ; om ($ query-> num_rows && $ query-> row ['keyword']) $ url. = '/'. $ Query-> raden [ 'sökordet']; andra $ url = "; break; // VÅR KODEKOD om ($ url) unset ($ data ['route']); $ query ="; om ($ data) foreach ($ data som $ key => $ värde) $ query. = '&'. rawurlencode ((sträng) $ nyckel). '='. rawurlencode ((sträng) $ value); om ($ query) $ query = '?' . str_replace ('&', '&', trim ($ query, '&')); returnera $ url_info ['scheme']. ': //'. $ url_info ['värd']. (isset ($ url_info ['port'])? ':'. $ url_info ['port']: "). str_replace ('/ index.php',", $ url_info ['path']). $ url. $ Fråga; annat return $ link;
De skriva om
Metoden används för att konvertera en intern URL till en SEO-vänlig URL. Men det gör det bara för interna webbadresser. Därför måste vi lägga till anpassad kod för att den ska fungera för våra anpassade moduler också. I våra kodändringar har vi gett det sista annat fall vilket laddar kartläggningen för vår anpassade modul. Vi har inte lagt till vår anpassade kartläggning än, så låt oss göra det i vårt nästa avsnitt.
Även om vi har ändrat kärnfilen direkt, är det bara för enkelhets skull. Du bör använda OCMOD för att ändra kärnfilen utan att verkligen ändra den.
I det här avsnittet lägger vi till en SEO-URL-kartläggning för vår anpassade modul. Återigen är det en vanlig SQL för exem-pelvis-du kan uppnå det som använder modulinstallationsskript.
INSERT INTO 'url_alias' ('query', 'keyword') värden ('custom / custom', 'custom-rewrite');
Fortsätt och kör det i din OpenCart-databas.
I nästa och sista avsnittet kommer vi att se hur du använder hjälparfunktionen för att producera SEO-vänliga länkar.
Gå vidare och skapa en ny fil katalog / styrenheten / anpassade / custom.php
med följande innehåll.
URL-> länk ( 'anpassade / anpassade'); $ this-> response-> setOutput ('Custom URL Rewrite Link');
Nu, i fronten, öppna URL: n http://www.yourstore.com/index.php?route=custom/custom.
Ja, det är en vanlig vit skärm bara med en länk, och det är vad vi tänkte. Det viktiga att notera här är URL av den länken - det är nu SEO-vänligt! Klicka på det och det kommer att ladda samma sida, eftersom vi har lagt till kartläggningen för det i tabellen "url_alias".
Så det är hela konceptet på ett enkelt sätt. Du kan förlänga det och göra en modell för att infoga SEO-vänliga länkar för din anpassade modul.
Idag har vi diskuterat ett viktigt ämne i OpenCart-anpassade SEO-vänliga webbadresser. Vi tog ett mycket enkelt tillvägagångssätt för att förklara det, och jag hoppas att det var användbart för dig.
Om du letar efter ytterligare OpenCart-verktyg, verktyg, tillägg och så vidare som du kan utnyttja i dina egna projekt eller för din egen utbildning, glöm inte att se vad vi har tillgängliga på marknaden.
Skicka gärna dina frågor och förslag via foderet nedan.