本帖最后由 dongdong0925 于 2010-5-17 16:26 编辑
前言:Supesite默认生成的静态页面地址会是类似于48/n-27548.html这类的地址,固定的格式,不能被搜索引擎更好的识别和收录。
最终的效果:生成类似于kejishijie/2010/01-06/1262749705.html(分类名/年份/月-日/静态文件名)这类的地址,实现分类和该分类下的新闻在一个文件夹里。(说明:本方法是利用资讯分类里的描述实现的。)
方法:找到目录下的category.php文件,找到下面这段代码。- $thecat = array();
- if($catid) {
- $query = $_SGLOBAL['db']->query("SELECT * FROM ".tname('categories')." WHERE catid='$catid'");
- $thecat = $_SGLOBAL['db']->fetch_array($query);
- }
复制代码 将其移动到下面这段代码前面。- if(!empty($_SCONFIG['htmlcategory'])) {
- $_SHTML['action'] = 'category';
- $_SHTML['catid'] = $catid;
- if(!empty($_SGET['mode'])) $_SHTML['mode'] = 'bbs';
- if(!empty($_SGET['page'])) $_SHTML['page'] = $_SGET['page'];
- $_SGLOBAL['htmlfile'] = gethtmlfile($_SHTML);
- ehtml('get', $_SCONFIG['htmlcategorytime']);
- $_SCONFIG['debug'] = 0;
- }
复制代码 在上面这段代码中找到这句代码。- $_SHTML['catid'] = $catid;
复制代码 在其之后添加这段代码。- $_SHTML['name'] = $thecat['note'];
复制代码 找到目录下的viewnews.php文件,找到下面这段代码。
- //页面跳转
- if($itemid && !empty($_SCONFIG['htmlviewnews'])) {
- $_SHTML['action'] = 'viewnews';
- $_SHTML['itemid'] = $itemid;
- $_SHTML['page'] = $page;
- $_SGLOBAL['htmlfile'] = gethtmlfile($_SHTML);
- ehtml('get', $_SCONFIG['htmlviewnewstime']);
- $_SCONFIG['debug'] = 0;
- }
-
复制代码 找到其中这句代码。- $_SHTML['itemid'] = $itemid;
复制代码 在其之后添加下面的代码。
- $_SHTML['name'] = $n['note'];
- $_SHTML['dateline'] = $n['dateline'];
-
复制代码 然后将下面的这么一段代码添加到上面(//页面跳转)那段代码之前。
- if($itemid) {
- $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\'');
- $n = $_SGLOBAL['db']->fetch_array($q);
- }
-
复制代码 找到function文件夹下的common_func.php文件,搜索gethtmlfile($parray)这个函数。
找到下面这段代码。
- } elseif(!empty($parray['fid'])) {
- $id = $parray['fid'];
- }
-
复制代码 在其之后添加下面的代码。
- if(!empty($parray['name'])) {
- $thedir = $parray['name'];
- }
-
-
- if(!empty($parray['dateline'])) {
- $dateline = $parray['dateline'];
- if(!empty($parray['name'])) {
- $thedir = $parray['name'];
- }
- $thedir .= '/'.date('Y',$dateline).'/'.date('m-d',$dateline);
- }
复制代码 找到下面这段代码。
- if($parray['action'] == 'viewnews') {
- $htmlfilename = "n-{$id}";
-
复制代码 将上面的"n-{$id}"改为"{$dateline}"。
找到下面这段代码。
- elseif($parray['action'] == 'viewthread') {
- $htmlfilename = "oo-{$id}";
- }
-
复制代码 在其后面添加下面的代码。-
- elseif($parray['action'] == 'category') {
- $htmlfilename = "index";
- }
-
复制代码 找到下面这段代码。
- if(is_dir($htmldir) || (!is_dir($htmldir) && @mkdir($htmldir))) {
-
复制代码 将其中的mkdir改为mkdirs
找到function geturl($pstring, $urlmode=0) {这句代码,在其之上添加下面的函数。-
- function mkdirs($dir){
- if (is_dir($dir) || @mkdir($dir)) return TRUE;
- if (!mkdirs(dirname($dir))) return FALSE;
- return @mkdir($dir);
- }
-
复制代码 OK。进入Supesite后台,找到资讯分类,编辑,然后在说明介绍里写上你要显示的分类名。(比如你的分类名叫做互联网络,这里你就写成相应的拼音,如hulianwangluo,一定要是英文,不然会出错。)启用静态吧,看看有效果了吗。
如有问题,可以帖内回复。
某一分类下的截图
某条资讯下的截图
|