Bỏ qua để đến nội dung

Biến mẫu

XOOPS tự động cung cấp nhiều biến cho Smarty templates. Tài liệu tham khảo này ghi lại các biến có sẵn để phát triển mẫu chủ đề và mô-đun.

  • Smarty-Cơ bản - Cơ bản về Smarty trong XOOPS
  • Phát triển chủ đề - Tạo XOOPS themes
  • Smarty-4-Migration - Nâng cấp từ Smarty 3 lên 4

Các biến này có sẵn trong chủ đề templates (theme.tpl):

BiếnMô tảVí dụ
$xoops_sitenameTên trang web từ sở thích"My XOOPS Site"
$xoops_pagetitleTiêu đề trang hiện tại"Welcome"
$xoops_sloganKhẩu hiệu của trang web"Just Use It!"
$xoops_urlXOOPS URL đầy đủ"https://example.com"
$xoops_langcodeMã ngôn ngữ"en"
$xoops_charsetBộ ký tự"UTF-8"
BiếnMô tả
$xoops_meta_keywordsTừ khóa meta
$xoops_meta_descriptionMô tả meta
$xoops_meta_robotsThẻ meta robot
$xoops_meta_ratingĐánh giá nội dung
$xoops_meta_authorThẻ meta tác giả
$xoops_meta_copyrightThông báo bản quyền
BiếnMô tả
$xoops_themeTên chủ đề hiện tại
$xoops_imageurlThư mục hình ảnh chủ đề URL
$xoops_themecssChủ đề chính Tệp CSS URL
$xoops_icons32_urlBiểu tượng 32x32 URL
$xoops_icons16_urlBiểu tượng 16x16 URL
BiếnMô tả
$xoops_contentsNội dung trang chính
$xoops_module_headerNội dung đầu theo mô-đun cụ thể
$xoops_footerNội dung chân trang
$xoops_jsJavaScript đến include
BiếnMô tả
$xoops_mainmenuMenu điều hướng chính
$xoops_usermenuTrình đơn người dùng
BiếnMô tả
$xoops_lblocksMảng khối bên trái
$xoops_rblocksMảng khối bên phải
$xoops_cblocksMảng khối trung tâm
$xoops_showlblockHiển thị các khối bên trái (boolean)
$xoops_showrblockHiển thị các khối bên phải (boolean)
$xoops_showcblockHiển thị khối trung tâm (boolean)

Khi người dùng đăng nhập:

BiếnMô tả
$xoops_isuserNgười dùng đã đăng nhập (boolean)
$xoops_isadminNgười dùng là admin (boolean)
$xoops_useridID người dùng
$xoops_unameTên người dùng
$xoops_isownerNgười dùng sở hữu nội dung hiện tại (boolean)

Truy cập thuộc tính đối tượng người dùng

Phần tiêu đề “Truy cập thuộc tính đối tượng người dùng”
<{if $xoops_isuser}>
<p>Welcome, <{$xoops_uname}>!</p>
<p>Your email: <{$xoopsUser->getVar('email')}>}</p>
<p>Joined: <{$xoopsUser->getVar('user_regdate')|date_format:"%Y-%m-%d"}>}</p>
<{else}>
<p>Welcome, Guest!</p>
<{/if}>

Trong mô-đun templates:

BiếnMô tả
$xoops_dirnameTên thư mục mô-đun
$xoops_modulenameTên hiển thị mô-đun
$mod_urlMô-đun URL (khi được chỉ định)
// In PHP
$helper = \XoopsModules\MyModule\Helper::getInstance();
$GLOBALS['xoopsTpl']->assign('mod_url', $helper->url());
$GLOBALS['xoopsTpl']->assign('mod_name', $helper->getModule()->getVar('name'));
{* In template *}
<a href="<{$mod_url}>">Back to <{$mod_name}></a>

Chặn biếnMỗi khối trong $xoops_lblocks, $xoops_rblocks$xoops_cblocks có:

Phần tiêu đề “Chặn biếnMỗi khối trong $xoops_lblocks, $xoops_rblocks và $xoops_cblocks có:”
Bất động sảnMô tả
$block.idChặn ID
$block.titleChặn tiêu đề
$block.contentChặn nội dung HTML
$block.templateChặn tên mẫu
$block.moduleTên mô-đun
$block.weightKhối lượng/đơn hàng
<{foreach item=block from=$xoops_lblocks}>
<div class="block block-<{$block.module}>">
<{if $block.title}>
<h3 class="block-title"><{$block.title}></h3>
<{/if}>
<div class="block-content">
<{$block.content}>
</div>
</div>
<{/foreach}>

Khi sử dụng XoopsForm classes:

