[转载]dedecms织梦跳转终极修改:使用自定义文件名,外链伪静态和新浪微博一样,适合做淘宝客、外链推广等网站 – kuphp – 博客园.
最近用dedecms做了好多站,在仿一个外国的索引一样的外链站时候,跳转需要优化一下,网上看了很多文章,都是用view-开头的,不够好,如果要用自定义文件名作为跳转地址,dedecms如果做呢。该站外观功能如图所示:
如上图,比较简单,列表页是/r/LMFTQM这样的跳转链接,没有详情页。
做好的站:cbankmall.com,外链也差不多,而且/r也去掉了。默认的跳转链接不是这样的,必须要改一下程序。
现在说一下终极修改方法,我用的是dede5.7utf8版的,其他版本可能要变通一下:
首先,要到系统–系统基本参数–核心设置里面把是否使用伪静态开启,这样[field:arcurl/]才会使用静态化的文章地址。
接着,打开include\helpers\channelunit.helper.php找到下面的if语句改成这样:
//作者:apple0280 //qq:71780795 //博客园:http://www.cnblogs.com/kuhp/ //电子邮件:71780795@qq.com //动态文章 if($cfg_rewrite == 'Y') { //return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html'; $dsql = new DedeSql(false); $dsql->SetQuery("SELECT filename FROM #@__archives WHERE id=".$aid); $dsql->Execute(); $co=0; $row=$dsql->GetOne(); $filename=$row['filename']; $dsql->SetQuery("SELECT * FROM #@__archives WHERE flag='j' and filename='".$filename."'"); $dsql->Execute(); $row2=$dsql->GetTotalRow(); if($filename&&$row2==1) return '/'.$filename; else return "/view-".$aid; }
来的地址是:/plus/view-1-1.html
现在解析成你在文章里设定的/LMFTQM,只要自定义文件名写上LMFTQM,如果跳转文章里的自定义文件名重复或者为空,则采用/view-1作为路径。
显示层就做好了,现在应用层:
我们要改一下根目录的伪静态文件,lunix的.htaccess我是这样的:
//作者:apple0280 //qq:71780795 //博客园:http://www.cnblogs.com/kuhp/ //电子邮件:71780795@qq.com <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{http_host} ^cbankmall.com [NC] RewriteRule ^(.*)$ http://www.cbankmall.com/$1 [L,R=301] RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1 RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 RewriteRule ^view-([0-9]+)-1\.html$ /plus/view.php?aid=$1 RewriteRule ^view-([0-9]+)$ /plus/view.php?aid=$1 RewriteRule ^([0-9a-zA-Z\-\_]+)$ /plus/view.php?f=$1 RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2 RewriteRule ^sitemap\.xml$ /sitemap.php </IfModule>
如果是iis,httpd.ini可以这样写(暂未验证正确性):
[ISAPI_Rewrite] # 缓存3600秒 = 1 小时(hour) CacheClockRate 3600 RepeatLimit 32 #dedecms Rewrite规则 #RewriteRule ^(.*)/index\.html $1/index\.php RewriteRule ^(.*)/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2 RewriteRule ^(.*)/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2&TotalResult=$3&PageNo=$4 RewriteRule ^(.*)/view-([0-9]+)-1\.html $1/plus/view\.php\?aid=$2 RewriteRule ^(.*)/view-([0-9]+) $1/plus/view\.php\?aid=$2 RewriteRule ^(.*)/([0-9a-zA-Z-_]+) $1/plus/view\.php\?aid=$2 RewriteRule ^(.*)/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?aid=$2&pageno=$3 RewriteRule ^(.*)/sitemap\.xml $1/sitemap\.php
这里注意,list那几行我的站没用到,因为列表的栏目我链接到默认页,没有使用动态页。
然后,我要用/plus/view.php解析。打开这个文件改一下:
在require_once(DEDEINC.’/arc.archives.class.php’);
后面加上以下几行代码:
//作者:apple0280 //qq:71780795 //博客园:http://www.cnblogs.com/kuhp/ //电子邮件:71780795@qq.com if($f){ $dsql = new DedeSql(false); $dsql->SetQuery("SELECT id FROM #@__archives WHERE flag='j' and filename='".$f."'"); $dsql->Execute(); $row=$dsql->GetOne(); if($row['id'])$aid = $arcID=$row['id']; }
这时候就可以看到http://www.yishile.com/LMFTQM这样的链接。
到此,大功告成了,有问题大家可以留言。