有时候我们的模板涉及到需要动态更新显示的内容,也有人不喜欢静态,担心文件过多或者生成麻烦....等等各种理由都需要用到织梦伪静态。但是DEDECMS的文章页默认的伪静态的url都是:http://网站地址/plus/view-12-1.html 形式,千篇一律的连接地址并不好看。跟版网小编在网上寻找N久之后终于发现一个可以间接实现织梦栏目目录形式伪静态的方法:
直接用织梦后台栏目设置文章命名规则里的地址来打造个性的DEDECMS文章页伪静态URL。
一般我们在后台设置栏目的时候,都会设置一下文章文章命名规则,如下图。
这次我们就用这个文章命名规则里自己设置的规则来打造完美的文章页伪静态URL。
修改文件\include\helpers\channelunit.helper.php(修改前请备份文件)
直接搜索: //动态文章
下一行看到:
return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';
画红框的地方替换成以下代码:
/** * http://www.qimiweb.com/ */ $articleDir = MfTypedir($typedir); $articleRule = strtolower($namerule); if($articleRule=='') { $articleRule = strtolower($GLOBALS['cfg_df_namerule']); } if($typedir=='') { $articleDir = $GLOBALS['cfg_cmspath'].$GLOBALS['cfg_arcdir']; } $dtime = GetDateMk($timetag); list($y, $m, $d) = explode('-', $dtime); $arr_rpsource = array('{typedir}','{y}','{m}','{d}','{timestamp}','{aid}','{cc}'); $arr_rpvalues = array($articleDir,$y, $m, $d, $timetag, $aid, dd2char($m.$d.$aid.$y)); if($filename != '') { $articleRule = dirname($articleRule).'/'.$filename.$GLOBALS['cfg_df_ext']; } $articleRule = str_replace($arr_rpsource,$arr_rpvalues,$articleRule); if(preg_match("/\{p/", $articleRule)) { $articleRule = str_replace('{pinyin}',GetPinyin($title).'_'.$aid,$articleRule); $articleRule = str_replace('{py}',GetPinyin($title,1).'_'.$aid,$articleRule); } $articleUrl = '/'.preg_replace("/^\//", '', $articleRule); return $articleUrl;
接下来我们要在系统基本参数->核心设置里设置一下开启伪静态
勾选,是否使用伪静态。这样就开启了伪静态功能了,现在随便添加一篇文章测试一下
发布选项这里要选择 仅动态浏览,这样织梦系统才会是伪静态的。
发布成功后,可以看到,文章伪静态的地址和真静态生成html的地址是一模一样的了。
最后附以上案例的伪静态规则:
RewriteRule ^(.*)/cslm/([0-9]+)/([0-9]+)/([0-9]+)\.html $1/plus/view\.php\?aid=$4
具体伪静态规则要看自己的情况而修改了,多少栏目就添加多少规则。一般网站栏目都是固定的,所以也不算麻烦。性价比还是蛮高的。
OK,想实现dedecms织梦目录式伪静态的朋友们就可以参考这个方法了!