Instrukcja użytkownika i wdrożeniowa

Astra FAQ 1.3.1 dla PrestaShop

Kompletna instrukcja konfiguracji modułu FAQ: tryby zarządzania, pola wielojęzyczne, przypisania do produktów, kategorii, CMS, koszyka, checkoutu, stron statycznych, stron modułów oraz praca w multistore.

Wersja modułu: 1.3.1 PrestaShop 1.7 / 8.x Multilang i multistore FAQPage JSON-LD

0. Szybki start

Najbezpieczniejsza kolejność wdrożenia modułu to wybór trybu zarządzania, dodanie testowych pytań i dopiero potem przypisywanie ich do miejsc na froncie.

  1. Wgraj moduł i wyczyść cache PrestaShop / Smarty.
  2. Wybierz sposób zarządzania FAQ: tematy legacy albo kategorie i pytania osobno.
  3. Uzupełnij tytuły i podstawowe ustawienia strony FAQ dla wszystkich języków.
  4. Dodaj testową kategorię/temat FAQ oraz pytanie z odpowiedzią w PL i EN.
  5. Przypisz pytanie do produktu, kategorii, koszyka, CMS albo checkoutu.
  6. Sprawdź wyświetlanie na froncie i dopiero potem dodawaj kolejne wpisy.
  7. W multistore sprawdź sklep ID 1 i pozostałe sklepy bez duplikowania danych.
WażneModuł jest przygotowany tak, żeby FAQ było globalne dla multistore. Domyślnie nie trzeba duplikować pytań per sklep. Ograniczenie do konkretnych sklepów ustawiasz dopiero wtedy, gdy pytanie ma być widoczne tylko w wybranych sklepach.

1. Tryby zarządzania FAQ

Moduł ma dwa sposoby pracy. Aktywna jest tylko jedna ścieżka, a druga jest wygaszona i przekierowuje do właściwego trybu.

Tematy FAQ legacy

Tryb zgodny ze starym widokiem: najpierw wybierasz temat/kategorię, a pytania edytujesz w środku. To tryb dla klientów, którzy mieli już dużo FAQ w starym module.

AdminAstraFaqTopics

Kategorie i pytania osobno

Nowy tryb: osobny kontroler kategorii i osobny kontroler pytań. W pytaniu ustawiasz przypisania do miejsc wyświetlania.

AdminAstraFaqCategories
AdminAstraFaqQuestions

1.1. Przekierowania między trybami

Wybrany trybAktywne kontroleryNieaktywne kontrolery
Tematy FAQ legacyAdminAstraFaqTopicsAdminAstraFaqQuestions, AdminAstraFaqCategories przekierowują do legacy.
Kategorie i pytania osobnoAdminAstraFaqQuestions, AdminAstraFaqCategoriesAdminAstraFaqTopics przekierowuje do pytań.
Po co to jestDzięki temu klient po aktualizacji nie traci starego sposobu pracy, a jednocześnie nowy tryb nie miesza się z legacy.

2. Ustawienia modułu

Poniżej jest rozpiska najważniejszych sekcji konfiguracji i tego, co realnie robią na froncie oraz w panelu administracyjnym.

2.1. Zarządzanie FAQ

OpcjaCo robiKiedy używać
Sposób zarządzania FAQPrzełącza między trybem legacy i nowym trybem pytań/kategorii.Legacy dla starych wdrożeń, nowy tryb dla nowych konfiguracji.
Domyślny tytuł FAQGłówny tytuł strony FAQ oraz fallback dla bloków FAQ.Uzupełnij osobno dla każdego języka.
Przyciski zarządzaniaPrzenoszą do instrukcji, tematów, kategorii lub pytań.Aktywne są tylko te zgodne z wybranym trybem.

2.2. Publiczna strona FAQ

