代码拉取完成,页面将自动刷新
模板继承通过extend标签与block标签配合使用实现。 一个最简单的继承
// Base/layout.html(父级模板)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<block name="body"></block>
</body>
</html>
// Index/index.html
<extend file="Base/layout" />
<block name="body">
<h3>内容主体</h3>
</block>
内置一些常用标签
php标签。此标签为闭合标签,标签内的内容将被解析为原生php代码执行。
<php>
echo '你好';
</php>
if标签。此标签为闭合标签,condition属性为if的条件,属性列表:condition。
<if condition="$age eq 10">
// do something...
</if>
else标签。此标签为自闭合标签,可选属性condition,存在condition属性则被解析为elseif,属性列表:condition(可选)。
<if condition="$age eq 10">
// do something...
<else />
// do something...
</if>
<if condition="$age eq 10">
// do something...
<else condition="$age eq 20" />
// do something...
</if>
循环标签。此标签为闭合标签,属性列表:name、id、key(可选)。
<loop name="lists" id="item">
{item.id}
</loop>
<loop name="lists" id="item" key="i">
{i}、{item.id}
</loop>
赋值标签,在模板中创建新的php变量。此标签为自闭合标签,属性列表:name、value。
<assign name="username" value="TOP糯米" />
此标签为闭合标签。original标签中的内容不会被编译。
<original>
<loop name="lists" id="item">
{item.id}
</loop>
</original>
上例,loop标签会被原样输出。
此标签为闭合标签。
<assign name="value" value="1" />
<switch name="value">
<case value="0">
$name的值为0
</case>
<case value="1">
$name的值为1
</case>
<case>默认</case>
</switch>
在当前模板中加载其他模板文件。
输出
{$username}
{$user.name}
{$user['name']}
函数调用
{:mb_substr($username, 0, 3, 'utf8')}
{$username|mb_substr=0,3,'utf8'}
新建自定义标签库类文件Extend.php,可选择继承TagLib类(支持点语法)。
class Extend extends TagLib
{
public $tags = [
'test' => ['attr' => 'start,length,id', 'close' => 1]
];
public function _test($attr, $content)
{
$parse = '<?php for ($' . $attr['id'] . ' = ' . $attr['start'] . '; $' . $attr['id'];
$parse .= ' < ' . $attr['start'] . ' + ' . $attr['length'] . '; ';
$parse .= '$' . $attr['id'] . '++): ?>';
$parse .= $content;
$parse .= '<?php endfor; ?>';
return $parse;
}
}
类创建完成后,调用Engine中的loadTaglib方法加载Extend类
$config = [
'ext' => 'html',
'dir' => './templates/',
'left' => '<',
'right' => '>',
];
$engine = Engine::instance($config);
$engine->loadTaglib('extend', Extend::class);
添加完成后即可在模板中使用
<extend:test start="1" length="10" id="test">
{$test}
</extend:test>
添加一个描述
'say' => ['attr' => 'what', 'close' => 0]
新建_say方法
public function _say($attr)
{
return "<?php echo '{$attr['what']}'; ?>";
}
模板调用
<extend:say what="Hello world!" />
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。