织梦DedeCMS后台文件列表按文件名排序的方法 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

  织梦dede系统的后台文件, 默认的排序很乱, 不是按名称, 也不是按时间, 如果目录内容很多的话, 很难找到自己想要的文件:

  实在是太不方便了, 于是想让这些文件列表按名字排序, 看了一下后台的文件, 原来是因为php的函数dir引起的, 以”默认模板管理”在文件列表为例, 在后台的找到模板文件: /dede/templets/templets_default.htm (dede为你的后台目录) ,打开这个文件找到:

<span class="sh_symbol"><?</span>php
$dh <span class="sh_symbol">=</span> <span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">dir</span><span class="sh_symbol">(</span>$templetdird<span class="sh_symbol">);</span>
<span style="color: rgb(165, 42, 42); font-weight: normal; font-style. normal; " class="sh_keyword">while</span><span class="sh_symbol">(</span>$filename<span class="sh_symbol">=</span>$dh<span class="sh_symbol">-></span><span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">read</span><span class="sh_symbol">())</span>
<span class="sh_cbracket">{</span>
<span style="color: rgb(165, 42, 42); font-weight: normal; font-style. normal; " class="sh_keyword">if</span><span class="sh_symbol">(!</span><span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">preg_match</span><span class="sh_symbol">(</span>“#<span class="sh_symbol">.</span>htm#”<span class="sh_symbol">,</span> $filename<span class="sh_symbol">))</span> <span style="color: rgb(165, 42, 42); font-weight: normal; font-style. normal; " class="sh_keyword">continue</span><span class="sh_symbol">;</span>
$filetime <span class="sh_symbol">=</span> <span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">filemtime</span><span class="sh_symbol">(</span>$templetdird<span class="sh_symbol">.</span>’<span class="sh_symbol">/</span>’<span class="sh_symbol">.</span>$filename<span class="sh_symbol">);</span>
$filetime <span class="sh_symbol">=</span> <span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">MyDate</span><span class="sh_symbol">(</span>“Y<span class="sh_symbol">-</span>m<span class="sh_symbol">-</span>d H<span class="sh_symbol">:</span>i”<span class="sh_symbol">,</span>$filetime<span class="sh_symbol">);</span>
$fileinfo <span class="sh_symbol">=</span> <span class="sh_symbol">(</span><span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">isset</span><span class="sh_symbol">(</span>$fileinfos<span class="sh_symbol">[</span>$filename<span class="sh_symbol">])</span> <span class="sh_symbol">?</span> $fileinfos<span class="sh_symbol">[</span>$filename<span class="sh_symbol">]</span> <span class="sh_symbol">:</span> ‘未知模板’<span class="sh_symbol">);</span>
<span class="sh_symbol">?></span>

  可以看得出来使用了PHP的dir函数导致的, dir()读取的文件是无序的, 现在我们要想办法让他按名字排序, 这里可以改另一个读取目录文件的函数scandir(); 这个函数的文件会按文件名称排序, 改成下面这样:

<span class="sh_symbol"><?</span>php
$files <span class="sh_symbol">=</span> <span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">scandir</span><span class="sh_symbol">(</span>$templetdird<span class="sh_symbol">);</span>
<span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">foreach</span> <span class="sh_symbol">(</span>$files as $filename<span class="sh_symbol">)</span>
<span class="sh_cbracket">{</span>
<span style="color: rgb(165, 42, 42); font-weight: normal; font-style. normal; " class="sh_keyword">if</span><span class="sh_symbol">(!</span><span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">preg_match</span><span class="sh_symbol">(</span>“#<span class="sh_symbol">.</span>htm#”<span class="sh_symbol">,</span> $filename<span class="sh_symbol">))</span> <span style="color: rgb(165, 42, 42); font-weight: normal; font-style. normal; " class="sh_keyword">continue</span><span class="sh_symbol">;</span>
$filetime <span class="sh_symbol">=</span> <span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">filemtime</span><span class="sh_symbol">(</span>$templetdird<span class="sh_symbol">.</span>’<span class="sh_symbol">/</span>’<span class="sh_symbol">.</span>$filename<span class="sh_symbol">);</span>
$filetime <span class="sh_symbol">=</span> <span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">MyDate</span><span class="sh_symbol">(</span>“Y<span class="sh_symbol">-</span>m<span class="sh_symbol">-</span>d H<span class="sh_symbol">:</span>i”<span class="sh_symbol">,</span>$filetime<span class="sh_symbol">);</span>
$fileinfo <span class="sh_symbol">=</span> <span class="sh_symbol">(</span><span style="color: rgb(0, 0, 0); font-weight: bold; font-style. normal; " class="sh_function">isset</span><span class="sh_symbol">(</span>$fileinfos<span class="sh_symbol">[</span>$filename<span class="sh_symbol">])</span> <span class="sh_symbol">?</span> $fileinfos<span class="sh_symbol">[</span>$filename<span class="sh_symbol">]</span> <span class="sh_symbol">:</span> ‘未知模板’<span class="sh_symbol">);</span>
<span class="sh_symbol">?></span>

  文件已经全部按名字排序了,很容易找到自己要的文件:

  后台还有其它的有文件列表的地方也一样修改就可以了,

织梦DedeCMS后台文件列表按文件名排序的方法

电脑资料

织梦DedeCMS后台文件列表按文件名排序的方法》(https://www.unjs.com)。

最新文章