Tworzenie i modyfikacja szablonów w phpBB – praktyka z systemem Twig

Każde forum phpBB opiera się na systemie szablonów, który definiuje wygląd i układ strony – od nagłówka po listę postów. Współczesne wersje phpBB (od 3.2 wzwyż) korzystają z systemu szablonów Twig, dzięki czemu edycja motywów jest dużo bardziej elastyczna, czysta i bezpieczna niż dawniej.

W tym poradniku pokażę, jak działa Twig w phpBB, jak dziedziczyć układy, tworzyć własne bloki i zmienne, a także jak modyfikować style w sposób w pełni zgodny z aktualizacjami systemu.


1. Jak działa system szablonów w phpBB

Szablony w phpBB to połączenie:

  • plików HTML/Twig – odpowiadających za układ strony,
  • plików CSS – definiujących styl,
  • plików językowych – zawierających teksty interfejsu.

Silnik Twig działa jak warstwa pośrednia między PHP a HTML – pozwala wstawiać zmienne, warunki, pętle i fragmenty kodu w czysty, logiczny sposób.
Na przykład:

{% if S_USER_LOGGED_IN %}
    <p>Witaj, {{ USERNAME }}!</p>
{% else %}
    <p>Musisz się zalogować, aby zobaczyć zawartość.</p>
{% endif %}

Dzięki temu można w prosty sposób dostosować wygląd forum bez ingerowania w logikę PHP.


2. Struktura stylu w phpBB

Każdy styl znajduje się w katalogu:

/styles/nazwa_stylu/

Standardowy motyw prosilver ma taką strukturę:

/template/          – pliki Twig (HTML)
/theme/             – arkusze CSS i grafika
/imageset/          – ikony, emotikony (starsze wersje)
/style.cfg          – konfiguracja stylu

Aby stworzyć własny styl, nie musisz kopiować wszystkiego z prosilvera – możesz dziedziczyć z niego układ i nadpisywać tylko wybrane pliki.


3. Dziedziczenie stylu (parent themes)

W pliku style.cfg możesz określić styl nadrzędny:

# Informacje o stylu
name = "CustomLight"
copyright = "Autor: phpBB3-Mods.pl"
style_version = 1.0.0
phpbb_version = 3.3.12
parent = prosilver

Dzięki temu phpBB automatycznie korzysta z plików prosilver, a Ty musisz zmienić tylko te elementy, które chcesz dostosować – np. nagłówek, stopkę lub CSS.

To ogromna zaleta, bo przy aktualizacji forum nie musisz przepisywać całego motywu.


4. Gdzie znajdują się główne pliki szablonów

Najczęściej modyfikowane pliki w katalogu /template/ to:

  • overall_header.html – nagłówek strony, menu, logo, meta tagi,
  • overall_footer.html – stopka forum,
  • index_body.html – strona główna forum,
  • viewforum_body.html – lista tematów w dziale,
  • viewtopic_body.html – widok tematu (posty),
  • memberlist_view.html – profil użytkownika.

Każdy z nich zawiera znaczniki Twig ({{ }} i {% %}), które phpBB wypełnia danymi z bazy.


5. Tworzenie własnego bloku Twig

Załóżmy, że chcesz dodać w stopce blok informacyjny z datą i nazwą witryny.
W pliku overall_footer.html możesz dodać:

<div class="custom-footer">
    <p>{{ SITENAME }} – {{ CURRENT_TIME }}</p>
</div>

Zmienne SITENAME i CURRENT_TIME są wbudowane w phpBB i dostępne globalnie w każdym szablonie.
Jeśli chcesz dodać własną zmienną, możesz to zrobić w rozszerzeniu lub event listenerze (np. core.page_footer).

Przykład listenera:

$template->assign_var('CUSTOM_MESSAGE', 'Forum działa na phpBB3-Mods.pl');

A następnie w szablonie:

<p class="custom-msg">{{ CUSTOM_MESSAGE }}</p>

6. Dziedziczenie bloków i layoutów

Twig obsługuje dziedziczenie layoutów, co pozwala unikać duplikacji kodu.
Przykładowy layout bazowy (base.html):

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}Forum{% endblock %}</title>
</head>
<body>
    <header>
        {% block header %}{% endblock %}
    </header>

    <main>
        {% block content %}{% endblock %}
    </main>

    <footer>
        {% block footer %}{% endblock %}
    </footer>
