Zawartość artykułu
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