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

这里的技术是共享的

You are here

自定义的标签库文件 自己亲自做的 有大用

<?php
if(!defined('DEDEINC'))
{
  exit("Request Error!");
}

function lib_array(&$ctag,&$refObj)
{
  //下面这个取得数组变量
  $arr = $GLOBALS[$ctag->GetAtt('array')];

  $attlist = "topid|0,row|10";
  FillAttsDefault($ctag->CAttribute->Items,$attlist);
  extract($ctag->CAttribute->Items, EXTR_SKIP);

  $condtion="";
  $revalue='';
  if(trim($ctag->GetInnerText())=='') $innertext = "[field:content /]";
  else $innertext = $ctag->GetInnerText();

  /*这里开始*/
  $dtp2 = new DedeTagParse();
  $dtp2->SetNameSpace('field', '[', ']');

  $dtp2->LoadString($innertext);

  foreach($arr as $key=>$value)
  {
    if(is_array($dtp2->CTags))
    {
      foreach($dtp2->CTags as $k=>$ctag)
      {
        if($ctag->GetName()=='picarr')
        {
          //传递整个数组,在runphp模式中有特殊作用
          $dtp2->Assign($k, $value['pic']);
        } else {
          if(isset($value[$ctag->GetName()])) $dtp2->Assign($k,$value[$ctag->GetName()]);
          else $dtp2->Assign($k, '');
        }
      }
    }
    $temp_result = $dtp2->GetResult();
    $revalue .= $temp_result."\r\n";
  }
  /*这里结束*/
  // 为了使用数组 用  /*这里开始*/ 到 /*这里结束*/ 替换下面注掉的部分
//  foreach($arr as $key=>$value){
//    $rbtext = preg_replace("/\[field:content([\/\s]{0,})\]/isU",$value['content'], $innertext);
//    $rbtext = preg_replace("/\[field:time([\/\s]{0,})\]/isU",$value['time'], $rbtext);
//    //$rbtext = preg_replace("/\[field:pic([\/\s]{0,})\]/isU",$value['pic'], $rbtext);
//    $rbtext = preg_replace("/\[field:zan([\/\s]{0,})\]/isU",$value['zan'], $rbtext);
//    $rbtext = preg_replace("/\[field:browser([\/\s]{0,})\]/isU",$value['browser'], $rbtext);
//    $revalue.=$rbtext;
//  }


  return $revalue;
}

普通分类: