<?php /* * 该分类标签经测试成功,主要是内容页面调用相同作者的文章列表 */ //该代码是一个必须加上的 if (!defined(\'DEDEINC\')) { exit(\"Request Error!\"); } //方法名格式 lib_方法名(&ctag,&refObj) &ctags引用标签对象 &refObj引用上层对象 function lib_writerarc(&$ctag, &$refObj) { //引入全局变量 global $dsql, $envs; //属性处理-赋值为默认 $attlist = \"row|12,titlelen|24\"; FillAttsDefault($ctag -> CAttribute -> Items, $attlist); //解析成变量,比如$titlelen = 24 $row = 5 extract($ctag -> CAttribute -> Items, EXTR_SKIP); //返回的为字符串 $revalue = \'\'; //模板底层 $innertext = $ctag -> GetInnerText(); $ctp = new DedeTagParse(); //设置命名空间 $ctp -> SetNameSpace(\'field\', \'[\', \']\'); $sql = \"SELECT * FROM dede_archives WHERE writer=\'{$refObj->Fields[\'writer\']}\' limit 0, $row\"; $dsql -> Execute(\'me\', $sql); //依次将底层模板变量赋值 while ($rs = $dsql -> GetArray(\'me\')) { //根据属性处理查询变量 $rs[\'title\'] = cn_substr($rs[\'title\'], $titlelen); //获取底层模板 $ctp -> LoadSource($innertext); //这里再次循环,是对底层标签依次循环,比如[field:title /][field:url /] 这里是两个field,需要循环 foreach ($ctp->CTags as $tagid => $ctag) { if (!empty($rs[strtolower($ctag -> GetName())])) { $ctp -> Assign($tagid, $rs[$ctag -> GetName()]); } } //根据底层模板及查询变量得到处理结果 $revalue .= $ctp -> GetResult(); } return $revalue; } ?>
这些代码你可以参考一下
|