# Plan modułu Blog — Project-Pro Blog

## Dane modułu
- Nazwa wyświetlana: `Project-Pro Blog`
- Nazwa techniczna (katalog/klasa): `projectproblog`
- Autor: `Project-Pro`
- URL autora: `https://www.project-pro.pl`
- PrestaShop: 1.7.8.11

## Etapy

### Etap 1 — Baza danych
Tabele z prefiksem `pr_projectproblog_`:
- `category` — id, id_parent, active, position, date_add, date_upd
- `category_lang` — id_category, id_lang, name, description, link_rewrite, meta_title, meta_keywords, meta_description
- `post` — id, active, thumbnail, date_add, date_upd
- `post_lang` — id_post, id_lang, title, intro, content, link_rewrite, meta_title, meta_keywords, meta_description
- `post_category` — id_post, id_category (relacja many-to-many)

### Etap 2 — Szkielet modułu (`projectproblog.php`)
- Klasa `Projectproblog extends Module`
- install() → SQL + taby admina + hooki
- uninstall() → drop tabel + usunięcie tabów
- Rejestracja ModuleFrontController (przyjazne URL-e)
- Konfiguracja: liczba wpisów na stronę (domyślnie 9)

### Etap 3a — Admin: kategorie (`AdminProjectproBlogCategoriesController`)
- Lista: nazwa, rodzic, aktywna, pozycja
- Formularz (multilang): nazwa, opis, link_rewrite, meta_title/keywords/description
- Pola: id_parent (select), active (toggle), position

### Etap 3b — Admin: wpisy (`AdminProjectproBlogPostsController`)
- Lista: miniaturka, tytuł, kategorie, data dodania, aktywny
- Formularz (multilang): tytuł, wstęp, treść (TinyMCE), link_rewrite, meta_title/keywords/description
- Upload miniaturki z podglądem
- Checkboxy przypisania do wielu kategorii
- Toggle aktywny, daty auto

### Etap 4a — Front: lista (`list.php` ModuleFrontController)
- URL: /blog i /blog/kategoria/{link_rewrite}
- Filtrowanie po kategorii, stronicowanie
- Dane do Smarty: wpisy, drzewo kategorii, bieżąca kategoria, paginacja

### Etap 4b — Front: szczegół (`post.php` ModuleFrontController)
- URL: /blog/wpis/{link_rewrite}
- Meta title/description/keywords w <head>
- Dane: wpis, kategorie wpisu, breadcrumb

### Etap 5 — Szablony Smarty
- `list.tpl` — layout 2-kolumnowy: lewa=drzewo kategorii, prawa=siatka wpisów 2-kol + paginacja
- `post.tpl` — miniaturka, h1, wstęp wyróżniony, treść HTML, daty, breadcrumb
- `_category-tree.tpl` — partial z drzewem (include w list.tpl)

### Etap 6 — Routing i SEO
- Trasy: /blog, /blog/kategoria/{slug}, /blog/wpis/{slug}
- link_rewrite generowany z tytułu
- Canonical URL w szablonach

## Status etapów
- [x] Etap 1 — Baza danych
- [x] Etap 2 — Szkielet modułu
- [x] Etap 3a — Admin kategorie
- [x] Etap 3b — Admin wpisy
- [x] Etap 4a — Front lista
- [x] Etap 4b — Front szczegół
- [x] Etap 5 — Szablony
- [x] Etap 6 — Routing i SEO
