Press "Enter" to skip to content

[PRESTASHOP 1.7] Błąd w SEO & URL: Słowo kluczowe „{id}” wymagane / Keyword „{id}” required for route

Admin 0

Jak się objawia błąd i z czego on wynika?

Jeśli korzystamy z zakupionego szablonu możemy natrafić na enigmatyczny błąd w dziale:

Konfiguruj -> Ruch -> SEO & URL

Dla języka PL będzie to:

    Słowo kluczowe "{id}" wymagane dla "tvcmsblog-archive-wid-module" (reguła: "tvcmsblog/category/{rewrite}.html")
    Słowo kluczowe "{id}" wymagane dla "tvcmsblog-tag-wid-module" (reguła: "tvcmsblog/tag/{rewrite}.html")
    Słowo kluczowe "{id}" wymagane dla "tvcmsblog-single-wid-module" (reguła: "tvcmsblog/post/{rewrite}.html")

Dla EN:

    Keyword "{id}" required for route "tvcmsblog-archive-wid-module" (rule: "tvcmsblog/category/{rewrite}.html")
    Keyword "{id}" required for route "tvcmsblog-tag-wid-module" (rule: "tvcmsblog/tag/{rewrite}.html")
    Keyword "{id}" required for route "tvcmsblog-single-wid-module" (rule: "tvcmsblog/post/{rewrite}.html")

Jest o tyle frustrujący, że blokuje zapis w tej sekcji 🙁

Oczywiście nazwy reguły („tvcmsblog” itd.) mogą być inne w zależności od zastosowanego modułu.

Problem tkwi w tym, że system PrestaShop wymaga w tzw. slugu identyfikującego go numeru ID. Ten błąd oznacza, że tego ID nie ma albo nie może go odnaleźć.

Uproszczając slug jest to nazwa w linku URL bazująca na ID artykułu oraz jego nazwie. Np. dla artykułu o tytule „Oto mój artykuł o błędzie w PrestaShop” slug będzie miał postać: „oto-moj-artykul-o-bledzie-w-prestashop-99” a w przeglądarce np. : http://domena/oto-moj-artykul-o-bledzie-w-prestashop-99.html

Rozwiązanie problemu.

Rozwiązanie to odp. zmodyfikowanie pliku PHP we wskazanym module. Tutaj modułem będzie prawdopodobnie „tvcmsblog”. W Twoim przypadku – może być inaczej i należy to wydedukować z wyświetlanego błędu.

Otwieramy zatem plik:

modules/tvcmsblog/tvcmsblog.php

Następnie próbujemy znaleźć kod odpowiedzialny za budowanie linku. Polegając na w/w błędzie będzie posiadał on w swojej konstrukcji zmienną:

{rewrite}

W naszym przypadku była to zamiana w wystąpień:

Kod#1:

'tvcmsblog-archive-wid-module' => array(
                    'controller' =>  'archive',
                    'rule' =>        $main_slug.'/'.$category_slug.'/{rewrite}'.$postfix_slug,

 

zamieniamy na:

'tvcmsblog-archive-wid-module' => array(
                    'controller' =>  'archive',
                    'rule' =>        $main_slug.'/'.$category_slug.'/{rewrite}_{id}'.$postfix_slug,

 

Kod#2:

'tvcmsblog-tag-wid-module' => array(
                    'controller' =>  'archive',
                    'rule' =>        $main_slug.'/'.$tag_slug.'/{rewrite}'.$postfix_slug,

 

zamieniamy na:

'tvcmsblog-tag-wid-module' => array(
    'controller' =>  'archive',
    'rule' =>        $main_slug.'/'.$tag_slug.'/{rewrite}_{id}'.$postfix_slug,

 

Kod#3:

'tvcmsblog-single-wid-module' => array(
    'controller' =>  'single',
    'rule' =>        $main_slug.'/'.$single_slug.'/{rewrite}'.$postfix_slug,

 

zamieniamy na:

'tvcmsblog-single-wid-module' => array(
    'controller' =>  'single',
    'rule' =>        $main_slug.'/'.$single_slug.'/{rewrite}_{id}'.$postfix_slug,

 

Czyli jak widać po prostu do zmiennej sluga:

{rewrite}

dopisujemy zmienną z ID:

{rewrite}_{id}

Oczywiście jeśli korzystasz z innych modułów i błąd jest wskazywany w innej ścieżce – musisz zmienić to przez analogię.

Po zapisaniu zmian, wgraniu pliku PHP na serwer – bląd powinien zniknąć.

Dla pewności – w w/w dziale:

Konfiguruj -> Ruch -> SEO & URL

Dla testu wyłącz i włącz przyjazne linki:

1) Przyjazny adres URL –> NIE

2) Przyjazny adres URL –> TAK

grafika: wallpaperflare.com

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Jak okiełznać taki błąd PHP po przeniesieniu na nowy serwer?