• DedeCMS 列表页调用图集内容多张图片的方法


    新做一个以图片为主的网站,采用的DEDECMS图集,列表页要求直接调内容面的大图,解决方法如下:
    (主要是采用php的正则匹配函数preg_match_all函数
    来巩固复习下该函数:
    preg_match_all("正则表达式",匹配的内容,保存在数组中);
    保存在数组中的数据是 按照这样的格式进行保存的
    数组[0] 是 符合条件的 一条 语句;
    数组[1][2][3]...等等内容分别是正则表达式 第1、2、3个匹配符 所匹配的 数据
    preg_match_all 匹配出来的 该数组是三维数组
    也就是说
    数组[1]仍旧是一个数组)

    1、在include/common.func.php增加一函数

    ////循环输出多张图片
    function Getimgs($aid, $imgwith = 300, $imgheight = 270, $num = 0, $style = ''){
        global $dsql;
        $imgurls = '';
         $row = $dsql -> getone("Select imgurls From`#@__addonimages` where aid='$aid'"); //
         $imgurls = $row['imgurls'];
         preg_match_all("/{dede:img (.*)}(.*){/dede:img/isU", $imgurls, $wordcount);
         $count = count($wordcount[2]);
         if ($num > $count || $num == 0){
            $num = $count;
        }
       
        for($i = 0;$i < $num;$i++){
            if($style == 'li'){
                $imglist .= "<li><a href=#" . $i . "><img src=". trim($wordcount[2][$i]) . " width= '" .$imgwith ."'height='" . $imgheight . "'></li></a>";
            }else{
                $imglist .= "<img src= " . trim($wordcount[2][$i]) . " width='" . $imgwith . "'height='" . $imgheight . "'>";
            }
        }
         return $imglist;
    
    }
    


    2、在列表页{dede:list}之间调用[field:id function="Getimgs(@me,80,80,9)" /],例如:
    {dede:list pagesize='12'}   
       [field:id function="Getimgs(@me,80,80,9)" /]   
    {/dede:list}
    如在其它地方调用,可用:{dede:field.id function="Getimgs(@me,400,400,10)" /}

    实战

    ////循环输出多张图片
    function Getimgs($aid, $num = 0){
        global $dsql;
        $imgurls = '';
         $row = $dsql -> getone("Select imgurls From`#@__addonimages` where aid='$aid'"); //
         $imgurls = $row['imgurls'];
         preg_match_all("/{dede:img ddimg='(.*)' text='(.*)' width='(.*)' height='(.*)'}(.*){/dede:img/isU", $imgurls, $wordcount);
         $count = count($wordcount[2]);
         if ($num > $count || $num == 0){
            $num = $count;
        }
        
        for($i = 0;$i < $num;$i++){
            $factor=$wordcount[4][$i]/$wordcount[3][$i];
            $imgheight=314*$factor;
            $imglist .= "<li><img src= '" . trim($wordcount[5][$i])."' width='314' height='".$imgheight."'></li>";
        }
         return $imglist;
     
    }

    函数调用语句

    {dede:field.id function="Getimgs(@me)" /}

  • 相关阅读:
    Robin Hood CodeForces
    Arthur and Questions CodeForces
    AC日记——过河卒 洛谷 1002
    加密(模拟)
    AC日记——codevs 1086 栈 (卡特兰数)
    AC日记——搞笑世界杯 codevs 1060(dp)
    AC日记—— codevs 1031 质数环(搜索)
    AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)
    AC日记——阶乘之和 洛谷 P1009(高精度)
    AC日记——逃跑的拉尔夫 codevs 1026 (搜索)
  • 原文地址:https://www.cnblogs.com/shanmao/p/3375376.html
Copyright © 2020-2023  润新知