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

 找回密码
 立即注册
搜索

[疑问] lidq.jingwu 老大我实在搞不定了!!麻烦你有空看看吧

[复制链接]
benba 发表于 2009-11-27 19:05:54 | 显示全部楼层 |阅读模式
HTML 生成函数(function目录:common.func.php 文件);
  1. function gethtmlfile($parray) {

  2.         $htmlarr = array();
  3.         $dirarr = array();
  4.         $id = 0;
  5.         $hdir=empty($parray['type'])?H_DIR:$parray['type'];  //[color=Red]这里接收的type是在资讯查看页里提交过来的;[/color]        $hurl=empty($parray['type'])?H_URL:$parray['type'];

  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.                 $thedir = empty($parray['datetime'])?'list':$parray['datetime'];
  34.                 if(!empty($parray['action'])) {
  35.                         if($parray['action'] == 'viewnews') {
  36.                                 $htmlfilename = "{$hdir}-{$id}";
  37.                                 if(!empty($parray['page'])) $htmlfilename .= '-'.$parray['page'];
  38.                         } elseif($parray['action'] == 'viewthread') {
  39.                                 $htmlfilename = "viewthread-{$id}";
  40.                         }
  41.                 }
  42.         }

  43.         if(is_dir($hdir) || (!is_dir($hdir) && @mkdir($hdir))) {
  44.                 if(empty($id)) {
  45.                         $htmlarr['path'] = $hdir.'/'.$htmlfilename.'.html';
  46.                         $htmlarr['url'] = $hurl.'/'.$htmlfilename.'.html';
  47.                 } else {
  48.                         $htmldir = $hdir.'/'.$thedir;
  49.                         if(is_dir($htmldir) || (!is_dir($htmldir) && @mkdir($htmldir))) {
  50.                                 $htmlarr['path'] = $hdir.'/'.$thedir.'/'.$htmlfilename.'.html';
  51.                                 $htmlarr['url'] = $hurl.'/'.$thedir.'/'.$htmlfilename.'.html';
  52.                         } else {
  53.                                 $htmlarr['path'] = $hdir.'/'.$htmlfilename.'.html';
  54.                                 $htmlarr['url'] = $hurl.'/'.$htmlfilename.'.html';
  55.                         }
  56.                 }
  57.         } else {
  58.                 $htmlarr['path'] = S_ROOT.'./'.$htmlfilename.'.html';
  59.                 $htmlarr['url'] = S_URL.'/'.$htmlfilename.'.html';
  60.         }

  61.         return $htmlarr;
  62. }
复制代码
根目录:viewnews.php里;
  1. //页面跳转
  2. if($itemid && !empty($_SCONFIG['htmlviewnews'])) {
  3.         $_SHTML['action'] = 'viewnews';
  4.         $_SHTML['type'] = $news[type];       
  5.         $_SHTML['datetime'] = date('Y', $news['dateline']);       
  6.         $_SHTML['itemid'] = $itemid;
  7.         $_SHTML['page'] = $page;
  8.         $_SGLOBAL['htmlfile'] = gethtmlfile($_SHTML);
  9.         ehtml('get', $_SCONFIG['htmlviewnewstime']);
  10.         $_SCONFIG['debug'] = 0;
  11. }
复制代码
移动到: if(empty($news)) showmessage('not_found', S_URL); 下面 增加了两个提交的值         $_SHTML['type'] = $news[type];       
        $_SHTML['datetime'] = date('Y', $news['dateline']);  用于生成频道目录 和一个年 的值;
回复

使用道具 举报

 楼主| benba 发表于 2009-11-27 19:07:30 | 显示全部楼层