</body>
</html>

A teraz inny plik, który z niego dziedziczy:

{% extends "base.html" %}

{% block title %}Strona główna – Forum{% endblock %}
{% block content %}
    <h1>Witaj na forum!</h1>
    <p>Miłego dnia!</p>
{% endblock %}

W phpBB można stosować podobne podejście, szczególnie przy tworzeniu szablonów dla rozszerzeń.


7. Dodawanie własnych plików Twig w rozszerzeniu

Każde rozszerzenie może zawierać własne szablony w katalogu:

/ext/autor/nazwa_rozszerzenia/styles/all/template/

Przykład – chcemy stworzyć stronę z komunikatem.
Tworzymy plik message_body.html:

<!-- INCLUDE overall_header.html -->

<section class="message">
    <h2>Informacja</h2>
    <p>{{ CUSTOM_MESSAGE }}</p>
</section>

<!-- INCLUDE overall_footer.html -->

A w kontrolerze rozszerzenia:

$template->assign_var('CUSTOM_MESSAGE', 'To jest wiadomość z rozszerzenia.');
echo $template->set_filenames(['body' => 'message_body.html']);
page_header('Wiadomość');
page_footer();

Dzięki temu strona wczyta się z pełnym nagłówkiem i stopką forum, zachowując styl główny.


8. Używanie warunków i pętli Twig

Twig pozwala dynamicznie sterować zawartością strony.
Przykłady:

Warunek:

{% if S_USER_LOGGED_IN %}
    <p>Witaj, {{ USERNAME }}!</p>
{% else %}
    <p><a href="{{ U_LOGIN_LOGOUT }}">Zaloguj się</a></p>
{% endif %}

Pętla:

<ul>
{% for forum in loops.forumrow %}
    <li>{{ forum.FORUM_NAME }}</li>
{% endfor %}
</ul>

To właśnie dzięki pętlom phpBB renderuje listę forów, tematów, użytkowników itp.


9. Modyfikowanie CSS i motywu

Wszystkie style CSS znajdują się w katalogu /theme/.
Najczęściej edytowane pliki to:

  • colours.css – kolory i tło,
  • common.css – ogólne style layoutu,
  • links.css, buttons.css – elementy interfejsu.

Po każdej zmianie należy odświeżyć cache stylu:
ACP → Dostosowywanie → Style → Odśwież.
Bez tego phpBB może wczytywać stare wersje CSS.


10. Dobre praktyki przy modyfikacji szablonów

Nigdy nie edytuj oryginalnego stylu „prosilver” – zamiast tego dziedzicz po nim.
Używaj folderu „event” w stylach, by dodawać fragmenty HTML przez eventy (overall_header_head_append.html, overall_footer_after.html).
Zawsze testuj zmiany na kopii stylu.
Czyść cache po każdej edycji szablonów.
Zachowuj strukturę plików Twig – phpBB wymaga określonych nazw i lokalizacji.


11. Co przyniesie przyszłość – Twig 4 w phpBB 4.0

W zapowiadanej wersji phpBB 4.0 silnik Twig zostanie zaktualizowany do Twig 4, co przyniesie:

  • jeszcze lepszą wydajność,
  • wsparcie dla komponentów (Twig Components),
  • mniejsze zużycie pamięci przy dużych forach.

Nowy system stylów ma też umożliwić tryb ciemny (dark mode) i łatwiejsze dziedziczenie layoutów.


Podsumowanie

System Twig w phpBB to nowoczesny i potężny sposób na tworzenie własnych motywów i modyfikowanie wyglądu forum bez ryzyka utraty kompatybilności.
Dzięki:

  • dziedziczeniu layoutów,
  • wbudowanym zmiennym,
  • eventom szablonowym i czystemu kodowi,
    możesz tworzyć profesjonalne style, które wyglądają świetnie i działają stabilnie nawet po aktualizacji phpBB.

Twig sprawia, że phpBB staje się nie tylko systemem forum, ale pełnoprawnym frameworkiem do budowy spójnych, estetycznych i elastycznych interfejsów.

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *