星联网络专注帝国CMS二次功能插件开发-精品网站模板站长代码素材

  • 最近更新
  • 模板:33
  • 记录:12641|
  • 插件:52|
  • 工具:4|
  • 代码:8|
  • 评论:0

dedecms模板原理,实现标签替换

前言

本文主要讲解《dedecms模板原理,实现标签替换》的详细内容

正则匹配出所有的arclist标签并构造SQL 取出数据并替换field为相应字段的数据 为field标签添加一个function属性 <?php require_once(dirname(__FILE__)."/../include/common.inc.php"); //1. 读入模板文件 $str = file_get_contents('test.html'); //2. 使用正则匹配出页面中所有的 arclist 标签 $re = '/{dede:arclist(.*)}(.*){\/dede:arclist}/Us'; // 执行正则匹配 // 第一个参数:正则 // 第二个参数:字符串 // 第三个参数:这个函数会把匹配到的结果放第三个参数的数组中 // 返回值:匹配到的个数 preg_match_all($re, $str, $a); //3. 循环每一个匹配到的arclist标签进行处理 foreach ($a[0] as $k => $v) { /****************处理标签1.根据标签上的属性构造一个SQL语句 **************/ // 取出标签相应的属性字符串并把属性转化成一个数组,如 row="10" channelid="17" addfields="pffz,pfrs,yuyan" orderby="id" orderway="desc" $attrArr = strToArray($a[1][$k]); // 根据构造构造SQL语句上的变量 if(isset($attrArr['row'])) $limit = $attrArr['row']; else $limit = 20; if(isset($attrArr['orderby'])) $orderby = $attrArr['orderby']; else $orderby = 'id'; if(isset($attrArr['orderway'])) $orderway = $attrArr['orderway']; else $orderway = 'desc'; // 连表的属性 if(isset($attrArr['channelid'])) $leftJoin = ' LEFT JOIN dede_addon17 b ON a.id=b.aid '; else $leftJoin = ''; if(isset($attrArr['addfields'])) $extraFields = ','.$attrArr['addfields']; else $extraFields = ''; // 解析属性 $sql = "SELECT a.*$extraFields FROM dede_archives a $leftJoin ORDER BY $orderby $orderway LIMIT $limit"; $dsql->Execute('me', $sql); $html = ''; // 每个arclist对应的多个数据 while($row = $dsql->GetArray('me')) { // 重置模板字符串,不要在原模板上面进行替换 $_tep = $a[2][$k]; /** <li> <img src="[field:litpic/]" /><br /> 标题:[field:title/]<br /> 评分分值:[field:pffz function="getSmallStar(@me)"/]<br /> 评分人数:[field:pfrs/]<br /> 语言:[field:yuyan/] </li> **/ // 把字符串中的[field:xxxx/]替换成$row['xxxx']变量。 $_re = '/\[field:(\w+)(\s+function=("|\')(\w+)\((.*)\)\3)?\/\]/U'; preg_match_all($_re, $_tep, $_a); /**

本网刊登的文章均仅代表作者个人观点,并不代表本网立场。文中的论述和观点,敬请读者注意判断。

本文地址:http://www.xlkjgs.com/notes/web/8151.html

以上内容由本站整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

星联网络

星联网络是中国最具实战的互联网创业者的知识服务商,这里有互联网行业动态,网络推广,SEO优化,SEM优化,ESC配置,行业经验分型,互联网项目,微信营销、淘宝客赚钱、新媒体营销、京东运营、跨境电商等众多互联网营销知识分享

站长运营站长必备网站运营之道才能长久发展