欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-21 12:38:01
...
DEDECMS 二次开发源代码 , 请帮忙
DEDE 官方论坛不允许新注册用户发帖 ... DEDECMS 二次开起源代码 , 请帮忙

这样的 , 这么一串 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 字段
[ 开弧
] 闭弧

用数据表字段内容去替代模板中用[]括起的模板变量
DEDECMS 二次开起源代码 , 请帮忙

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频