Linki kanoniczne są dość ważną kwestią związaną z pozycjonowaniem. Pozwalają dokładniej wskazać wyszukiwarkom która podstrona jest witryną główną i uniknąć np. oznaczenia jako „duplicate content„. Może mieć to miejsce np. na stronie kategorii.
Ale o co chodzi? Kategoria może posiadać kilka podstron (bo np. posiada dużo produktów) natomiast każda z tych podstron posiada ten sam opis kategorii. Może być to odebrane przez wyszukiwarki jako powielanie treści i mieć znikomy (lub nie) wpływ na pozycję w rankingu. Najlepiej za w czasu wprowadzić nieznaczne modyfikacje, aby witryna sklepowa była bardziej czytelna dla robotów indeksujących.
Na poniższej modyfikacji pokażemy jak dodać linki kanoniczne na kluczowych podstronach. Oczywiście w razie potrzeby można ich utworzyć więcej, poniższe stanowią niezbędne minimum.
Dodatkowo przedstawimy dodanie odp. znacznika meta informującego robota indeksującego o tym, że znajduje się na podstronie w obrębie paginacji (np. na 5 podstronie z 12-tu, 2 podstronie z 6-ciu itp.).
Modyfikacja jest przedstawiona dla sklepów Presta Shop w wersji 1.6.x.
Modyfikacja PHP.
Otwieramy plik:
1 |
classes/controller/FrontController.php |
Znajdujemy funkcję:
1 |
initContent() |
Przed wystąpieniem warunku:
1 |
if (!$this->useMobileTheme()) { |
ściślej przed wystąpieniem przesyłania zmiennych do szablonu:
1 |
$this->context->smarty->assign(array( |
Wklejamy kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$category_canonical = false; switch (Dispatcher::getInstance()->getController()) { case 'index': $dyn_canonical = $this->context->link->getPageLink($this->php_self, $this->ssl, $this->context->language->id); break; case 'category': $dyn_canonical = $this->context->link->getCategoryLink($this->category); $category_canonical = $this->context->link->getCategoryLink($this->category); break; case 'product': $dyn_canonical = $this->context->link->getProductLink($this->product); break; } |
Następnie zamieniamy kod:
1 2 3 4 5 6 |
$this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), )); |
Na:
1 2 3 4 5 6 7 8 |
$this->context->smarty->assign(array( 'HOOK_HEADER' => Hook::exec('displayHeader'), 'HOOK_TOP' => Hook::exec('displayTop'), 'HOOK_LEFT_COLUMN' => ($this->display_column_left ? Hook::exec('displayLeftColumn') : ''), 'HOOK_RIGHT_COLUMN' => ($this->display_column_right ? Hook::exec('displayRightColumn', array('cart' => $this->context->cart)) : ''), 'dyn_canonical' => $dyn_canonical, 'category_canonical'=> $category_canonical )); |
Czyli jak widać przekazujemy 2 nowe zmienne do szablonu:
dyn_canonical oraz category_canonical
Modyfikacja szablonu
Otwieramy plik:
1 |
themes/{NAZWA-SZABLONU}/header.tpl |
i zaraz przed zamknięciem znacznika:
1 |
</head> |
Wklejamy kod:
1 2 3 4 5 6 7 8 9 10 11 |
{if $dyn_canonical} <link rel="canonical" href="{$dyn_canonical}" /> {/if} {if $category_canonical} {if $p != 1} <link rel="prev" href="{$category_canonical}?p={$p-1}" /> {/if} {if $pages_nb > 1 AND $p != $pages_nb} <link rel="next" href="{$category_canonical}?p={$p+1}" /> {/if} {/if} |
Gotowe. Po odświeżeniu cache sklepu i wyczyszczeniu pamięci podręcznej (opisywaliśmy to wielokrotnie w naszych artykułach) – zmiany powinny być widoczne.
W sekcji HEAD będą pojawiać się dodatkowe informacje dla wyszukiwarek które łatwiej zinterpretują kod na Twojej stronie sklepu.