Smarty Templating di XOOPS
Ikhtisar
Section titled “Ikhtisar”XOOPS menggunakan mesin template Smarty untuk memisahkan presentasi dari logika. Panduan ini mencakup sintaks Smarty, fitur khusus XOOPS, dan praktik terbaik template.
Sintaks Dasar
Section titled “Sintaks Dasar”Variabel
Section titled “Variabel”{* Scalar variables *}<{$variable}><{$article.title}><{$user->getUsername()}>
{* Array access *}<{$items[0]}><{$config['setting']}>
{* Default values *}<{$title|default:'Untitled'}>Pengubah
Section titled “Pengubah”{* Text transformations *}<{$text|upper}><{$text|lower}><{$text|capitalize}><{$text|truncate:100:'...'}>
{* HTML handling *}<{$content|strip_tags}><{$html|escape:'html'}><{$url|escape:'url'}>
{* Date formatting *}<{$timestamp|date_format:'%Y-%m-%d'}><{$date|date_format:$xoops_config.dateformat}>
{* Chaining modifiers *}<{$text|strip_tags|truncate:50|escape}>Persyaratan
Section titled “Persyaratan”{* If/else *}<{if $logged_in}> Welcome, <{$username}>!<{elseif $is_guest}> Please log in.<{else}> Unknown state.<{/if}>
{* Comparisons *}<{if $count > 0}><{if $status == 'published'}><{if $items|@count >= 5}>
{* Logical operators *}<{if $is_admin && $can_edit}><{if $type == 'news' || $type == 'article'}><{if !$is_hidden}>Putaran
Section titled “Putaran”{* Foreach with items *}<{foreach item=article from=$articles}> <h2><{$article.title}></h2><{/foreach}>
{* With key *}<{foreach key=id item=value from=$items}> <{$id}>: <{$value}><{/foreach}>
{* With iteration info *}<{foreach item=item from=$items name=itemloop}> <{$smarty.foreach.itemloop.index}> <{$smarty.foreach.itemloop.iteration}> <{$smarty.foreach.itemloop.first}> <{$smarty.foreach.itemloop.last}><{/foreach}>
{* Foreachelse for empty arrays *}<{foreach item=item from=$items}> <{$item.name}><{foreachelse}> No items found.<{/foreach}>Bagian (Warisan)
Section titled “Bagian (Warisan)”<{section name=i loop=$items}> <{$items[i].title}><{/section}>XOOPS-Fitur Khusus
Section titled “XOOPS-Fitur Khusus”Variabel Global
Section titled “Variabel Global”{* Site info *}<{$xoops_sitename}><{$xoops_url}><{$xoops_rootpath}><{$xoops_theme}>
{* User info *}<{$xoops_isuser}><{$xoops_isadmin}><{$xoops_userid}><{$xoops_uname}>
{* Module info *}<{$xoops_dirname}><{$xoops_pagetitle}>
{* Meta *}<{$xoops_meta_keywords}><{$xoops_meta_description}>Termasuk File
Section titled “Termasuk File”{* Include from theme *}<{include file="theme:header.html"}>
{* Include from module *}<{include file="db:modulename_partial.tpl"}>
{* Include with variables *}<{include file="db:mymodule_item.tpl" item=$article}>
{* Include from file system *}<{include file="$xoops_rootpath/modules/mymodule/templates/partial.tpl"}>Blokir Tampilan
Section titled “Blokir Tampilan”{* In theme.html *}<{foreach item=block from=$xoops_lblocks}> <div class="block"> <{if $block.title}> <h3><{$block.title}></h3> <{/if}> <{$block.content}> </div><{/foreach}>Integrasi Formulir
Section titled “Integrasi Formulir”{* XoopsForm rendering *}<{$form.javascript}><form action="<{$form.action}>" method="<{$form.method}>"> <{foreach item=element from=$form.elements}> <div class="form-group"> <label><{$element.caption}></label> <{$element.body}> <{if $element.description}> <small><{$element.description}></small> <{/if}> </div> <{/foreach}></form>Fungsi Kustom
Section titled “Fungsi Kustom”Terdaftar oleh XOOPS
Section titled “Terdaftar oleh XOOPS”{* XoopsFormLoader *}<{xoFormLoader form=$form}>
{* Breadcrumb *}<{xoBreadcrumb}>
{* Module menu *}<{xoModuleMenu}>Plugin Khusus
Section titled “Plugin Khusus”function smarty_function_myfunction($params, $smarty){ $name = $params['name'] ?? 'World'; return "Hello, {$name}!";}<{myfunction name="XOOPS"}>Organisasi template
Section titled “Organisasi template”Struktur yang Direkomendasikan
Section titled “Struktur yang Direkomendasikan”templates/├── admin/│ ├── index.tpl│ ├── item_list.tpl│ └── item_form.tpl├── blocks/│ ├── recent.tpl│ └── popular.tpl├── front-end/│ ├── index.tpl│ ├── item_view.tpl│ └── item_list.tpl└── partials/ ├── _header.tpl ├── _footer.tpl └── _pagination.tpltemplate Parsial
Section titled “template Parsial”{* partials/_pagination.tpl *}<nav class="pagination"> <{if $page > 1}> <a href="<{$base_url}>&page=<{$page-1}>">Previous</a> <{/if}>
<span>Page <{$page}> of <{$total_pages}></span>
<{if $page < $total_pages}> <a href="<{$base_url}>&page=<{$page+1}>">Next</a> <{/if}></nav>
{* Usage *}<{include file="db:mymodule_pagination.tpl" page=$current_page total_pages=$pages base_url=$url}>Kinerja
Section titled “Kinerja”Menyimpan dalam cache
Section titled “Menyimpan dalam cache”// In PHP$xoopsTpl->caching = 1;$xoopsTpl->cache_lifetime = 3600; // 1 hour
// Check if cachedif (!$xoopsTpl->is_cached('mymodule_index.tpl')) { // Fetch data only if not cached $items = $handler->getObjects(); $xoopsTpl->assign('items', $items);}Hapus Tembolok
Section titled “Hapus Tembolok”// Clear specific template$xoopsTpl->clear_cache('mymodule_index.tpl');
// Clear all module templates$xoopsTpl->clear_all_cache();Praktik Terbaik
Section titled “Praktik Terbaik”- Escape Output - Selalu keluar dari konten buatan pengguna
- Gunakan Pengubah - Terapkan transformasi yang sesuai
- Jaga Logika Minimal - Logika kompleks termasuk dalam PHP
- Gunakan Sebagian - Gunakan kembali fragmen template umum
- Semantik HTML - Gunakan elemen HTML5 yang tepat
- Aksesibilitas - Sertakan atribut ARIA jika diperlukan
Dokumentasi Terkait
Section titled “Dokumentasi Terkait”- Pengembangan theme - Pembuatan theme
- ../../04-API-Reference/Template/Template-System - template XOOPS API
- ../../03-Module-Development/Block-Development - template block
- ../Forms/Form-Elements - Render formulir