当前位置:Gxlcms > PHP教程 > DEDECMS二次开起源代码,请帮忙

DEDECMS二次开起源代码,请帮忙

时间:2021-07-01 10:21:17 帮助过:31人阅读

DEDECMS 二次开发源代码 , 请帮忙
DEDE 官方论坛不允许新注册用户发帖 ...

这样的 , 这么一串 HTML 代码
{dede:arclist flag='h' limit='0,1' infolen='230'}

[field:title/]


[field:info/]...[查看全文]


{/dede:arclist}
这么一段代码 , 对应 taglib/arclist.lib.php
中我看到解

[field:title/]


[field:info/]...[查看全文]


这么一段代码 , 也就是 arclist 标签的 InnerText 的解法是这样的 .

arclist.lib.php line 472-474
$dtp2 = new DedeTagParse();
$dtp2->SetNameSpace('field', '[', ']');
$dtp2->LoadString($innertext);

这个 DedeTagParse() 这个我可以理解 , 它首先根据 SetNameSpace 设置好 TagStartWord 和 EndWord , 而后根据这些东西使用 FOR 循环整个字符串 , 其中使用 STRPOS 对比匹配出标签 , 并将标签全部存于类数组 CTags 中 .
随后调用 MakeOneTag 方法让那些 taglib 下面存在文件的方法获取 TagValue .
而后再使用 GetResult 方法将值按照解析式 STRPOS 的位置插入 HTML 中随后返回完整字符串 .

这个过程好理解 , 但不好理解的事
$dtp2->SetNameSpace('field', '[', ']');
MakeOneTag 中 taglib 下没有 filed.lib.php , 并且 , AssignSysTag 中也没有 field 的解析 .
而且 , 这里不会走到 MakeOneTag , 我想问的是 , 它是怎么解析到值的 ? 非常非常感谢 !!!!
------解决方案--------------------
$dtp2->SetNameSpace('field', '[', ']');

field 字段
[ 开弧
] 闭弧

用数据表字段内容去替代模板中用[]括起的模板变量

人气教程排行