OpcjaZnaczenie
Włącz stronę FAQWłącza publiczną stronę modułu, np. /faq.
Friendly URLSlug strony FAQ. Po zmianie wyczyść cache i odśwież routing PrestaShop.
Wyszukiwarka FAQPokazuje wyszukiwarkę na publicznej stronie FAQ.
Szukaj także w odpowiedziachRozszerza wyszukiwanie z pytań na treść odpowiedzi.
Pokaż inne kategoriePozwala wyświetlać też inne tematy/kategorie FAQ na stronie głównej FAQ.
Grupowanie po tematachDzieli FAQ według tematów/kategorii.
Lista tematówPokazuje nawigację po tematach.
LicznikiPokazuje liczbę pytań lub interakcji, zależnie od widoku.

2.3. Wygląd FAQ

OpcjaCo zmienia
Typ wyświetlaniaAccordion, lista, zawsze otwarte albo warianty grupowane.
Sposób otwieraniaŻadne otwarte, pierwsze otwarte, wszystkie otwarte albo pojedyncze otwieranie.
KolumnyLiczba kolumn w układzie FAQ.
Limit pytań na tematLimit 0 oznacza brak limitu.
Kolory nagłówkówKolory tła i tekstu pytania w stanie normalnym i aktywnym.

2.4. Hooki i miejsca automatyczne

SekcjaDostępne miejscaUwagi
ProduktdisplayFooterProduct, displayProductAdditionalInfo, displayProductExtraContent, displayAstraFaqProductWybierasz jedno miejsce automatyczne dla FAQ na produkcie.
KategoriadisplayFooterCategory, displayAstraFaqCategoryOpcja „tylko pierwsza strona” chroni paginację kategorii.
KoszykdisplayShoppingCartFooter, displayShoppingCart, displayFooterdisplayFooter działa tylko po rozpoznaniu, że aktualna strona to koszyk.
CMSdisplayCMSDisputeInformation albo customowy hook displayAstraFaqCustomowy hook wklejasz w tpl CMS z parametrem page.

2.5. SEO

OpcjaZnaczenie
Meta titleTytuł SEO strony FAQ.
Meta descriptionOpis SEO strony FAQ.
Noindex / nofollowKontrola indeksacji strony FAQ.
Rich snippet modeKontrola generowania danych FAQPage JSON-LD.

3. Pola wielojęzyczne

Pytania, odpowiedzi, tytuły, opisy i wprowadzenie nad pytaniami są multilang.

  • Przy polach językowych widoczny jest znacznik języka, np. PL, EN, DE.
  • Pytanie powinno mieć uzupełnioną treść w każdym aktywnym języku sklepu.
  • Jeżeli treść w aktualnym języku jest pusta, moduł używa fallbacku: aktualny język → domyślny język PrestaShop → język ID 1 → pierwszy język, w którym pytanie i odpowiedź są uzupełnione.
  • Wprowadzenie nad pytaniami też ma oddzielne pola dla języków.
Zasada wdrożeniowaPrzy multistore z kilkoma domenami językowymi nie duplikuj pytań per sklep. Uzupełnij języki w tych samych pytaniach.

4. Multistore

FAQ jest globalne dla całego multistore. Nowe przypisania są wspólne, a stare przypisania zapisane dla sklepu ID 1 są traktowane jako wspólne.

4.1. Widoczność pytania w sklepach

Wartość polaEfekt
PustePytanie widoczne we wszystkich sklepach.
1Pytanie widoczne tylko w sklepie ID 1.
1,3,4Pytanie widoczne tylko w sklepach 1, 3 i 4. Na sklepie 2 będzie ukryte.

4.2. Dlaczego koszyk może działać inaczej w multistore

W jednym sklepie koszyk może mieć URL /koszyk?action=show, a w drugim /cart?action=show. Moduł nie opiera się tylko na polskim slugu, tylko rozpoznaje koszyk po kilku sygnałach:

  • php_self / nazwa kontrolera, jeśli PrestaShop poprawnie ją ustawi.
  • REQUEST_URI, np. /cart?action=show albo /koszyk?action=show.
  • controller, controller_name, page_name.
  • Klasy strony ze Smarty, jeżeli motyw je udostępnia.
Jeżeli koszyk dalej jest pustySprawdź, czy pytanie nie ma ograniczenia sklepów w polu shop_ids oraz czy przypisanie koszyka istnieje jako globalne albo stare przypisanie sklepu ID 1.

