一直在用的模板数据调用标签

jerry thinkphp 2015年11月18日 收藏
请高人指正
TagLib/TagLibFront.class.php
  1. /**
  2.  * @author Meik
  3.  * @homepage http://www.xuzc.cn
  4.  * @filename TagLibFront.class.php
  5.  * @encoding UTF-8
  6.  * @datetime 2011-6-27  14:59:38
  7.  * @version 1.0
  8.  * @Description
  9.  */
  10. class TagLibFront extends TagLib {

  11.     protected $tags = array(
  12.             'list' => array('attr' => 'table,where,order,limit,relation,field,result,page,purl,purlvars', 'close' => 1),
  13.     );

  14.     //获取列表数据 可关联(字段过滤无效) 可分页
  15.     public function _list($attr, $content) {
  16.         $tag = $this->parseXmlAttr($attr, 'list');
  17.         $result = !empty($tag['result']) ? $tag['result'] : 'data';
  18.         if (!empty($tag['table'])) {
  19.             $model = 'D("' . $tag['table'] . '")';
  20.         } else {
  21.             return '';
  22.         }
  23.         $key = !empty($tag['key']) ? $tag['key'] : 'i';
  24.         $mod = isset($tag['mod']) ? $tag['mod'] : '2';
  25.         //拼接SQL查询语句
  26.         $parseStr = '<?php ';
  27.         if($tag['where']!= null && $tag['where']=='$where') {
  28.             $parseStr .=$tag['where'] != null ? '$map='.$tag["where"].';' : '';
  29.         }else {
  30.             $parseStr .=$tag['where'] != null ? '$map=array(' . trim(str_replace("=", "=>", $tag["where"]),',') . ');' : '';
  31.         }
  32.        
  33.         if ($tag["page"]) {
  34.             $parseStr .= '$' . $result . '_count=' . $model;
  35.             $parseStr .= $tag['where'] != null ? '->where($map)' : '';
  36.             $parseStr .='->cache(true)->count(' . $model . '->getPk());';
  37.             $parseStr .= 'import("ORG.Util.Page"); $' . $result . '_p = new Page($' . $result . '_count, ' . $tag["page"] . ');';
  38.             if($tag['purlvars']!=null) {
  39.                 $parseStr .= '$' . $result . '_page = $' . $result . '_p->show("'.$tag['purl'].'",'.$tag['purlvars'].');';
  40.             }else {
  41.                 $parseStr .= '$' . $result . '_page = $' . $result . '_p->show("'.$tag['purl'].'");';
  42.             }
  43.         }
  44.         $parseStr .= '$' . $result . '_result = ' . $model ;
  45.         $parseStr .= $tag['relation'] != null ? '->relation(array(' . trim($tag["relation"],',') . '))' : '';
  46.         $parseStr .= $tag['where'] != null ? '->where($map)' : '';
  47.         $parseStr .= $tag['field'] != null ? '->field("'.trim($tag["field"],',').'")' : '';
  48.         $parseStr .= $tag['order'] != null ? '->order("'.trim($tag["order"],',').'")' : '';
  49.         if ($tag["page"]) {
  50.             $parseStr .= $tag['page'] != null ? '->limit("$' . $result . '_p->firstRow , $' . $result . '_p->listRows")' : '';
  51.         }else {
  52.             $parseStr .= $tag['limit'] != null ? '->limit("'.trim($tag["limit"],',').'")' : '';
  53.         }
  54.         $parseStr .= '->select();?>';
  55.         $parseStr .= '<?php if($' . $result . '_result){ $' . $key . '=0;';
  56.         $parseStr .= 'foreach($' . $result . '_result as $key=>$' . $result . '){ ?>';
  57.         $parseStr .= '<?php ++$' . $key . ';$mod = ($' . $key . ' % ' . $mod . ');?>';
  58.         $parseStr .= $content;
  59.         $parseStr .= '<?php }};?>';
  60.         return $parseStr;
  61.     }

  62. }
用法 :任意模板文件
  1. <Front:list table="XinwenNeirong" where="'flid'=array('eq',5)" field="bt,id" order="lrsj DESC" result="data" limit="4">
  2.                     <li><a href="{:U('News/View/index',array('id'=>$data[id]))}">·{$data.bt}</a></li>
  3.                 </Front:list>