>백엔드 개발 >PHP 튜토리얼 > DEDECMS 二次开起源代码 , 请帮忙

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

WBOY
WBOY원래의
2016-06-13 13:00:46912검색

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

用数据表字段内容去替代模板中用[]括起的模板变量
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.