4.3. Jak działa odczyt przypisań w multistore

Front zawsze najpierw szuka bezpośrednich przypisań pytań w astra_faq_item_binding. Dopiero gdy nie znajdzie żadnego pasującego pytania, robi fallback do legacy przypisań tematów w astra_faq_binding.

ZakresCo oznacza
id_shop = 0Przypisanie globalne dla wszystkich sklepów.
id_shop = aktualny sklepPrzypisanie tylko dla aktualnego sklepu.
id_shop = 1Fallback kompatybilności dla starszych wpisów utworzonych na sklepie głównym.
PrzykładPytanie z shop_ids = 1,2,3,4 oraz bindingiem koszyka id_shop = 0, bind_type = cart, object_key = cart pokaże się na sklepie ID 2, jeśli ma uzupełnione pytanie i odpowiedź albo dostępny fallback językowy.

5. Pytania i przypisania

W nowym trybie każde pytanie ma treść, odpowiedź, aktywność, pozycję oraz przypisania do miejsc wyświetlania.

5.1. Podstawowe pola pytania

PoleOpis
Temat / kategoria FAQGrupa, do której należy pytanie.
PytanieTreść pytania, multilang.
OdpowiedźTreść odpowiedzi, multilang, może zawierać formatowanie.
PozycjaRęczna kolejność. Popularne pytania mogą dostać wyższą pozycję na froncie.
AktywneWyłącza lub włącza pytanie bez usuwania go.
Widoczność w multistorePuste = wszystkie sklepy, np. 1,3,4 = tylko podane sklepy.

5.2. Typy przypisań

Produkty

FAQ przypisane do konkretnych produktów PrestaShop.

Kategorie

FAQ przypisane do kategorii PrestaShop.

CMS

FAQ przypisane do stron CMS po ID strony.

Blog

FAQ przypisane do wpisów blogowych. Dla STBlog/Transformer w artykule użyj {hook h='displayAstraFaq' page="blog-{$blog.id}"}.

Koszyk

FAQ przypisane do koszyka jako wspólna strona cart.

Checkout

FAQ przypisane do kroków checkoutu przez klucze checkout-step1 itd.

Strony statyczne

FAQ przypisane do stron typu contact, stores, sitemap.

Strony modułów

FAQ przypisane do URL typu module/stlovedproduct/myloved.

Blacklist

Wykluczenia, np. produkty, na których dane FAQ nie ma się pojawić.

Listy zamiast przecinkówStrony statyczne, strony modułów i custom URL dodaje się jako listę przez przycisk dodawania, a nie jako jeden tekst rozdzielony przecinkami.

6. Strona FAQ i liczniki

6.1. Publiczna strona FAQ

Moduł ma publiczną stronę FAQ, domyślnie pod adresem:

/faq

Adres można zmienić w ustawieniu Friendly URL.

6.2. Liczniki otwarć

Moduł zlicza tylko ręczne kliknięcia użytkownika. Nie zwiększa licznika, gdy pytanie jest otwarte automatycznie przez ustawienie widoku.

LicznikKiedy rośnie
front_open_countPo ręcznym otwarciu pytania na froncie.
front_search_open_countPo otwarciu pytania z wyników wyszukiwania.
front_last_openData ostatniego ręcznego otwarcia.
EfektCzęściej klikane pytania mogą być wyżej na froncie, bo moduł traktuje je jako bardziej przydatne.

7. Produkty i kategorie

7.1. Produkty

FAQ do produktów można przypisać przez wyszukiwarkę produktów w edycji pytania. Sposób podpisywania produktów w panelu zależy od ustawienia formatu etykiety.

Hook produktuZastosowanie
displayFooterProductNajczęstszy wariant, FAQ pod treścią produktu.
displayProductAdditionalInfoFAQ w okolicy dodatkowych informacji produktu.
displayProductExtraContentFAQ jako dodatkowa sekcja/tabs, jeśli motyw to obsługuje.
displayAstraFaqProductCustomowy hook produktu do ręcznego użycia w motywie.

