织梦CMS arclist标签调用自定义字段方法 – DeDecms


avatar
pcwnas 2023-04-21 165

原文来自:https://www.zixuephp.com

织梦CMS arclist标签调用自定义字段方法

其实方法非常的简单我们只要使用addfields就可以实现增加自定自段了,不过有一点需要注意的是如果你在在后面加的我们需要把底层给选中,否则是可能调用不到字段的.

语法代码如下:

  1. {dede:arclistaddfields='附加字段1,附加字段2,附加字段3'row='8'channelid='自定义模型id号'}
  2. [field:textlink/][field:附加字段1/][field:附加字段2/]<[field:附加字段3/]<<br/>
  3. {/dede:arclist}

实例代码如下:

  1. {dede:arclistflag='c'typeid='23'channelid='1'addfields='tpic2'limit='0,8'}
  2. <divclass="works">
  3. <atitle="[field:title/]"href="#">
  4. <imgsrc="[field:tpic2function='GetOneImgUrl(@me,1)'/]"width="940"height="440"alt="#">
  5. </a>
  6. </div>
  7. {/dede:arclist}

要求:

1、指定 channelid 属性

2、指定要获得的字段 addfields='字段1,字段'

3、必须选择 使字段可以在列表的底层模板中获得(自定义字段默认仅能在文档模板显示,启用此选项将使列表查询变慢,如无必要请不要选择),这个可以用来做普通的文字类型,如果要是图片的类型的话会出现.代码如下:

  1. {dede:imgtext=''width='270'height='129'}/uploads/101017/1-10101H21F54P.gif{/dede:img}

这明显不是我们想要的,这个时候我们弄一个自定函数,代码如下:

  1. functionGetOneImgUrl($img,$ftype=1){
  2. if($img<>''){//vararticleUrl=http://www.phpfensi.com
  3. $dtp=newDedeTagParse();
  4. $dtp->LoadSource($img);
  5. if(is_array($dtp->CTags)){
  6. foreach($dtp->CTagsas$ctag){
  7. if($ctag->GetName()=='img'){
  8. $width=$ctag->GetAtt('width');
  9. $height=$ctag->GetAtt('height');
  10. $imgurl=trim($ctag->GetInnerText());
  11. $img='';
  12. if($imgurl!=''){
  13. if($ftype==1){
  14. $img.=$imgurl;
  15. }
  16. else{
  17. $img.='<imgsrc="'.$imgurl.'"width="'.$width.'"height="'.$height.'"/>';
  18. }
  19. }
  20. }
  21. }
  22. }
  23. $dtp->Clear();
  24. return$img;
  25. }
  26. }

调用代码如下:[field:tpic2 function='GetOneImgUrl(@me,1)'/]这样即可.