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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[分享] supesite7.5全站页面静态化/可自定义URL路径

[复制链接]
hikelive 发表于 2010-6-26 17:51:38 | 显示全部楼层 |阅读模式
SupeSite插件
插件名称: supesite7.5全站页面静态化
插件简介: 实现对网站的所有资讯页面静态化,URL路径可以自由定义。
语言编码: GBK简体 
插件作者: hikelive
本帖最后由 hikelive 于 2010-6-26 17:54 编辑

效果展示:
频道页路径:http://www.92jianshen.cn/news/
分类路径:http://www.92jianshen.cn/news/xxrl
文章路径:http://www.92jianshen.cn/news/xxrl/20100529/1776.html

第一步我们需要开启系统默认没有开放的一个功能,自定义静态页面文件夹。
  1. $_SC['cachegrade'] = 0;       
复制代码
后面添加一行代码
  1. $_SC['freshhtml'] = 1;
复制代码
这时候到supesite后台编辑“资讯分类”的是,你会发现多了两个选填项“分类存放HTML的路径”和“二级域名绑定(以http://开头)”
我们这里只需要填写“分类存放HTML的路径”这个项目,比如“科技世界”这个分类,我可以这样命名“KJSJ”;
我们可以给每一个分类添加一个有意义的名字。

第二步,我们需要调整一下”系统设置“里面的”本地路径设置“,具体参考贴图


第三步,重中之重,我们需要修改一段代码。找到function/common.func.php
大概在125行有一个function gethtmlfile($parray) 函数,我们需要修改这个函数,他的功能是生成URL静态页面路径。
将function gethtmlfile($parray) 函数
  1. function gethtmlfile($parray) {
  2.         $htmlarr = array();
  3.         $dirarr = array();
  4.         $id = 0;


  5.         if(empty($parray['page'])) {
  6.                 unset($parray['page']);
  7.         } elseif($parray['page'] < 2) {
  8.                 unset($parray['page']);
  9.         }
  10.         .......
  11.         return $htmlarr;
  12. }
复制代码
替换成:
  1. function gethtmlfile($parray) {
  2.         global $_SGLOBAL;
  3.         $htmlarr = array();
  4.         $dirarr = array();
  5.         $id = 0;


  6.         if(empty($parray['page'])) {
  7.                 unset($parray['page']);
  8.         } elseif($parray['page'] < 2) {
  9.                 unset($parray['page']);
  10.         }
  11.         if(!empty($parray['uid'])) {
  12.                 $id = $parray['uid'];
  13.                 if(!empty($parray['action'])) {
  14.                         if($parray['action'] == 'space' || $parray['action'] == 'spacelist') {
  15.                                 unset($parray['action']);
  16.                         } elseif ($parray['action'] == 'viewspace') {
  17.                                 unset($parray['action']);
  18.                         }
  19.                 }
  20.         } elseif(!empty($parray['itemid'])) {
  21.                 $id = $parray['itemid'];
  22.         } elseif(!empty($parray['tid'])) {
  23.                 $id = $parray['tid'];
  24.         } elseif(!empty($parray['tagid'])) {
  25.                 $id = $parray['tagid'];
  26.         } elseif(!empty($parray['catid'])) {
  27.                 $id = $parray['catid'];
  28.         } elseif(!empty($parray['fid'])) {
  29.                 $id = $parray['fid'];
  30.         }

  31.         $htmlfilename = str_replace(array('action-', 'uid-', 'itemid-'), array('', '', ''), arraytostring($parray, '-'));
  32.         if(!empty($id)) {
  33.                 if(!empty($parray['action'])) {
  34.                         if($parray['action'] == 'viewnews') {                //文章系统
  35.                                   $query = $_SGLOBAL['db']->query('SELECT i.type,i.dateline,c.htmlpath,c.catid FROM '.tname('spaceitems').' i left join '.tname('categories').' c on i.catid=c.catid WHERE i.itemid=\''.$id.'\'');
  36.                                 $news = $_SGLOBAL['db']->fetch_array($query);
  37.                                 $time=date('Ymd', $news['dateline']);
  38.                                 $htmlpath=empty($news['htmlpath'])?$news['catid']:$news['htmlpath'];
  39.                                 $thedir =$news['type'].'/'.$htmlpath.'/'.$time;
  40.                                 $htmlfilename = "{$id}";
  41.                                 if(!empty($parray['page'])) $htmlfilename .= '-'.$parray['page'];
  42.                         } elseif($parray['action'] == 'viewthread') {        //BBS
  43.                                 $thedir ="other";
  44.                                 $htmlfilename = "t-{$id}";
  45.                         }
  46.                         elseif($parray['action'] == 'category')
  47.                         {
  48.                                 $query = $_SGLOBAL['db']->query('SELECT i.type,i.htmlpath,i.catid FROM '.tname('categories').' i WHERE  i.catid=\''.$id.'\'');
  49.                                 $news = $_SGLOBAL['db']->fetch_array($query);
  50.                                 $htmlpath=empty($news['htmlpath'])?$news['catid']:$news['htmlpath'];
  51.                                 $thedir = $news['type'].'/'.$htmlpath;
  52.                                 $htmlfilename ="index";
  53.                                 if(!empty($parray['page'])) $htmlfilename = "list-page".'-'.$parray['page'];
  54.                         }
  55.                 }
  56.         }
  57.        
  58.         if(is_dir(H_DIR) || (!is_dir(H_DIR) && @mkdir(H_DIR))) {
  59.                 if(empty($id)) {
  60.                                 $htmlarr['path'] = H_DIR.'/'.$htmlfilename.'/'.'index.html';
  61.                                 $htmlarr['url'] = H_URL.'/'.$htmlfilename;
  62.                 } else {
  63.                         $htmldir = H_DIR.'/'.$thedir;
  64.                         if(is_dir(H_DIR.'/'.$news['type']) || (!is_dir(H_DIR.'/'.$news['type']) && @mkdir(H_DIR.'/'.$news['type']))){}
  65.                         if(is_dir($htmldir) || (!is_dir($htmldir) && @mkdir($htmldir))) {
  66.                                 $htmlarr['path'] = H_DIR.'/'.$thedir.'/'.$htmlfilename.'.html';
  67.                                 $htmlarr['url'] = H_URL.'/'.$thedir.'/'.$htmlfilename.'.html';
  68.                                 if($parray['action'] == 'category'&&empty($parray['page'])){
  69.                                         $htmlarr['path'] = H_DIR.'/'.$thedir.'/'.$htmlfilename.'.html';
  70.                                         $htmlarr['url'] = H_URL.'/'.$thedir;
  71.                                 }
  72.                         } else {
  73.                                 $htmlarr['path'] = H_DIR.'/'.$htmlfilename.'.html';
  74.                                 $htmlarr['url'] = H_URL.'/'.$htmlfilename.'.html';
  75.                         }
  76.                 }
  77.         } else {
  78.                 $htmlarr['path'] = S_ROOT.'./'.$htmlfilename.'.html';
  79.                 $htmlarr['url'] = S_URL.'/'.$htmlfilename.'.html';
  80.         }
  81.         return $htmlarr;
  82. }
复制代码
第四步,我们到后台开启静态配置就OK了。

我自己是琢磨了两天两晚才弄出来的,希望对大家有点用。

附上GBK源码文件:


ybazll 发表于 2010-6-26 18:10:07 | 显示全部楼层
哈哈 抢到了哈哈
猫扑美女
回复

使用道具 举报

ybazll 发表于 2010-6-26 18:10:55 | 显示全部楼层
www.mopgirl.cn
回复

使用道具 举报

ybazll 发表于 2010-6-26 18:11:15 | 显示全部楼层
厉害了
回复

使用道具 举报

benba 发表于 2010-6-26 19:15:45 | 显示全部楼层
想太久了。想的时候没有在论坛搜索一下啊。这个我早发了很多个版本的。版主也出了一个完美版的。https://discuz.dismall.com/forum. ... 03094&from=home
回复

使用道具 举报

z443777100 发表于 2010-6-26 23:08:58 | 显示全部楼层
本帖最后由 z443777100 于 2010-6-26 23:16 编辑

支持啊 太需要了 我自己也研究了一下,硬是没弄明白


http://z443777100.s22.804.cn/news/guonei/20100626/2.html

各位大哥问一下 这个URL地址中的news怎么去掉呢 默认的资讯频道我停用了的
或者怎么改成finance
回复

使用道具 举报

危险的蘑菇 发表于 2010-6-26 23:19:33 | 显示全部楼层
楼主您这样修改会照成系统巨大的开销哦,因为ss每个列表的每篇文章都要调用这个函数,那么也就是说无数次的执行查询sql的操作。
您可以看看蘑菇的修改方法
http://www.365coding.com/html/85/n-485.html
回复

使用道具 举报

esumar 发表于 2010-6-26 23:41:00 | 显示全部楼层
收下了。
tks
回复

使用道具 举报

 楼主| hikelive 发表于 2010-6-27 14:39:45 | 显示全部楼层
回复 z443777100 的帖子


你可以news['type']换成news['htmlpath'],,当然sql语句也做相应的更改,改成i.htmlpath,然后去后台定义一下news的文件夹名字。
回复

使用道具 举报

sjdwm 发表于 2010-8-1 15:57:12 | 显示全部楼层
不知道为什么我的静态打开主页就访问不了?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 10:59 , Processed in 0.028266 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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