Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 关于supesite静态地址的一点改进

[复制链接]
dongdong0925 发表于 2010-5-17 16:03:39 | 显示全部楼层 |阅读模式
本帖最后由 dongdong0925 于 2010-5-17 16:26 编辑

前言:Supesite默认生成的静态页面地址会是类似于48/n-27548.html这类的地址,固定的格式,不能被搜索引擎更好的识别和收录。

最终的效果:生成类似于kejishijie/2010/01-06/1262749705.html(分类名/年份/月-日/静态文件名)这类的地址,实现分类和该分类下的新闻在一个文件夹里。(说明:本方法是利用资讯分类里的描述实现的。)

方法:找到目录下的category.php文件,找到下面这段代码。
  1. $thecat = array();
  2. if($catid) {
  3. $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('categories')." WHERE catid='$catid'");
  4. $thecat = $_SGLOBAL['db']->fetch_array($query);
  5. }
复制代码
将其移动到下面这段代码前面。
  1. if(!empty($_SCONFIG['htmlcategory'])) {
  2. $_SHTML['action'] = 'category';
  3. $_SHTML['catid'] = $catid;
  4. if(!empty($_SGET['mode'])) $_SHTML['mode'] = 'bbs';
  5. if(!empty($_SGET['page'])) $_SHTML['page'] = $_SGET['page'];
  6. $_SGLOBAL['htmlfile'] = gethtmlfile($_SHTML);
  7. ehtml('get', $_SCONFIG['htmlcategorytime']);
  8. $_SCONFIG['debug'] = 0;
  9. }
复制代码
在上面这段代码中找到这句代码。
  1. $_SHTML['catid'] = $catid;
复制代码
在其之后添加这段代码。
  1. $_SHTML['name'] = $thecat['note'];
复制代码
找到目录下的viewnews.php文件,找到下面这段代码。

  1. //页面跳转
  2. if($itemid && !empty($_SCONFIG['htmlviewnews'])) {
  3. $_SHTML['action'] = 'viewnews';
  4. $_SHTML['itemid'] = $itemid;
  5. $_SHTML['page'] = $page;
  6. $_SGLOBAL['htmlfile'] = gethtmlfile($_SHTML);
  7. ehtml('get', $_SCONFIG['htmlviewnewstime']);
  8. $_SCONFIG['debug'] = 0;
  9. }
复制代码
找到其中这句代码。
  1. $_SHTML['itemid'] = $itemid;
复制代码
在其之后添加下面的代码。

  1. $_SHTML['name'] = $n['note'];
  2. $_SHTML['dateline'] = $n['dateline'];
复制代码
然后将下面的这么一段代码添加到上面(//页面跳转)那段代码之前。

  1. if($itemid) {
  2. $q = $_SGLOBAL['db']->query('SELECT a.dateline , b.note FROM '.tname('spaceitems').' a,'.tname('categories'). ' b WHERE a.itemid=\''.$itemid.'\' AND a.catid = b.catid AND a.type=\'news\'');
  3. $n = $_SGLOBAL['db']->fetch_array($q);
  4. }
复制代码
找到function文件夹下的common_func.php文件,搜索gethtmlfile($parray)这个函数。

找到下面这段代码。

  1. } elseif(!empty($parray['fid'])) {
  2.   $id = $parray['fid'];
  3. }
复制代码
在其之后添加下面的代码。

  1.   if(!empty($parray['name'])) {
  2.    $thedir = $parray['name'];
  3.   }
  4.   
  5.   
  6.   if(!empty($parray['dateline'])) {
  7.    $dateline = $parray['dateline'];
  8.    if(!empty($parray['name'])) {
  9.         $thedir = $parray['name'];
  10.    }
  11. $thedir .= '/'.date('Y',$dateline).'/'.date('m-d',$dateline);
  12.   }
复制代码
找到下面这段代码。

  1. if($parray['action'] == 'viewnews') {
  2.     $htmlfilename = "n-{$id}";
复制代码
将上面的"n-{$id}"改为"{$dateline}"。

找到下面这段代码。

  1. elseif($parray['action'] == 'viewthread') {
  2.     $htmlfilename = "oo-{$id}";
  3.    }
复制代码
在其后面添加下面的代码。

  1. elseif($parray['action'] == 'category') {
  2.     $htmlfilename = "index";
  3.    }
复制代码
找到下面这段代码。

  1. if(is_dir($htmldir) || (!is_dir($htmldir) && @mkdir($htmldir))) {
复制代码
将其中的mkdir改为mkdirs

找到function geturl($pstring, $urlmode=0) {这句代码,在其之上添加下面的函数。

  1. function mkdirs($dir){
  2. if (is_dir($dir) || @mkdir($dir)) return TRUE;
  3. if (!mkdirs(dirname($dir))) return FALSE;
  4. return @mkdir($dir);
  5. }
复制代码
OK。进入Supesite后台,找到资讯分类,编辑,然后在说明介绍里写上你要显示的分类名。(比如你的分类名叫做互联网络,这里你就写成相应的拼音,如hulianwangluo,一定要是英文,不然会出错。)启用静态吧,看看有效果了吗。

如有问题,可以帖内回复。


某一分类下的截图



某条资讯下的截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
 楼主| dongdong0925 发表于 2010-5-18 09:42:24 | 显示全部楼层
没人需要啊。。?
回复

使用道具 举报

kaii 发表于 2010-6-16 17:25:19 | 显示全部楼层
厉害,这个是重要的修改
回复

使用道具 举报

kaii 发表于 2010-6-16 19:54:19 | 显示全部楼层
  1. elseif($parray['action'] == 'viewthread') {
  2. $htmlfilename = "oo-{$id}";
  3. }
复制代码
设置不成功
这句话找不到,原文中是
  1. $htmlfilename = "t-{$id}";
复制代码
回复

使用道具 举报

sost2007 发表于 2010-7-1 00:16:09 | 显示全部楼层
不错啊
回复

使用道具 举报

危险的蘑菇 发表于 2010-7-1 00:24:15 | 显示全部楼层
本帖最后由 危险的蘑菇 于 2010-7-8 17:51 编辑

可以参考下蘑菇的方法哦
http://www.365coding.com/html/85/n-485.html
回复

使用道具 举报

2584482 发表于 2010-10-18 10:40:42 | 显示全部楼层
很强大的修改!收藏,正在修改中!!!
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-29 01:28 , Processed in 0.026128 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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