找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2333|回复: 0

[分享] dedecms织梦站内选择文件夹和图片文件排序问题

[复制链接]
发表于 2018-8-4 09:33:56 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
摘要:织梦站内选择图片排序是直接read()读取直接输出,如果我们同一时间上传了多个图片,在没有经过排序的情况下,我们去选择图片很难快速分辨哪个是刚刚上传的,解决方法是
织梦站内选择图片排序是直接read()读取直接输出,如果我们同一时间上传了多个图片,在没有经过排序的情况下,我们去选择图片很难快速分辨哪个是刚刚上传的,解决方法是读取该目录的文件列表,用"文件名、修改时间"做键值对,塞入数组,注意,是用文件名做键,因为图片有可能是同一个时分秒上传的,并且没有毫秒,我们无法判断哪个是快一秒哪个慢一秒。再对"修改时间"倒序,最后foreach输出即可。


解决方法

打开 \include\dialog\select_images.php 找到

  1. $dh = dir($inpath);
  2. ....(中间代码省略)
  3. $dh->close();
复制代码

  1. $dh = dir($inpath);
  2. $ty1="";
  3. $ty2="";
  4. $filearr = array();
  5. while($file = $dh->read()) {
  6.     //-----计算文件大小和创建时间
  7.     if($file!="." && $file!=".." && !is_dir("$inpath/$file")){
  8.         $filetime = filemtime("$inpath/$file");
  9.         $filetime = MyDate("Y-m-d H:i:s", $filetime);
  10. $filearr[] = $file;
  11. $filetimearr[] = $filetime;
  12.     }
  13.     if($file == ".") continue;
  14.     else if($file == "..")
  15.     {
  16.         if($activepath == "") continue;
  17.         $tmp = preg_replace("#[\/][^\/]*$#i", "", $activepath);
  18.         $line = "\n<tr>
  19.    <td class='linerow' colspan='2'>
  20.    <a href='select_images.php?imgstick=$imgstick&v=$v&f=$f&activepath=".urlencode($tmp).$addparm."'><img src=img/dir2.gif border=0 width=16 height=16 align=absmiddle>上级目录</a></td>
  21.    <td colspan='2' class='linerow'> 当前目录:$activepath</td>
  22.    </tr>
  23.    ";
  24.         echo $line;
  25.     }
  26.     else if(is_dir("$inpath/$file"))
  27.     {
  28.         if(preg_match("#^_(.*)$#i", $file)) continue; #屏蔽FrontPage扩展目录和linux隐蔽目录
  29.         if(preg_match("#^\.(.*)$#i", $file)) continue;
  30. $dirarr[] = $file;
  31.     }
  32. }//End Loop
  33. $dh->close();
  34. arsort($dirarr);
  35. foreach($dirarr as $file)
  36. {
  37. $line = "\n<tr>
  38.    <td bgcolor='#F9FBF0' class='linerow' colspan='2'>
  39.    <a href='select_images.php?imgstick=$imgstick&v=$v&f=$f&activepath=".urlencode("$activepath/$file").$addparm."'><img src=img/dir.gif border=0 width=16 height=16 align=absmiddle>$file</a></td>
  40.    <td class='linerow'> </td>
  41.    <td bgcolor='#F9FBF0' class='linerow'> </td>
  42.    </tr>";
  43. echo "$line";
  44. }
  45. array_multisort($filetimearr,SORT_DESC,SORT_STRING, $filearr);
  46. array_multisort($filetimearr,SORT_DESC,SORT_STRING, $filetimearr);
  47. $result = array_combine($filearr,$filetimearr);
  48. foreach($result as $file => $filetime)
  49. {
  50. $filesize = filesize("$inpath/$file");
  51. $filesize = $filesize / 1024;
  52. if($filesize != "")
  53. if($filesize < 0.1){
  54. @list($ty1, $ty2) = split("\.", $filesize);
  55. $filesize = $ty1.".".substr($ty2, 0, 2);
  56. }
  57. else{
  58. @list($ty1, $ty2) = split("\.", $filesize);
  59. $filesize = $ty1.".".substr($ty2, 0, 1);
  60. }
  61. if(preg_match("#\.(gif|png)#i", $file))
  62.     {
  63.         $reurl = "$activeurl/$file";
  64.         $reurl = preg_replace("#^\.\.#", "", $reurl);
  65.         if($cfg_remote_site=='Y' && $remoteuploads == 1)
  66.          {
  67.            $reurl  = $remoteupUrl.$reurl;
  68.         }else{
  69.             $reurl = $reurl;
  70.         }

  71.         if($file==$comeback) $lstyle = " style='color:red' ";
  72.         else  $lstyle = "";

  73.         $line = "\n<tr>
  74.    <td align='center' class='linerow' bgcolor='#F9FBF0'>
  75.    <a href="#" onClick="ChangeImage('$reurl');"><img src='img/picviewnone.gif' width='16' height='16' border='0' align=absmiddle></a>
  76.    </td>
  77.    <td class='linerow' bgcolor='#F9FBF0'>
  78.    <a href=# onclick="ReturnImg('$reurl');" $lstyle><img src=img/gif.gif border=0 width=16 height=16 align=absmiddle>$file</a></td>
  79.    <td class='linerow'>$filesize KB</td>
  80.    <td align='center' class='linerow' bgcolor='#F9FBF0'>$filetime</td>
  81.    </tr>";
  82.         echo "$line";
  83.     }
  84.     else if(preg_match("#\.(jpg)#i", $file))
  85.     {
  86.         $reurl = "$activeurl/$file";
  87.         $reurl = preg_replace("#^\.\.#", "", $reurl);
  88.         if($cfg_remote_site=='Y' && $remoteuploads == 1)
  89.          {
  90.            $reurl  = $remoteupUrl.$reurl;
  91.         }else{
  92.             $reurl = $reurl;
  93.         }

  94.         if($file==$comeback) $lstyle = " style='color:red' ";
  95.         else  $lstyle = "";

  96.         $line = "\n<tr>
  97.    <td align='center' class='linerow' bgcolor='#F9FBF0'>
  98.    <a href="#" onClick="ChangeImage('$reurl');"><img src='img/picviewnone.gif' width='16' height='16' border='0' align=absmiddle></a>
  99.    </td>
  100.    <td class='linerow' bgcolor='#F9FBF0'>
  101.    <a href=# onclick="ReturnImg('$reurl');" $lstyle><img src=img/jpg.gif border=0 width=16 height=16 align=absmiddle>$file</a>
  102.    </td>
  103.    <td class='linerow'>$filesize KB</td>
  104.    <td align='center' class='linerow' bgcolor='#F9FBF0'>$filetime</td>
  105.    </tr>";
  106.         echo "$line";
  107.     }
  108. }
复制代码


后台模板管理按名称排序修改

打开 \dede\templets\templets_default.htm 找到

  1. $dh = dir($templetdird);
复制代码

改成
  1. $files = scandir($templetdird);
复制代码

继续找到
  1. while($filename=$dh->read())
复制代码

改成
  1. foreach($files as $filename)
复制代码

完成

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-11-27 02:43 , Processed in 0.045370 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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