Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

SSI — Server-Side Includes

Menyertakan fragmen HTML (atau berkas lain) ke dalam template dengan komentar gaya SSI. Diproses di NexaDom lebih dulu dari variabel/blok lain — cocok untuk header, footer, dan komponen yang dipakai ulang.

NexaDom.php · process_ssi_includes

Pengenalan

Server-Side Includes (SSI) di Nexa Dom memungkinkan Anda menarik isi dari berkas lain ke dalam template lewat satu baris komentar. Pola ini membuat layout modular: potongan UI (header, sidebar, footer) disimpan terpisah dan disatukan saat render.

Implementasi ada di App\System\Dom\NexaDom::process_ssi_includes() — direktif diproses di awal pipeline template (bersama alur render lainnya), lalu isi yang disertakan juga menjalani pemrosesan SSI bertingkat dan parsing template (variabel NexaDom, dll.).

Sintaks

Gunakan komentar HTML dengan bentuk berikut. Path diapit tanda kutip ganda atau tunggal.

<!--#include="nama/relatif/ke/root/template.html" --> <!--#include='components/sidebar.html' -->

Path bersifat relatif terhadap root template NexaDom ($this->root + path yang Anda tulis), misalnya di bawah templates/theme/ untuk tampilan theme — sesuaikan dengan struktur proyek Anda.

Struktur direktori (contoh)

templates/theme/ ├── header.html ├── footer.html ├── components/ │ ├── sidebar.html │ └── menu.html └── docs/ └── halaman.html

Contoh pemakaian

1. Include dasar

<!DOCTYPE html> <html> <body> <!--#include="components/header.html" --> <main> … konten … </main> <!--#include="footer.html" --> </body> </html>

2. Include bersarang

Berkas yang di-include boleh berisi direktif SSI lain; NexaDom memprosesnya secara rekursif (dengan batas iterasi agar tidak loop tak hingga).

<aside class="sidebar"> <!--#include="components/menu.html" --> </aside>

3. Bersama blok kondisi NexaDom

Setelah SSI digabungkan, isi tetap bisa memakai sintaks template (misalnya blok {if …} / variabel) sesuai dukungan NexaDom di proyek Anda.

<!-- contoh: bedakan panel lewat variabel dari controller --> {if user_is_admin} <!--#include="components/admin-panel.html" --> {else} <!--#include="components/user-panel.html" --> {/if}

Pastikan nama blok/variabel selaras dengan parser NexaDom yang Anda pakai.

Perilaku teknis (ringkas)

Topik Keterangan
Urutan proses SSI diproses lebih dulu; berkas tidak ditemukan menghasilkan komentar error di HTML (dan log).
Ekstensi berkas Alur berbeda untuk berkas .php (di-include sebagai PHP) vs konten HTML biasa — lihat implementasi di NexaDom.php.
Bersarang Include di dalam include didukung; hindari sirkular (A memuat B memuat A).
Keamanan Path sebaiknya hanya merujuk berkas template yang Anda kendalikan; jangan membangun path dari input pengguna tanpa validasi.
Catatan: Isi berkas yang disertakan tetap menjalani pemrosesan template NexaDom (variabel, filter, utilitas, dll.) setelah digabung — sehingga komponen bisa berisi {variabel} seperti halaman utama.

Praktik yang disarankan

  • Kelompokkan komponen di folder seperti components/ dengan nama berkas yang jelas.
  • Hindari rantai include terlalu dalam agar mudah di-debug.
  • Pastikan berkas target ada sebelum deploy; periksa log jika muncul komentar SSI Include: File tidak ditemukan.

Troubleshooting

  • Periksa path relatif terhadap root template, bukan terhadap berkas pemanggil.
  • Izinkan berkas dibaca server (permission).
  • Waspadai loop include — NexaDom membatasi jumlah iterasi; jika tercapai, kemungkinan ada rekursi tak sengaja.

Lanjut

Sebelumnya: Filter. Berikutnya: If / elseif / else. Indeks Helper · Dokumentasi · Beranda.