Smarty Templateing v XOOPS
Pregled
Section titled “Pregled”XOOPS uporablja mehanizem predlog Smarty za ločevanje predstavitve od logike. Ta priročnik pokriva sintakso Smarty, funkcije, specifične za XOOPS, in najboljše prakse predlog.
Osnovna sintaksa
Section titled “Osnovna sintaksa”Spremenljivke
Section titled “Spremenljivke”{* Scalar variables *}<{$variable}><{$article.title}><{$user->getUsername()}>
{* Array access *}<{$items[0]}><{$config['setting']}>
{* Default values *}<{$title|default:'Untitled'}>Modifikatorji
Section titled “Modifikatorji”{* 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}>Pogojniki
Section titled “Pogojniki”{* 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}>{* 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}>razdelki (zapuščina)
Section titled “razdelki (zapuščina)”<{section name=i loop=$items}> <{$items[i].title}><{/section}>XOOPS-Posebne funkcije
Section titled “XOOPS-Posebne funkcije”Globalne spremenljivke
Section titled “Globalne spremenljivke”{* 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}>Vključno z datotekami
Section titled “Vključno z datotekami”{* 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"}>Block Display
Section titled “Block Display”{* In theme.html *}<{foreach item=block from=$xoops_lblocks}> <div class="block"> <{if $block.title}> <h3><{$block.title}></h3> <{/if}> <{$block.content}> </div><{/foreach}>Integracija obrazca
Section titled “Integracija obrazca”{* 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>Funkcije po meri
Section titled “Funkcije po meri”Registrirano pri XOOPS
Section titled “Registrirano pri XOOPS”{* XoopsFormLoader *}<{xoFormLoader form=$form}>
{* Breadcrumb *}<{xoBreadcrumb}>
{* Module menu *}<{xoModuleMenu}>Vtičniki po meri
Section titled “Vtičniki po meri”function smarty_function_myfunction($params, $smarty){ $name = $params['name'] ?? 'World'; return "Hello, {$name}!";}<{myfunction name="XOOPS"}>Organizacija predloge
Section titled “Organizacija predloge”Priporočena struktura
Section titled “Priporočena struktura”templates/├── admin/│ ├── index.tpl│ ├── item_list.tpl│ └── item_form.tpl├── blocks/│ ├── recent.tpl│ └── popular.tpl├── frontend/│ ├── index.tpl│ ├── item_view.tpl│ └── item_list.tpl└── partials/ ├── _header.tpl ├── _footer.tpl └── _pagination.tplDelne predloge
Section titled “Delne predloge”{* 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}>Zmogljivost
Section titled “Zmogljivost”Predpomnjenje
Section titled “Predpomnjenje”// 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);}Počisti predpomnilnik
Section titled “Počisti predpomnilnik”// Clear specific template$xoopsTpl->clear_cache('mymodule_index.tpl');
// Clear all module templates$xoopsTpl->clear_all_cache();Najboljše prakse
Section titled “Najboljše prakse”- Escape Output - Vedno ubežite uporabniško ustvarjeni vsebini
- Uporabi modifikatorje - Uporabi ustrezne transformacije
- Ohranite minimalno logiko - Kompleksna logika sodi v PHP
- Uporabi delce - Ponovno uporabite pogoste fragmente predloge
- Semantični HTML - Uporabite ustrezne elemente HTML5
- Dostopnost - Vključite atribute ARIA, kjer je to potrebno
Povezana dokumentacija
Section titled “Povezana dokumentacija”- Razvoj teme - Ustvarjanje teme
- ../../04-API-Reference/Template/Template-System - XOOPS predloga API
- ../../03-Module-Development/Block-Development - Blokiraj predloge
- ../Forms/Form-Elements - Upodabljanje obrazcev