7.2. Kategorie

FAQ do kategorii przypisujesz przez wyszukiwarkę kategorii. W konfiguracji można ustawić, czy FAQ ma pojawiać się tylko na pierwszej stronie paginacji kategorii.

Hook kategoriiZastosowanie
displayFooterCategoryFAQ pod listingiem kategorii.
displayAstraFaqCategoryCustomowy hook kategorii do ręcznego użycia w motywie.

8. Koszyk

Koszyk może działać automatycznie przez hooki albo ręcznie przez customowy hook w tpl.

8.1. Automatyczne hooki koszyka

HookOpis
displayShoppingCartFooterRekomendowane miejsce, stopka koszyka.
displayShoppingCartGłówny hook koszyka, zależny od motywu.
displayFooterFallback globalny, ale moduł renderuje FAQ tylko wtedy, gdy rozpozna aktualną stronę jako koszyk.

8.2. Ręczne miejsce w koszyku

Jeżeli klient chce konkretne miejsce w tpl, wklej:

{hook h='displayAstraFaq' page='cart'}

Pytanie musi mieć zaznaczone przypisanie do koszyka.

9. Checkout

Checkout działa ręcznie. To celowe, bo motywy checkoutu różnią się strukturą i automatyczne hooki były nieczytelne.

9.1. Hooki do wklejenia w tpl

MiejsceHookPrzypisanie pytania
Cały checkout{hook h='displayAstraFaq' page='checkout'}checkout
Krok 1 / dane klienta{hook h='displayAstraFaq' page='checkout-step1'}checkout-step1
Krok 2 / adresy lub dostawa{hook h='displayAstraFaq' page='checkout-step2'}checkout-step2
Krok 3 / płatność{hook h='displayAstraFaq' page='checkout-step3'}checkout-step3
Potwierdzenie zamówienia{hook h='displayAstraFaq' page='checkout-step4'}checkout-step4

9.2. Przykład na dole order confirmation

Wklej wewnątrz bloku page_content_container, najlepiej przed końcowym {/block}:

{block name='astrafaq_order_confirmation'}
  <section id="content-astrafaq-order-confirmation" class="card card_trans mb-3">
    <div class="card-block">
      {hook h='displayAstraFaq' page='checkout-step4'}
    </div>
  </section>
{/block}

10. CMS

CMS może działać przez standardowy hook CMS albo przez customowy hook wklejony w tpl strony CMS.

10.1. Standardowy hook CMS

displayCMSDisputeInformation

Jeżeli motyw renderuje ten hook, moduł pobierze aktualne id_cms i pokaże FAQ przypisane do tej strony CMS.

10.2. Customowy hook CMS w tpl

Dla CMS o ID 1 wklej:

{hook h='displayAstraFaq' page='cms-1'}

Dla CMS o ID 7:

{hook h='displayAstraFaq' page='cms-7'}
WażneNumer w cms-1 musi odpowiadać ID strony CMS, do której przypisane jest pytanie.

11. Blog / STBlog

FAQ może być przypisane do wpisu blogowego po ID wpisu. Dla modułu STBlog / Transformer hook wkleja się bezpośrednio w szablonie artykułu, gdzie dostępna jest zmienna $blog.id.

11.1. Hook do artykułu blogowego

W szablonie artykułu blogowego, np. w pliku artykułu STBlog, wklej w wybranym miejscu:

{hook h='displayAstraFaq' page="blog-{$blog.id}"}

Najczęściej można go wkleić po treści artykułu, np. po:

<div class="blog_content style_content m-b-1">
  {hook h='displayStBlogContent'}
  {$blog.content nofilter}
</div>

Przykład z FAQ pod treścią artykułu:

<div class="blog_content style_content m-b-1">
  {hook h='displayStBlogContent'}
  {$blog.content nofilter}
</div>

{hook h='displayAstraFaq' page="blog-{$blog.id}"}

11.2. Przypisanie pytania