问题是:
  1. function geturl($pstring, $urlmode=0) {

  2.         global $_SGLOBAL, $_SCONFIG, $spaceself;

  3.         //生成HTML
  4.         if(defined('CREATEHTML')) {
  5.                 $theurl = gethtmlurl($pstring);
  6.                 if(!empty($theurl)) {
  7.                         return $theurl;
  8.                 }
  9.         }
  10.        
  11.         //URL缓存
  12.         $cachekey = $pstring.$urlmode;
  13.         if(empty($_SGLOBAL['url_cache'])) $_SGLOBAL['url_cache'] = array();
  14.         if(!empty($_SGLOBAL['url_cache'][$cachekey])) {
  15.                 return $_SGLOBAL['url_cache'][$cachekey];
  16.         }

  17.         //url结果
  18.         $theurl = '';

  19.         //强制php模式
  20.         $isphp = !empty($spaceself)?1:strexists($pstring, 'php/1');

  21.         //首页链接
  22.         if($pstring == 'action/index') $pstring = '';

  23.         //搜索友好模式
  24.         if(!empty($_SCONFIG['htmlmode']) && $_SCONFIG['htmlmode'] == 2 && !$isphp && $urlmode != 1) {
  25.                 $htmlarr = array('uid'=>'', 'action'=>'', 'catid'=>'', 'fid'=>'', 'tagid'=>'', 'itemid'=>'', 'tid'=>'', 'type'=>'', 'view'=>'', 'mode'=>'', 'showpro'=>'', 'itemtypeid'=>'', 'page'=>'');
  26.                 $sarr = explode('/', $pstring);
  27.                 if(empty($sarr)) $sarr = array('action'=>'index');

  28.                 $htmlurlcheck = true;
  29.                 for($i=0; $i<count($sarr); $i=$i+2) {
  30.                         if(!empty($sarr[$i+1])) {
  31.                                 if(key_exists($sarr[$i], $htmlarr)) {
  32.                                         $htmlarr[$sarr[$i]] = addslashes(str_replace(array('/', '\\'), '', rawurldecode(stripslashes($sarr[$i+1]))));  //stripslashes 去一个反斜线 rawurldecode 中文解码 addslashes 自动转义
  33.                                 } else {
  34.                                         $htmlurlcheck = false;
  35.                                         break;
  36.                                 }
  37.                         }
  38.                 }
  39.                 if($htmlurlcheck) {
  40.                 [color=Red]        $htmls = gethtmlfile($htmlarr);   //这里拿不到频道的英文ID  下面的条件 就没有办法成立!!![/color]
  41.                         if(file_exists($htmls['path'])) {
  42.                                 $theurl = $htmls['url'];
  43.                         }
  44.                 }
  45.         }

  46.         //普通模式
  47.         if(empty($theurl)) {
  48.                 if(empty($pstring)) {
  49.                         if($urlmode == 1) {
  50.                                 $theurl = S_URL_ALL;
  51.                         } else {
  52.                                 $theurl = S_URL;
  53.                         }
  54.                 } else {
  55.                         $pre = '';
  56.                         $para = str_replace('/', '-', $pstring);
  57.                         if($isphp || defined('S_ISPHP')) {
  58.                                 $pre = '/index.php?';
  59.                         } else {
  60.                                 if ($_SCONFIG['urltype'] == 5) {
  61.                                         $pre = '/index.php/';
  62.                                 } else {
  63.                                         $pre = '/?';
  64.                                 }
  65.                         }
  66.                         if(empty($para)) $pre = '/';

  67.                         if($urlmode == 1) {
  68.                                 //全部路径
  69.                                 $theurl = S_URL_ALL.$pre.$para;
  70.                         } elseif($urlmode == 2) {
  71.                                 //处理
  72.                                 $theurl = S_URL.$pre.$para;
  73.                                 $theurl = url_remake($theurl);
  74.                         } else {
  75.                                 //常规
  76.                                 $theurl = S_URL.$pre.$para;
  77.                         }
  78.                 }
  79.         }

  80.         //url缓存
  81.         $_SGLOBAL['url_cache'][$cachekey] = $theurl;
  82.         return $theurl;
  83. }
复制代码
回复

使用道具 举报

ug8 发表于 2009-11-27 19:12:52 | 显示全部楼层
顶你一下!
回复

使用道具 举报

理红轩 发表于 2009-11-27 19:16:28 | 显示全部楼层
官民携手:)

支持一下!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 11:29 , Processed in 0.077439 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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