--- phase: 01-homepage-blog-zajawki plan: 01 type: execute wave: 1 depends_on: [] files_modified: - modules/projectproblog/projectproblog.php - modules/projectproblog/classes/BlogPost.php - modules/projectproblog/views/templates/hook/home.tpl - modules/projectproblog/views/css/blog.css autonomous: true --- ## Goal Dodac sekcje blogowa na stronie glownej, ktora wyswietla 3 najnowsze aktywne wpisy jako zajawki i zawiera naglowek sekcji. ## Purpose Uzytkownik sklepu ma od razu na homepage widoczny aktualny content bloga, co wspiera ruch do sekcji /blog i ekspozycje marki. ## Output Hook `displayHome` w module `projectproblog`, pobranie 3 ostatnich wpisow, render sekcji z kartami wpisow i stylami. ## Project Context @.paul/PROJECT.md @.paul/ROADMAP.md @.paul/STATE.md ## Source Files @modules/projectproblog/projectproblog.php @modules/projectproblog/classes/BlogPost.php @modules/projectproblog/views/templates/front/list.tpl @modules/projectproblog/views/css/blog.css @themes/classic/templates/index.tpl ## AC-1: Sekcja blogowa widoczna na homepage ```gherkin Given modul projectproblog jest zainstalowany i ma aktywne wpisy When uzytkownik otwiera strone glowna sklepu Then widzi sekcje z naglowkiem i 3 zajawkami najnowszych wpisow bloga ``` ## AC-2: Zajawki odzwierciedlaja wpisy i prowadza do detailu ```gherkin Given sekcja blogowa jest wyswietlona na stronie glownej When uzytkownik widzi zajawki wpisow Then kazda zajawka pokazuje tytul, date, intro, miniaturke (jezeli jest) i link do strony wpisu ``` ## AC-3: Brak regresji gdy brak wpisow ```gherkin Given brak aktywnych wpisow blogowych When uzytkownik otwiera strone glowna Then sekcja blogowa nie powoduje bledow renderowania i nie psuje ukladu strony ``` Task 1: Dodaj dane i hook displayHome dla modulu bloga modules/projectproblog/projectproblog.php, modules/projectproblog/classes/BlogPost.php Rozszerz modul o obsluge homepage: - Zarejestruj hook `displayHome` podczas instalacji. - Dodaj implementacje `hookDisplayHome`, ktora pobierze 3 najnowsze aktywne wpisy. - W `BlogPost` dodaj metode do pobierania limitowanej listy najnowszych wpisow dla jezyka (sortowanie po `date_add DESC`, tylko `active=1`). - Wzbogac dane o URL wpisu i URL miniatury analogicznie do listy bloga. Unikaj: zmian SQL i zmian w strukturze tabel (nie sa potrzebne do tej funkcji). php -l modules/projectproblog/projectproblog.php && php -l modules/projectproblog/classes/BlogPost.php AC-1 i AC-2 spelnione po stronie backendu danych i hooka Task 2: Wyrenderuj sekcje zajawkowa bloga na homepage modules/projectproblog/views/templates/hook/home.tpl, modules/projectproblog/views/css/blog.css, modules/projectproblog/projectproblog.php Dodaj szablon hooka home oraz stylowanie: - Utworz `views/templates/hook/home.tpl` z naglowkiem sekcji i 3 kartami wpisow. - Zachowaj wizualna spojnosc z kartami z `/blog` (tytul, intro, data, CTA). - Podlacz CSS dla sekcji homepage (dedykowane klasy, bez ingerencji w globalny layout sklepu). - W `hookDisplayHome` przypisz zmienne Smarty (`blog_home_title`, `blog_home_posts`, `blog_url`) i zwroc szablon tylko gdy sa wpisy. Unikaj: edycji plikow szablonu motywu (`themes/*`) - sekcja ma wejsc przez hook modułu. Rebuild cache smarty (jesli wymagane) i reczny test: otworz homepage i potwierdz widocznosc sekcji oraz linkowanie do wpisu i /blog AC-1, AC-2 i AC-3 spelnione w warstwie UI ## DO NOT CHANGE - `themes/*` (brak edycji motywu poza istniejacym mechanizmem hooka) - `modules/projectproblog/sql/*` (brak zmian schematu bazy) - Kontrolery blog list/post (chyba ze wyjdzie krytyczna koniecznosc kompatybilnosci) ## SCOPE LIMITS - Zakres obejmuje tylko homepage i tylko 3 ostatnie wpisy. - Brak zmian w panelu administracyjnym bloga. - Brak nowych opcji konfiguracyjnych modułu w BO na tym etapie. Before declaring plan complete: - [ ] `php -l modules/projectproblog/projectproblog.php` - [ ] `php -l modules/projectproblog/classes/BlogPost.php` - [ ] Homepage wyswietla sekcje bloga z 3 wpisami i naglowkiem - [ ] Linki z kart prowadza do poprawnych URL wpisow blogowych - [ ] Przy pustej bazie wpisow homepage renderuje sie bez bledow - [ ] All acceptance criteria met - Hook `displayHome` z modulem bloga dziala i zwraca sekcje tylko gdy sa wpisy. - Sekcja homepage prezentuje 3 najnowsze wpisy jako zajawki zgodne wizualnie z `/blog`. - Implementacja nie powoduje regresji na homepage i w module bloga. After completion, create `.paul/phases/01-homepage-blog-zajawki/01-01-SUMMARY.md`