Heim >Backend-Entwicklung >PHP-Tutorial > DEDECMS 二次开起源代码 , 请帮忙

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

WBOY
WBOYOriginal
2016-06-13 13:00:46922Durchsuche

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 字段
[ 开弧
] 闭弧

用数据表字段内容去替代模板中用[]括起的模板变量
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn