Tạo khuôn Smarty trong XOOPS
Tổng quan
Phần tiêu đề “Tổng quan”XOOPS sử dụng công cụ mẫu Smarty để tách bản trình bày khỏi logic. Hướng dẫn này bao gồm cú pháp Smarty, các tính năng dành riêng cho XOOPS và các phương pháp hay nhất về mẫu.
Cú pháp cơ bản
Phần tiêu đề “Cú pháp cơ bản”{* Scalar variables *}<{$variable}><{$article.title}><{$user->getUsername()}>
{* Array access *}<{$items[0]}><{$config['setting']}>
{* Default values *}<{$title|default:'Untitled'}>Công cụ sửa đổi
Phần tiêu đề “Công cụ sửa đổi”{* 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}>Câu điều kiện
Phần tiêu đề “Câu điều kiện”{* 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}>Vòng lặp
Phần tiêu đề “Vòng lặp”{* 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}>Phần (Cũ)
Phần tiêu đề “Phần (Cũ)”<{section name=i loop=$items}> <{$items[i].title}><{/section}>XOOPS-Tính năng cụ thể
Phần tiêu đề “XOOPS-Tính năng cụ thể”Biến toàn cục
Phần tiêu đề “Biến toàn cục”{* 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}>Bao gồm các tập tin
Phần tiêu đề “Bao gồm các tập tin”{* 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"}>Hiển thị khối
Phần tiêu đề “Hiển thị khối”{* In theme.html *}<{foreach item=block from=$xoops_lblocks}> <div class="block"> <{if $block.title}> <h3><{$block.title}></h3> <{/if}> <{$block.content}> </div><{/foreach}>Tích hợp biểu mẫu
Phần tiêu đề “Tích hợp biểu mẫu”{* 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>Chức năng tùy chỉnh
Phần tiêu đề “Chức năng tùy chỉnh”Được đăng ký bởi XOOPS
Phần tiêu đề “Được đăng ký bởi XOOPS”{* XoopsFormLoader *}<{xoFormLoader form=$form}>
{* Breadcrumb *}<{xoBreadcrumb}>
{* Module menu *}<{xoModuleMenu}>Plugin tùy chỉnh
Phần tiêu đề “Plugin tùy chỉnh”function smarty_function_myfunction($params, $smarty){ $name = $params['name'] ?? 'World'; return "Hello, {$name}!";}<{myfunction name="XOOPS"}>Tổ chức mẫu
Phần tiêu đề “Tổ chức mẫu”Cấu trúc đề xuất
Phần tiêu đề “Cấu trúc đề xuất”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.tplMẫu một phần
Phần tiêu đề “Mẫu một phần”{* 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}>Hiệu suất
Phần tiêu đề “Hiệu suất”Bộ nhớ đệm
Phần tiêu đề “Bộ nhớ đệm”// 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);}Xóa bộ nhớ đệm
Phần tiêu đề “Xóa bộ nhớ đệm”// Clear specific template$xoopsTpl->clear_cache('mymodule_index.tpl');
// Clear all module templates$xoopsTpl->clear_all_cache();Các phương pháp hay nhất
Phần tiêu đề “Các phương pháp hay nhất”- Escape Output - Luôn thoát nội dung do người dùng tạo
- Sử dụng Công cụ sửa đổi - Áp dụng các phép biến đổi thích hợp
- Giữ logic tối thiểu - Logic phức tạp thuộc về PHP
- Sử dụng các phần - Tái sử dụng các đoạn mẫu phổ biến
- Semantic HTML - Sử dụng các phần tử HTML5 thích hợp
- Khả năng truy cập - Bao gồm các thuộc tính ARIA khi cần thiết
Tài liệu liên quan
Phần tiêu đề “Tài liệu liên quan”- Phát triển chủ đề - Tạo chủ đề
- ../../04-API-Reference/Template/Template-System - XOOPS mẫu API
- ../../03-Module-Development/Block-Development - Khối templates
- ../Forms/Form-Elements - Hiển thị biểu mẫu