Sekcja jest instrukcją wysokopoziomową służącą do generowania wszelkiego rodzaju list. Automatycznie dba o wiele typowo programistycznych szczegółów, dzięki czemu twórca szablonu może się skupić na swojej robocie. W obrębie znacznika sekcji podajemy kod będący wzorcem pojedynczego elementu. Sekcja pobiera kolejne zestawy danych (przy czym każdy może zawierać wiele bloków), umieszcza je w tym wzorcu i tym samym generuje kolejny element, który dodaje do wyjściowego kodu HTML.
Przykład 2.17. Przykładowa sekcja
<div id="menu">
<h3>Menu</h3>
<ol>
<opt:section name="menu"> <!-- początek sekcji -->
<li><a parse:href="$menu.address">{$menu.title}</a></li> <!-- wyglad pojedynczego elementu -->
</opt:section> <!-- koniec sekcji -->
</ol>
</div>
Sekcja posiada kilka atrybutów:
Tabela 2.2. Sekcja: atrybuty
| Nazwa | Typ | Wymagany? | Opis |
|---|---|---|---|
| nazwa | ID | Tak | Identyfikator sekcji, po którym będzie można odwoływać się do bloków aktualnie przetwarzanego elementu listy, a także uzyskać informacje o samej sekcji. Domyślnie identyfikator jest też równoważny nazwie bloku, z którego należy pobrać dane listy - dokładniejsze wyjaśnienia znajdują się poniżej. |
| order | ID | Nie | Przyjmuje wartości asc oraz desc w zależności od tego, czy chcemy elementy listy wyświetlać od początku czy od końca. Domyślne ustawienie to asc. |
| display | Expression | Nie | Jeżeli ten atrybut jest ustawiony, możemy kontrolować, czy sekcja ma być wyświetlona, czy nie w zależności od tego, jaką wartość logiczną przyjmie podane w tym atrybucie wyrażenie. true oznacza, że sekcja będzie wyświetlona. Manualne wyłączenie wyświetlania tym atrybutem nie spowoduje pokazania się komunikatu o braku elementów w liście, jeżeli taki zdefiniowaliśmy. |
| datasource | Wyrażenie | Nie | Za jego pomocą możemy manualnie określić położenie bloku z elementami listy, jeżeli automatyczna detekcja zawodzi. |
| separator | Wyrażenie | Nie | Wygląd separatora, którym można oddzielić dwa zestawy danych. Więcej o separatorach w poświęconym im rozdziale: ???. |
Wygląd elementu umieszczamy między znacznikami opt:section. Aby odwołać się do bloków elementu, używamy składni $nazwasekcji.blok. Jest ona identyczna ze składnią odwoływania się do elementów tablicy, ale OPT z kontekstu dobierze odpowiedni styl. Jeżeli nie istnieje sekcja o podanej nazwie, zostanie to skompilowane w domyślny sposób, zaś w przeciwnym wypadku jako element sekcji. OPT dopuszcza tworzenie dłuższych rozwinięć: $nadsekcja.podsekcja.blok, lecz w tym wypadku pod uwagę brane są wyłącznie dwa ostatnie, natomiast wszystkie pozostałe są ignorowane i można tam wypisywać, co tylko się chce.