v1.0.0 PrestaShop 8.x

KS Pretty URLs

Moduł do usuwania ID z adresów URL w PrestaShop 8.x

Autor: KamikStudio
Aktualizacja: Grudzień 2024
Licencja: 1 domena + dev/staging

1. Opis modułu

KS Pretty URLs to profesjonalny moduł dla PrestaShop 8.x, który usuwa identyfikatory numeryczne (ID) z adresów URL, tworząc czyste, przyjazne dla SEO linki.

Przed instalacją https://sklep.pl/37-nasiona https://sklep.pl/123-nawoz-azotowy.html https://sklep.pl/content/5-regulamin
Po instalacji https://sklep.pl/nasiona https://sklep.pl/nawoz-azotowy https://sklep.pl/regulamin

2. Funkcjonalności

Obsługiwane typy encji

Typ Przed Po
Kategorie /37-nasiona /nasiona
Produkty /123-produkt.html /produkt
Strony CMS /content/5-regulamin /regulamin
Kategorie CMS /content/category/2-info /info
Producenci /manufacturer/8-bayer /brand/bayer
Dostawcy /supplier/3-dostawca /supplier/dostawca
Blog (ETS Blog) /blog/12-tytul /blog/tytul

Kluczowe cechy

  • Automatyczne przekierowania 301 Stare URL-e z ID automatycznie przekierowują na nowe
  • Wielojęzyczność Osobne pretty URL-e dla każdego języka
  • Multishop Pełna obsługa wielu sklepów
  • Opcjonalne prefiksy Możliwość dodania prefiksów jak /c/, /p/
  • Panel zarządzania Edycja, usuwanie i regeneracja URL-i
  • Statystyki przekierowań Monitoring użycia starych linków
  • Automatyczna aktualizacja Nowe URL-e generowane przy zapisie encji
  • Obsługa konfliktów Automatyczne dodawanie sufiksów dla duplikatów

3. Wymagania systemowe

Komponent Minimalna wersja
PrestaShop 8.0.0
PHP 8.1
MySQL 5.7 / MariaDB 10.3

Zgodność z modułami

✅ ETS Blog ✅ ps_facetedsearch ✅ Artistic Theme ✅ TheCheckout ✅ preorderandnotification

4. Struktura plików

Struktura katalogów
modules/ks_prettyurls/
├── ks_prettyurls.php          # Główny plik modułu
├── config.xml                  # Konfiguracja XML
├── LICENSE.txt                 # Licencja
├── logo.png                    # Logo modułu (32x32)
├── index.php                   # Plik bezpieczeństwa
│
├── classes/
│   ├── KsPrettyUrlsManager.php # Klasa zarządzająca URL-ami
│   ├── KsTabManager.php        # Klasa menu KamikStudio
│   └── index.php
│
├── controllers/
│   └── admin/
│       ├── AdminKsPrettyUrlsController.php
│       └── index.php
│
├── views/
│   ├── css/
│   │   ├── admin.css
│   │   └── index.php
│   └── templates/
│       └── admin/
│           └── index.php
│
├── sql/
│   └── index.php
│
├── translations/
│   └── index.php
│
└── upgrade/
    └── index.php

override/classes/
├── Link.php                    # Override generowania linków
└── Dispatcher.php              # Override routingu

5. Instalacja

1

Prześlij pliki modułu

Terminal / SCP
# Przez SCP
scp -r ks_prettyurls/ user@server:/var/www/prestashop/modules/

# Lub przez FTP - prześlij folder ks_prettyurls do /modules/
2

Prześlij pliki override

Terminal
scp Link.php user@server:/var/www/prestashop/override/classes/
scp Dispatcher.php user@server:/var/www/prestashop/override/classes/
3

Wyczyść cache klas

Terminal
rm -f /var/www/prestashop/var/cache/prod/class_index.php
rm -f /var/www/prestashop/var/cache/dev/class_index.php
4

Zainstaluj moduł

Panel Admina → ModułyMenedżer modułów → Wyszukaj "KS Pretty URLs" → Zainstaluj

5

Wyczyść cache PrestaShop

Panel Admina → ZaawansowaneWydajnośćWyczyść cache

6

Wygeneruj URL-e

Panel Admina → KamikStudioKS Pretty URLsKonfiguruj → "Generuj wszystkie URL-e"

6. Konfiguracja

Dostęp do konfiguracji

Menu: KamikStudio → KS Pretty URLs → Konfiguruj
Lub: Moduły → KS Pretty URLs → Konfiguruj

Typy encji (włącz/wyłącz)

