Blokami nazywamy wszystkie elementy, które reprezentują jakąś zmienną wartość, np. wynik działania skryptu. Każdy blok ma swoją określoną nazwę, na podstawie której OPT decyduje, jakie wartości może podstawić w jego miejsce. Wartością bloku może być dowolna informacja skalarna: liczby, ciągi tekstowe, wartości logiczne, a także typy złożone, jak tablice i obiekty. Nazwa bloku może rozpoczynać się od litery lub podkreślenia, natomiast na dalszych pozycjach dozwolone są cyfry. Wielkość liter ma znaczenie.
Blok prosty służy do osadzania w szablonie danych dostarczonych przez skrypt wykonujący szablon. Jego nazwa poprzedzona jest znakiem dolara. Skrypt może przypisać blokowi dowolną wartość, posługując się jego nazwą, zatem element ten pełni główną rolę w komunikacji między skryptem, a szablonem. Poniżej pokazany jest przykład użycia:
Jeżeli skrypt przypisze blokowi przedmiot wartość "okularów", wynik działania parsera będzie następujący:
<p>Witaj, przyjacielu! Czy potrzebujesz okularów?</p>
Jak wspominaliśmy, bloki mogą przechowywać nie tylko wartości skalarne, ale i złożone struktury znane z PHP: tablice oraz obiekty. Tablica jest zbiorem zmiennych zgrupowanych pod tą samą nazwą. Przykładowo, zamiast pisać $osoba_imie, $osoba_nazwisko, robimy $osoba.imie, $osoba.nazwisko. Niektórzy powiedzą, że to praktycznie to samo, lecz główna różnica leży w kodzie PHP i możliwościach. Od strony kodu dane są prościej przypisywane do szablonów, a ponadto tablica sama w sobie jest jednym wielkim blokiem i jeśli trzeba, można napisać po prostu $osoba, aby przekazać gdzieś wszystkie informacje o facecie za jednym zamachem. Skonsultuj się z Twoim programistą PHP, gdzie będziecie używać tablic.
OPT domyślnie zezwala na używanie w szablonach niezdefiniowanych bloków, lecz można to zmienić, ustawiając żądany poziom raportowania błędów w dyrektywie errorReporting na E_ALL | E_NOTICE.