欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

自己亲自做的建的一个自定义标签 有大用 有大大用

A)//本标签的目的 就是判断本文章 有没有litpic 如果有的话
就显示 <img src="AAA.jpg" />
否则的话 不显示任何东西

一)
建一文件 /include/taglib/shipingzhongif.lib.php

<?php  
if(!defined('DEDEINC'))  
{  
    exit("Request Error!");  
}  
function lib_shipingzhongif(&$ctag,&$refObj)  
{  
    global $dsql,$envs;
    //属性处理
    $attlist="";
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    //你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue
    //------------------------------------------------------
    //假如是判断 litpic为真 就是是否存在 litpic
    if($litpic=='true'){
        $aid = $envs['id'];
        $arc = new Archives($aid);
        if(!empty(trim($arc->Fields['litpic'])))
        {
            $revalue = $ctag->GetInnerText();
        }
        else {
            $revalue = '';
        }
    }
    return $revalue;
}
二) 在模板文件中使用自定义的标签
{dede:shipingzhongif litpic='true'} 
<img src="AAA.jpg" />
    {/dede:shipingzhongif}


B)下面是更进一步的方法
//本标签的目的 就是判断本文章 有没有litpic 如果有的话
就显示 <img src="[field:litpic /]" />
否则的话 不显示任何东西

一) 建一文件 /include/taglib/shipingzhongif.lib.php
<?php  
if(!defined('DEDEINC'))  
{  
    exit("Request Error!");  
}  
function lib_shipingzhongif(&$ctag,&$refObj)  
{  
    global $dsql,$envs;
    
    //属性处理
    $attlist="";
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    
    //你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue
    //------------------------------------------------------
    //假如是判断 litpic为真 就是是否存在 litpic
    if($litpic=='true'){
        $aid = $envs['id'];
        $arc = new Archives($aid);
        $litpic = $arc->Fields['litpic'];
        if(!empty($litpic))
        {
            $revalue = $ctag->GetInnerText();
            $revalue = preg_replace("/\[field:litpic([\/\s]{0,})\]/isU", $litpic, $revalue);
        }
        else {
            $revalue = '';
        }
    }
    return $revalue;
}

二) 在模板文件中使用自定义的标签
 {dede:shipingzhongif litpic='true'}  
          <tr>
          <td width="594" align="center">
              <img src="[field:litpic /]" border="0">
              </td>
        </tr>
          {/dede:shipingzhongif}
        <tr>

C)下面 再进一步方法 对 [field:litpic /] 进行函数处理 即  [field:litpic function=getReferImg(@me,500,300) /]

<?php  

if(!defined('DEDEINC'))  
{  
    exit("Request Error!");  
}  
 
//第一个是匹配模式,第二个是匹配的串,把@me转成的那个串
function getChuliFuncValue($pattern,$objStr,$field)
{
$DedeFieldValue = '';
preg_match($pattern,$objStr,$matches);
       //$matches[0] "[field:litpic function=getReferImg(@me,480,'auto',1000,1000) /]"
    //$matches[1] " "
    //$matches[2] "function"
    //$matches[3] "getReferImg(@me,480,'auto',1000,1000)"
    //$matches[4] " /"
    //匹配 有函数 即 [field:litpic function=getReferImg(@me,500,300) /]
    if(!empty($matches)){
    $functionname = preg_replace("/'@me'|\"@me\"|@me/i",'$field',$matches[3]);
    $functionname = "\$DedeFieldValue = ".$functionname;
    @eval($functionname.";"); //or die("<xmp>$functionname</xmp>");
    return $DedeFieldValue;
    }else {//不匹配函数 表示没有函数 即 [field:litpic /]
    return false;
    }
}
 
function lib_shipingzhongif(&$ctag,&$refObj)  
{  
global $dsql,$envs;
    
    //属性处理
    $attlist="";
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    
    $revalue = '';
    //你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue
    //------------------------------------------------------
    //这个是文章页面 假如是判断 litpic为真   就是是否存在 litpic
    if($litpic=='true'){
    $aid = $envs['id'];
    $arc = new Archives($aid);
    $litpic = $arc->Fields['litpic'];
    $title = $arc->Fields['title'];
   
    if(!empty($litpic))
    {
    $revalue = $ctag->GetInnerText();
    //$revalue = preg_replace("/\[field:litpic([\s]{0,})([\S]{1,})\=([\S]{1,})([\/\s]{0,})\]/isU", $litpic, $revalue);
    $litpicChuli = getChuliFuncValue("/\[field:litpic([\s]{0,})([\S]{1,})\=([\S]{1,})([\/\s]{0,})\]/isU",$revalue,$litpic);
   
    //以下表示有处理函数 即 [field:litpic function=某某函数  /]
    if($litpicChuli){
    $revalue = preg_replace("/\[field:litpic([\s]{0,})([\S]{1,})\=([\S]{1,})([\/\s]{0,})\]/isU", $litpicChuli, $revalue);
    }
    else { //以下表示有处理函数 即 [field:litpic /]
    $revalue = preg_replace("/\[field:litpic([\/\s]{0,})\]/isU", $litpic, $revalue);
    }
   
    $revalue = preg_replace("/\[field:title([\/\s]{0,})\]/isU", $title, $revalue);
    }
    }
    //这个是栏目页面 假如是判断 content为真   就是是否存在 content
    if($content=='true'){
    $typeid = $envs['typeid'];
    $lv = new ListView($typeid);
    $content = trim($lv->Fields['content']);
    //下面表示内容不为空
    if(!empty($content) && $content != '&nbsp;'){
    $revalue = $ctag->GetInnerText();
    $revalue = preg_replace("/\[field:content([\/\s]{0,})\]/isU", $content, $revalue);
    }
    }
    
    //这个是栏目页面  假如是判断 typeimg为真   就是是否存在 litpic
    if($typeimg=='true'){
    $typeid = $envs['typeid'];
    $lv = new ListView($typeid);
    $typeimg = trim($lv->Fields['typeimg']);
    $typename = trim($lv->Fields['typename']);
   
    //下面表示内容不为空
    if(!empty($typeimg)){
    $revalue = $ctag->GetInnerText();
    $revalue = preg_replace("/\[field:typeimg([\/\s]{0,})\]/isU", $typeimg, $revalue);
    $revalue = preg_replace("/\[field:typename([\/\s]{0,})\]/isU", $typename, $revalue);
    }
    }
    return $revalue;
}



普通分类: