dedecms模板原理,实现标签替换
正则匹配出所有的arclist标签并构造SQL
取出数据并替换field为相应字段的数据
为field标签添加一个function属性
<?php
require_once
(dirname(
__FILE__
).
"/../include/common.inc.php"
);
//1. 读入模板文件
$str
=
file_get_contents
(
'test.html'
);
//2. 使用正则匹配出页面中所有的 arclist 标签
$re
=
'/{dede:arclist(.*)}(.*){/dede:arclist}/Us'
;
// 执行正则匹配
// 第一个参数:正则
// 第二个参数:字符串
// 第三个参数:这个函数会把匹配到的结果放第三个参数的数组中
// 返回值:匹配到的个数
preg_match_all(
$re
,
$str
,
$a
);
//3. 循环每一个匹配到的arclist标签进行处理
foreach
(
$a
[0]
as
$k
=>
$v
)
{
/****************处理标签1.根据标签上的属性构造一个SQL语句 **************/
// 取出标签相应的属性字符串并把属性转化成一个数组,如 row="10" channelid="17" addfields="pffz,pfrs,yuyan" orderby="id" orderway="desc"
$attrArr
= strToArray(
$a
[1][
$k
]);
// 根据构造构造SQL语句上的变量
if
(isset(
$attrArr
[
'row'
]))
$limit
=
$attrArr
[
'row'
];
else
$limit
= 20;
if
(isset(
$attrArr
[
'orderby'
]))
$orderby
=
$attrArr
[
'orderby'