Announcement Bar

Opis Moduł Kowal_AnnouncementBar dodaje pasek ogłoszeń w nagłówku sklepu (frontend) oraz panel administracyjny do zarządzania treściami ogłoszeń, ikoną i linkiem. Render następuje globalnie w layoucie default.xml w kontenerze header.container, a rotacja treści jest realizowana przez JS.

Dla kogo Dla zespołów e-commerce i marketingu, które chcą zarządzać krótkimi komunikatami w nagłówku sklepu bez zmian w kodzie tematu.

Funkcje

  • Dodaje frontendowy blok Kowal\AnnouncementBar\Block\AnnouncementBar renderowany w header.container na wszystkich stronach przez view/frontend/layout/default.xml i template view/frontend/templates/announcement_bar.phtml.
  • Wyświetla ogłoszenia z tabeli kowal_announcementbar_announcement; aktualnie brak filtra po status (linia filtrowania jest zakomentowana), więc renderowane są wszystkie rekordy.
  • Obsługuje opcjonalny link w treści ogłoszenia oraz ikonę; jeśli ikona nie jest ustawiona, używa domyślnej view/frontend/web/images/arrow.svg.
  • Rotacja ogłoszeń w JS view/frontend/web/js/announcement.js z animacją fadeIn/fadeOut; liczba równoległych pozycji zależy od szerokości okna (>=1024: 4, >=768: 2, inaczej 1) i jest aktualizowana na resize.
  • Konfiguracja kolorów paska (background_color, font_color) w scope default/website/store view; w kodzie pobierane w ScopeInterface::SCOPE_STORE.
  • Panel administracyjny (UI Component) z listą i formularzem: grid kowal_announcementbar_announcement_listing, form kowal_announcementbar_announcement_form.
  • Operacje CRUD w panelu admina: lista, edycja, zapis, usunięcie, inline edit w gridzie.
  • Upload ikon w adminie (kowal_announcementbar/announcement/upload) zapisuje pliki do media/announcementbar/icons z dyspersją i zwraca publiczny URL.
  • Deklaratywny schemat DB: tabela kowal_announcementbar_announcement z kolumnami announcement_id, icon, content, status, link.

Instalacja * = in production please use the --keep-generated option

Type: Composer

  1. Add the composer repository to the configuration:

    
    composer config repositories.announcement.bar vcs https://github.com/kowalco/magento-2-announcement-bar
  2. Add an access token for the private GitLab repository:

    
    composer config --global --auth github-oauth.github.com <YOUR_TOKEN>
  3. Install the module using Composer:

    
    composer require kowal/module-announcementbar
  4. Enable the module:

    
    php bin/magento module:enable Kowal_AnnouncementBar
  5. Apply database updates:

    
    php bin/magento setup:upgrade
  6. Flush the cache:

    php bin/magento cache:flush

Konfiguracja

  • Ścieżka konfiguracji: Stores > Configuration > (tab: kowal) > Announcement Bar Settings > General Settings.
  • Pola:
    • kowal_announcementbar/general/background_color (hex, scope: default/website/store view).
    • kowal_announcementbar/general/font_color (hex, scope: default/website/store view).
  • Domyślne wartości z etc/config.xml: #ffffff dla tła i #000000 dla fontu.

Wdrożenie i operacje

  • Moduł dodaje CSS i JS w layoucie default.xml; w trybie produkcyjnym wymagany jest deploy static content, aby załadowały się view/frontend/web/css/source/_module.less i view/frontend/web/js/announcement.js.
  • Zmiany treści ogłoszeń i konfiguracji mogą wymagać odświeżenia cache (np. FPC/Block cache) ze względu na render w nagłówku.
  • Upload ikon zapisuje pliki w media/announcementbar/icons — zadbaj o backup/retencję tego katalogu.

Checklist wdrożeniowy

  1. Upewnij się, że tabela kowal_announcementbar_announcement została utworzona po setup:upgrade.
  2. Zweryfikuj, że konfiguracja kolorów jest ustawiona dla właściwego scope (store view).
  3. Sprawdź, czy w nagłówku renderuje się blok announcement.bar i ładuje się JS/CSS.
  4. Przetestuj upload ikony w adminie i dostępność pliku w media/announcementbar/icons.
  5. Sprawdź działanie rotacji ogłoszeń na desktop/tablet/mobile.

CI/CD i środowiska

  • Brak dedykowanych skryptów CI/CD w module.
  • W pipeline wdrożeniowym wymagane standardowe kroki Magento po instalacji/aktualizacji modułu (DB upgrade, deploy static content w produkcji, cache clean/flush).

Rollback

  • Wyłączenie modułu: php bin/magento module:disable Kowal_AnnouncementBar.
  • Usunięcie tabeli/rekordów nie jest automatyczne — decyzja operacyjna (manualnie w DB) jeśli rollback ma usunąć dane.
  • Przy rollbacku z backupu pamiętaj o spójności media/announcementbar/icons z rekordami w DB.

Wymagania / uwagi

  • Brak deklaracji wersji Magento i PHP w composer.json (sekcja require jest pusta) — kompatybilność należy potwierdzić na środowisku docelowym.
  • W etc/acl.xml brak zdefiniowanych zasobów Kowal_AnnouncementBar::root, Kowal_AnnouncementBar::config i Kowal_AnnouncementBar::top_level, mimo że są używane w menu.xml, system.xml i Controller/Adminhtml/Announcement.php. Może to powodować problemy z uprawnieniami/wyświetlaniem menu i konfiguracji.
  • W etc/adminhtml/menu.xml parent to Kowal_Base::kowal_modules, a w system.xml używany jest tab kowal — te elementy nie są zdefiniowane w tym module.
  • W gridzie UI występuje zdublowana kolumna status (dwa wpisy o tej samej nazwie w kowal_announcementbar_announcement_listing.xml).
  • Pole status jest w DB i gridzie, ale w formularzu edycji zostało zakomentowane.

Kompatybilność

  • Magento 2: brak deklaracji w module (do potwierdzenia).
  • PHP: brak deklaracji w module (do potwierdzenia).

FAQ

  • Dlaczego nie widzę pozycji menu lub konfiguracji w panelu? W module brakuje definicji ACL dla Kowal_AnnouncementBar::root, Kowal_AnnouncementBar::config i Kowal_AnnouncementBar::top_level. To może blokować widoczność menu/konfiguracji.
  • Dlaczego nie ma filtra po status na froncie? W Block/AnnouncementBar.php filtr status jest zakomentowany, więc wyświetlane są wszystkie rekordy.
  • Dlaczego komendy instalacji w README wyglądają niepoprawnie? Sekcja Installation w README zawiera niezamknięte bloki kodu. W item.md domknięto blok kodu po kroku 6, aby dalsze sekcje były czytelne, zachowując ten sam układ i polecenia.
  • Jaka jest dokładna nazwa paczki Composer? W README użyto kowal/module-announcementbar, a w composer.json modułu jest kowal/announcement-bar. Wymaga to potwierdzenia w repozytorium paczki.