Opcja Domyślnie Opis
KategorieUsuwa ID z URL-i kategorii
ProduktyUsuwa ID z URL-i produktów
Strony CMSUsuwa ID z URL-i stron CMS
Kategorie CMSUsuwa ID z URL-i kategorii CMS
Blog (ETS Blog)Usuwa ID z URL-i wpisów blogowych
ProducenciUsuwa ID z URL-i producentów
DostawcyUsuwa ID z URL-i dostawców

Prefiksy URL (opcjonalne)

Prefiksy pozwalają uniknąć konfliktów URL-i między różnymi typami encji.

Prefiks Domyślnie Z prefiksem Bez prefiksu
Kategorie(pusty)/c/nasiona/nasiona
Produkty(pusty)/p/nawoz/nawoz
CMS(pusty)/info/regulamin/regulamin
Blogblog/blog/tytul/tytul
Zalecenie: Pozostaw puste prefiksy dla czystych URL-i. Używaj prefiksów tylko gdy masz konflikty.

Ustawienia przekierowań

Opcja Domyślnie Opis
Automatyczne przekierowania✅ TakStare URL-e przekierowują na nowe
Typ przekierowania301301 = permanentne (SEO), 302 = tymczasowe

7. Użytkowanie

Panel zarządzania URL-ami

Menu: KamikStudio → KS Pretty URLs

Akcja Opis
Lista URL-iTabela wszystkich wygenerowanych pretty URL-i
EdycjaRęczna zmiana pretty URL dla encji
UsuwanieUsunięcie pretty URL (encja wróci do standardowego URL)
Generuj kategorieWygeneruj URL-e tylko dla kategorii
Generuj produktyWygeneruj URL-e tylko dla produktów
Regeneruj wszystkoWygeneruj URL-e dla wszystkich encji

Automatyczne generowanie

URL-e są generowane automatycznie gdy:

  • Tworzysz nową kategorię/produkt/stronę CMS
  • Edytujesz istniejącą encję i zmieniasz slug (link_rewrite)

Ręczna edycja URL-a

  1. Przejdź do listy URL-i
  2. Kliknij ikonę edycji przy wybranym wpisie
  3. Zmień pole "Pretty URL"
  4. Zapisz
Uwaga: Przy zmianie URL-a automatycznie tworzy się przekierowanie ze starego adresu.

8. Baza danych

Tabela: ps_ks_pretty_urls

Przechowuje mapowanie pretty URL → encja.

SQL
CREATE TABLE `ps_ks_pretty_urls` (
    `id_pretty_url` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `entity_type` VARCHAR(50) NOT NULL,
    `id_entity` INT(11) UNSIGNED NOT NULL,
    `id_lang` INT(11) UNSIGNED NOT NULL,
    `id_shop` INT(11) UNSIGNED NOT NULL,
    `pretty_url` VARCHAR(255) NOT NULL,
    `original_url` VARCHAR(255) NOT NULL,
    `active` TINYINT(1) NOT NULL DEFAULT 1,
    `date_add` DATETIME NOT NULL,
    `date_upd` DATETIME NOT NULL,
    
    PRIMARY KEY (`id_pretty_url`),
    UNIQUE KEY `unique_pretty` (`pretty_url`, `id_lang`, `id_shop`),
    UNIQUE KEY `unique_entity` (`entity_type`, `id_entity`, `id_lang`, `id_shop`)
);

Tabela: ps_ks_pretty_urls_redirects

Przechowuje przekierowania ze starych URL-i.

SQL
CREATE TABLE `ps_ks_pretty_urls_redirects` (
    `id_redirect` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `old_url` VARCHAR(255) NOT NULL,
    `new_url` VARCHAR(255) NOT NULL,
    `id_lang` INT(11) UNSIGNED NOT NULL,
    `id_shop` INT(11) UNSIGNED NOT NULL,
    `redirect_type` SMALLINT(3) NOT NULL DEFAULT 301,
    `hits` INT(11) UNSIGNED NOT NULL DEFAULT 0,
    `last_hit` DATETIME DEFAULT NULL,
    `active` TINYINT(1) NOT NULL DEFAULT 1,
    `date_add` DATETIME NOT NULL,
    
    PRIMARY KEY (`id_redirect`),
    UNIQUE KEY `unique_old_url` (`old_url`, `id_lang`, `id_shop`)
);

9. Jak to działa

Generowanie URL-i

Zapis kategorii "Nasiona" (ID: 37, slug: nasiona)
Hook: actionObjectCategoryUpdateAfter
KsPrettyUrlsManager::generatePrettyUrl('category', 37)
Zapis do ps_ks_pretty_urls + przekierowanie

Generowanie linków (Frontend)

$this->context->link->getCategoryLink(37)
Override: Link::getCategoryLink()
KsPrettyUrlsManager::getPrettyUrlByEntity('category', 37)
Zwraca: https://sklep.pl/nasiona

Rozwiązywanie URL-i (Request)

