PHPWPS

 找回密码
 立即加入

QQ登录

只需一步,快速开始

搜索
热搜: php discuz
查看: 8558|回复: 0

[DEDECMS] dede模板上图片集二次开发时不能使用两个{dede:field name='imgu...

[复制链接]

280

主题

420

帖子

1970

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1970
发表于 2013-6-4 10:32:13 | 显示全部楼层 |阅读模式
今天遇到了一个很头疼的问题,就是对dede二次开发时,图片集想改成仿腾讯图片新闻组的效果,其实效果不难,网上一搜就有好多,可是实际修改的时候却遇到了个问题,就是调用该文章所有图片的标签{dede:field name='imgurls' alt='图片输出区'}不能重复使用,因为这个效果是有缩略图的,需要输出两遍不同样式的图片(比如一遍不带li,一遍带着li),但是系统只认第二次输出的内容,也就是两次输出都是一样的,折腾了一下午,这会儿才弄好,下面就把解决方法搬上来:
具体分三步:
第一步就是复制这个函数到/include/common.func.php里面
//根据文章id得到图片集的两个分类
function getAllImg($id){
    global $dsql;
    $sql_arc = "SELECT imgurls FROM `#@__addonimages` where  aid =".$id;
    $row = $dsql->GetOne($sql_arc);
    $txt = GetOneArchive($id);
    $arr = explode('{dede:img ',$row['imgurls']);
    unset($arr['0']);
    $pic = array();
    for($i = 1; $i<=count($arr);$i++){
           $str = substr($arr[$i],0,strpos($arr[$i],'}'));
            $arr_small = explode('\' ',$str);
               for($j=0;$j<count($arr_small);$j++){
               $name =substr($arr_small[$j],0,strpos($arr_small[$j],'='));
               $val = $arr_small[$j];
              $pic[$i][trim($name)] = trim(strstr($val,"'"),"'");
           }
           $begin = strpos($arr[$i],"}")+1;
           $over = strpos($arr[$i],"{")-$begin;
           $img = substr($arr[$i],$begin,$over);
           $pic[$i]['img']=trim($img);
           $pic[$i]['arcurl']=$txt['arcurl'];
    }

    return $pic;
}
第二部 那就是在/include/common.func.php写一个对应的getArtImg()函数
写这个函数的时候就希望大家注意了,下面这个是我自己用到的,给大家解释一下
//artists图片列表
function getArtImg($id){
$pic = getAllImg($id);
$Div = "";
for($i=1;$i<=count($pic);$i++){
$Div .="<div id='listpic".$i."' class='listpic_exhib' onmouseover='show(id)' onmouseout='show(id)'><div class='listpic_exhib_img_up'><div class='listpic_exhib_img'><p><a href='".$pic[$i]['img']."' rel='prettyPhoto[portfolio]' title='".getImgAlt($pic[$i]['text'])."'><img src='".$pic[$i]['ddimg']."' /></a></p></div></div><div id='listpic".$i."_m' class='listpic_exhib_txt' style='display:none'>   <ul><li class='let_title'>".getTakeTwo($pic[$i]['text'])."</li><li class='let_px'>".$pic[$i]['size']."</li><li class='let_lei'>".$pic[$i]['type']." </li> </ul></div></div> <!--一个图片结束-->";
}
return $Div;
}
第三部 在列表模板写上标签和函数
{dede:field.id function="getArtImg(@me)"/}
//这个标签的意思就是得到当前栏目的id,并且调用common.func.php里面的getArtImg()函数,并将id的值传给 getArtImg()函数;
注意:$img = getAllImg($aid);//调用我第一步的那个函数,得到图片集的二位数组,
$pic[$i][ddimg] => /jiu/uploads/allimg/100607/1-10060G12Z2-lp.jpg
$pic[$i][text] => @撒地方
$pic[$i][type] => @艾、什顿飞撒地方 //这两个是我自己添加的图片说明
$pic[$i][sort] => soil //这两个是我自己添加的图片说明
$pic[$i][width] => 69
$pic[$i][height] => 100
$pic[$i][img] => /jiu/uploads/allimg/100607/1-10060G12Z2.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ|小黑屋|手机版|Archiver|phpwps Inc. ( 鄂ICP备14011625号-1 )

GMT+8, 2025-5-4 12:32 , Processed in 0.065280 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表