Loops & blok NEXA
Data berulang dari controller di-render sebagai blok NEXA — komentar HTML <!-- NEXA nama --> … <!-- END nama -->, diisi oleh assign_block_vars() dan process_nexa_blocks_optimized(). Terpisah dari itu ada NX_BLOG (ENDEX) dan section lama (START_SECTION / STOP_SECTION).
NexaDom.php · process_nexa_blocks_optimized pparse_block
Blok NEXA (loop utama)
Nama blok hanya memakai [A-Za-z0-9_]. Pola regex di kode: <!-- NEXA ([A-Za-z0-9_]*) -->…<!-- END \1 -->. Data harus ada di _tpldata dengan kunci yang sama (case-insensitive saat diproses).
<!-- NEXA products -->
<div class="product">
<h3>{name}</h3>
<p>{price}</p>
</div>
<!-- END products -->Bukan sintaks lama <!-- BEGIN nama --> — gunakan NEXA dan penutup <!-- END nama --> persis sama nama bloknya.
Data dari controller
assign_block_vars(string $varblock, array $vararray) mendukung satu baris asosiatif atau array of arrays (beberapa baris). Kosongkan array jika tidak ada data — blok tidak di-expand.
$this->template->assign_block_vars('products', [
['name' => 'A', 'price' => 100],
['name' => 'B', 'price' => 200],
]);Untuk struktur bertingkat dari sumber data, gunakan assign_nested_data(string $varblock, array $data) sesuai kebutuhan (mendukung notasi titik di variabel template).
Variabel otomatis per baris
Di pparse_block() setiap iterasi memperkaya data baris dengan antara lain: _index (0-based), _number / no / number (1-based), _count, _first, _last, _odd, _even, serta index. Gunakan di template seperti {_number} atau {name|upper} (filter).
Blok bersarang
process_nexa_blocks_optimized() memproses sub-blok NEXA di dalam isi blok luar terlebih dahulu, lalu mengulang blok luar. Pastikan nama sub-blok dan assign_block_vars konsisten.
NX_BLOG (section berulang, penutup ENDEX)
Terpisah dari NEXA: pola <!-- NX_BLOG section_name -->…<!-- ENDEX section_name -->. Data umum: kunci NX_BLOG_{section_name} di _tpldata (atau fallback awalan nx_blog_{section_name}). Diproses oleh process_nx_blog_blocks() setelah blok NEXA. Di dalam blok NEXA, process_nx_blog_blocks_with_parent() dapat menggabungkan data baris parent dengan item NX_BLOG.
START_SECTION / STOP_SECTION (legacy)
process_sections_optimized() memakai <!-- START_SECTION nama -->…<!-- STOP_SECTION nama --> dan sub-pola START_SUB/STOP_SUB, START_CHILD/STOP_CHILD. Ini mengandalkan variabel global PHP dengan nama yang sama dengan section (bukan assign_block_vars). Khusus START_SECTION donot_compress konten dibiarkan utuh. Untuk pola baru, utamakan blok NEXA + data template.
Urutan pipeline (ringkas)
Pada render utama: SSI → kondisional global (melewati isi blok) → ternary → NEXA → NX_BLOG → START_SECTION → aset → variabel modern → bahasa → … Blok isi di-parse lagi di dalam pparse_block (kondisional per baris, variabel, NX_BLOG dengan parent, dll.).
Lanjut
Sebelumnya: Switch. Berikutnya: Array bersarang (flatten). Indeks Helper · Models & nexaBlock · Dokumentasi · Beranda.