Użytkownik: https://sklep.pl/nasiona
Override: Dispatcher::dispatch()
Szuka w ps_ks_pretty_urls: pretty_url='nasiona'
Wynik: category, ID=37
PrestaShop wyświetla kategorię

11. Rozwiązywanie problemów

Strona 404 po włączeniu modułu

Przyczyna: Brak plików override lub nieaktualny cache klas.

Rozwiązanie:

# Sprawdź pliki override
ls -la override/classes/Link.php
ls -la override/classes/Dispatcher.php

# Usuń cache klas
rm -f var/cache/prod/class_index.php
rm -f var/cache/dev/class_index.php
Linki nadal zawierają ID

Przyczyna: Override Link.php nie działa.

Rozwiązanie:

// Sprawdź czy override jest załadowany (tymczasowo w index.php)
var_dump(get_parent_class('Link'));
// Powinno zwrócić: "LinkCore"
Duplikaty URL-i

Przyczyna: Dwie encje mają ten sam slug.

Rozwiązanie:

  • Moduł automatycznie dodaje suffix: nasiona, nasiona-2
  • Lub użyj prefiksów: /c/nasiona, /p/nasiona
Przekierowania nie działają

Przyczyna: Wyłączona opcja automatycznych przekierowań.

Rozwiązanie:

  1. Przejdź do konfiguracji modułu
  2. Włącz "Automatyczne przekierowania"
  3. Wybierz typ: 301
Zakładka KamikStudio nie pojawia się

Rozwiązanie:

cd ~/public_html/sklep && php -r "
require 'config/config.inc.php';
require 'modules/ks_prettyurls/classes/KsTabManager.php';
KsTabManager::installTab('ks_prettyurls', 'AdminKsPrettyUrls', 'KS Pretty URLs', 'link');
echo 'Gotowe!';
"
rm -f var/cache/prod/class_index.php

12. FAQ

Czy moduł wpływa na SEO?

Tak, pozytywnie. Czyste URL-e są lepiej indeksowane przez Google. Przekierowania 301 zachowują link juice ze starych adresów.

Czy muszę używać prefiksów?

Nie. Prefiksy są opcjonalne. Zostaw puste pola dla czystych URL-i jak /nasiona.

Co się stanie gdy odinstaluję moduł?
  • Tabele bazy danych zostaną usunięte
  • Przekierowania przestaną działać
  • URL-e wrócą do standardowego formatu z ID

Zalecenie: Przed odinstalowaniem dodaj przekierowania w .htaccess

Czy moduł działa z cache'em?

Tak. Moduł jest kompatybilny z cache PrestaShop, Varnish, Cloudflare, Redis/Memcached.

Jak przenieść moduł na inny serwer?
  1. Skopiuj folder modułu
  2. Skopiuj pliki override
  3. Wyeksportuj tabele: ps_ks_pretty_urls, ps_ks_pretty_urls_redirects
  4. Zaimportuj na nowym serwerze
  5. Wyczyść cache

13. Licencja

Licencja Komercyjna KamikStudio

Udzielenie licencji

Licencja uprawnia do instalacji i użytkowania modułu na:

  • 1 (jednej) domenie produkcyjnej
  • Nieograniczonej liczbie domen deweloperskich/testowych/stagingowych

Ograniczenia

  • Zabroniona jest odsprzedaż, dystrybucja lub udostępnianie modułu
  • Zabronione jest usuwanie informacji o autorze
  • Zabroniona jest dekompilacja i modyfikacja kodu źródłowego w celu powielenia

Wsparcie i aktualizacje

  • 12 miesięcy bezpłatnych aktualizacji od daty zakupu
  • Wsparcie techniczne przez email (czas reakcji do 48h)

14. Changelog

1.0.0 Grudzień 2024

🎉 Pierwsza wersja produkcyjna

  • ✅ Obsługa kategorii, produktów, CMS, blogów, producentów
  • ✅ Automatyczne przekierowania 301/302
  • ✅ Panel zarządzania w Back Office
  • ✅ Wielojęzyczność i Multishop
  • ✅ Opcjonalne prefiksy URL
  • ✅ Statystyki przekierowań
  • ✅ Integracja z menu KamikStudio
  • ✅ Kompatybilność z PrestaShop 8.x i PHP 8.1+

15. Wsparcie

Kontakt

Zgłaszanie błędów

Przy zgłaszaniu problemu podaj:

  1. Wersję PrestaShop
  2. Wersję PHP
  3. Opis problemu
  4. Kroki do odtworzenia
  5. Logi błędów (jeśli są)

Płatne wsparcie

Oferujemy:

  • Instalację i konfigurację modułu
  • Dostosowanie do indywidualnych potrzeb
  • Integrację z innymi modułami
  • Rozwiązywanie problemów

Stawka: 200 zł netto / godzina