W edycji pytania w polu Blog dodaj ID wpisu blogowego. Dla wpisu ID 15 moduł będzie szukał przypisania blogowego 15, a hook użyje klucza blog-15.

WażneNie wpisuj całego URL artykułu blogowego, jeśli chcesz używać tego mechanizmu. Do bloga przypisujemy ID wpisu, a w tpl używamy {hook h='displayAstraFaq' page="blog-{$blog.id}"}.

12. Strony statyczne i strony modułów

12.1. Strony statyczne PrestaShop

Przykładowe klucze stron statycznych:

contact
stores
sitemap
new-products
best-sales
prices-drop

Customowe miejsce w tpl:

{hook h='displayAstraFaq' page='contact'}

12.2. Strony modułów i custom URL

Przykład strony ostatnio oglądanych produktów:

module/stlovedproduct/myloved

Customowy hook:

{hook h='displayAstraFaq' page='module/stlovedproduct/myloved'}

12.3. Automatyczne dopasowanie przez page.tpl

Instrukcja dla motywuAby FAQ mogło dopasowywać się automatycznie do wielu stron, dodaj w page.tpl blok:
{block name='astrafaq_page_content_bottom'}{if isset($page.page_name) && $page.page_name}{hook h='displayAstraFaq' page=$page.page_name}{/if}{/block}

Moduł pobierze wartość $page.page_name i porówna ją z przypisaniami FAQ. Dla strony kontaktu wartość contact odpowiada przypisaniu strony statycznej contact.

Moduł normalizuje każdy klucz PrestaShop module-NAZWAMODULU-KONTROLER do module/NAZWAMODULU/KONTROLER, np. module-stlovedproduct-myloved do module/stlovedproduct/myloved. Własny URL jest zapisywany jako identyfikator strony w bazie przypisań.

To jest instrukcja wdrożeniowaTego bloku nie wpisuje się w treści FAQ ani na froncie sklepu jako widoczny tekst. Kod należy wkleić w pliku szablonu motywu page.tpl.
Jak dodawaćStrony statyczne i custom URL dodaje się jako osobne pozycje listy, nie po przecinku.

13. SEO i rich snippets

Moduł może generować dane strukturalne FAQPage oraz kontrolować meta dane strony FAQ.

TrybZnaczenie
allGenerowanie danych FAQPage szerzej, zależnie od kontekstu.
mainDane strukturalne głównie dla podstawowej strony FAQ.
main_and_faqStrona FAQ i wybrane bloki FAQ.
main_and_categoriesStrona FAQ i kategorie.
noneWyłączone generowanie FAQPage JSON-LD.
Uwaga SEONie generuj schema wszędzie bez kontroli, żeby nie dublować FAQPage na wielu typach stron.

14. Wdrożenie i diagnostyka

14.1. Checklist po aktualizacji

  • Wyczyść cache PrestaShop i Smarty.
  • Wejdź w instrukcję w module i sprawdź, czy nie ładuje listy pytań.
  • Sprawdź aktywny tryb zarządzania i przekierowania między kontrolerami.
  • Dodaj pytanie testowe w PL i EN.
  • Sprawdź produkt, kategorię, CMS, koszyk i stronę modułu.
  • W checkout wklej hook ręcznie w odpowiedni template.
  • W multistore sprawdź sklep ID 1 i sklep ID 2 bez duplikowania pytań.

14.2. Gdy FAQ nie wyświetla się w koszyku na multistore

  1. Sprawdź, czy pytanie ma przypisanie do koszyka.
  2. Sprawdź, czy pytanie jest aktywne.
  3. Sprawdź, czy pole widoczności sklepów jest puste albo zawiera aktualny ID sklepu.
  4. Sprawdź, czy w konfiguracji zaznaczony jest hook koszyka renderowany przez motyw.
  5. Jeżeli używasz fallbacku displayFooter, sprawdź, czy URL koszyka jest rozpoznawany jako cart / koszyk.

14.3. Czego nie powinno być w kodzie

stare globalne aliasy SQL
robocze wyjścia diagnostyczne
stare warianty parametru widget
zbędne helpery PrestaShop i DB
debug po IP