// PHP
$form = new XoopsThemeForm('Edit Item', 'edit_form', 'save.php');
$form->addElement(new XoopsFormText('Title', 'title', 50, 255, $title));
$GLOBALS['xoopsTpl']->assign('form', $form->render());
{* Template *}
<div class="form-container">
<{$form}>
</div>
// PHP
include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
$pagenav = new XoopsPageNav($total, $limit, $start, 'start');
$GLOBALS['xoopsTpl']->assign('page_nav', $pagenav->renderNav());
{* Template *}
<{if $page_nav}>
<div class="pagination">
<{$page_nav}>
</div>
<{/if}>
$GLOBALS['xoopsTpl']->assign('my_title', 'Custom Title');
$GLOBALS['xoopsTpl']->assign('item_count', 42);
$GLOBALS['xoopsTpl']->assign('is_featured', true);
<h1><{$my_title}></h1>
<p><{$item_count}> items found</p>
<{if $is_featured}>Featured!<{/if}>
$items = [
['id' => 1, 'name' => 'Item One', 'price' => 10.99],
['id' => 2, 'name' => 'Item Two', 'price' => 20.50],
];
$GLOBALS['xoopsTpl']->assign('items', $items);
<ul>
<{foreach $items as $item}>
<li>
<{$item.name}> - $<{$item.price|string_format:"%.2f"}>
</li>
<{/foreach}>
</ul>
$item = $itemHandler->get($itemId);
$GLOBALS['xoopsTpl']->assign('item', $item->toArray());
// Or for XoopsObject
$GLOBALS['xoopsTpl']->assign('item_obj', $item);
{* Array access *}
<h2><{$item.title}></h2>
<p><{$item.content}></p>
{* Object method access *}
<h2><{$item_obj->getVar('title')}></h2>
$category = [
'id' => 1,
'name' => 'Technology',
'items' => [
['id' => 1, 'title' => 'Article 1'],
['id' => 2, 'title' => 'Article 2'],
]
];
$GLOBALS['xoopsTpl']->assign('category', $category);
<h2><{$category.name}></h2>
<ul>
<{foreach $category.items as $item}>
<li><{$item.title}></li>
<{/foreach}>
</ul>

Dấu thời gian hiện tại:

<p>Current year: <{$smarty.now|date_format:"%Y"}></p>
<p>Current date: <{$smarty.now|date_format:"%Y-%m-%d"}></p>
<p>Current time: <{$smarty.now|date_format:"%H:%M:%S"}></p>

Truy cập hằng số PHP:

<p>XOOPS URL: <{$smarty.const.XOOPS_URL}></p>
<p>Root Path: <{$smarty.const.XOOPS_ROOT_PATH}></p>
<p>Upload Path: <{$smarty.const.XOOPS_UPLOAD_PATH}></p>

Truy cập các biến yêu cầu (sử dụng thận trọng):

{* Only for reading, always escape output! *}
<{if $smarty.get.page}>
Page: <{$smarty.get.page|escape}>
<{/if}>

Biến máy chủ:

<p>Server: <{$smarty.server.SERVER_NAME}></p>
<p>Request URI: <{$smarty.server.REQUEST_URI|escape}></p>

Thông tin vòng lặp:

<{foreach $items as $item name=itemloop}>
<{* Index (0-based) *}>
Index: <{$smarty.foreach.itemloop.index}>
<{* Iteration (1-based) *}>
Number: <{$smarty.foreach.itemloop.iteration}>
<{* First item *}>
<{if $smarty.foreach.itemloop.first}>First Item!<{/if}>
<{* Last item *}>
<{if $smarty.foreach.itemloop.last}>Last Item!<{/if}>
<{* Total count *}>
Total: <{$smarty.foreach.itemloop.total}>
<{/foreach}>

Khi sử dụng XMF, có sẵn các trợ giúp bổ sung:

// In PHP
use Xmf\Module\Helper;
$helper = Helper::getInstance();
$GLOBALS['xoopsTpl']->assign('mod_config', $helper->getConfig());
$GLOBALS['xoopsTpl']->assign('mod_url', $helper->url());
$GLOBALS['xoopsTpl']->assign('mod_path', $helper->path());
{* In template *}
<a href="<{$mod_url}>">Module Home</a>
<{if $mod_config.show_breadcrumb}>
{* Breadcrumb HTML *}
<{/if}>
{* Theme images *}
<img src="<{$xoops_imageurl}>images/logo.png" alt="Logo">
{* Module images *}
<img src="<{$xoops_url}>/modules/<{$xoops_dirname}>/assets/images/icon.png">
{* Upload directory *}
<img src="<{$xoops_url}>/uploads/mymodule/<{$item.image}>">
{* Using icons *}
<img src="<{$xoops_icons32_url}>edit.png" alt="Edit">
<img src="<{$xoops_icons16_url}>delete.png" alt="Delete">

Hiển thị có điều kiện dựa trên người dùng

Phần tiêu đề “Hiển thị có điều kiện dựa trên người dùng”
{* Show only to logged-in users *}
<{if $xoops_isuser}>
<a href="<{$xoops_url}>/modules/profile/">My Profile</a>
<a href="<{$xoops_url}>/user.php?op=logout">Logout</a>
<{else}>
<a href="<{$xoops_url}>/user.php">Login</a>
<a href="<{$xoops_url}>/register.php">Register</a>
<{/if}>
{* Show only to admins *}
<{if $xoops_isadmin}>
<a href="<{$xoops_url}>/admin.php">Admin Panel</a>
<{/if}>
{* Show only to content owner *}
<{if $xoops_isowner || $xoops_isadmin}>
<a href="edit.php?id=<{$item.id}>">Edit</a>
<a href="delete.php?id=<{$item.id}>">Delete</a>
<{/if}>
// In PHP - load language file
xoops_loadLanguage('main', 'mymodule');
// Assign language constants
$GLOBALS['xoopsTpl']->assign('lang_title', _MD_MYMODULE_TITLE);
$GLOBALS['xoopsTpl']->assign('lang_submit', _SUBMIT);
{* In template *}
<h1><{$lang_title}></h1>
<button type="submit"><{$lang_submit}></button>

Hoặc sử dụng hằng số trực tiếp:

<h1><{$smarty.const._MD_MYMODULE_TITLE}></h1>

Để xem tất cả các biến có sẵn:

{* Display debug console *}
<{debug}>
{* Print specific variable *}
<pre><{$myvar|@print_r}></pre>
{* Export variable *}
<pre><{$myvar|@var_export}></pre>

#thông minh #templates #biến #xoops #reference