phpcms套手機端時先替換的檔案
阿新 • • 發佈:2018-11-29
在modules->content->替換掉這個index.php檔案
檔案如下:
<?php defined('IN_PHPCMS') or exit('No permission resources.'); //模型快取路徑 define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR); pc_base::load_app_func('util','content'); class index { private $db; function __construct() { $this->db = pc_base::load_model('content_model'); $this->_userid = param::get_cookie('_userid'); $this->_username = param::get_cookie('_username'); $this->_groupid = param::get_cookie('_groupid'); } //首頁 public function init() { if(isset($_GET['siteid'])) { $siteid = intval($_GET['siteid']); } else { $siteid = 1; } $siteid = $GLOBALS['siteid'] = max($siteid,1); define('SITEID', $siteid); $_userid = $this->_userid; $_username = $this->_username; $_groupid = $this->_groupid; //SEO $SEO = seo($siteid); $sitelist = getcache('sitelist','commons'); $default_style = $sitelist[$siteid]['default_style']; $CATEGORYS = getcache('category_content_'.$siteid,'commons'); /*判斷客戶端*/ if(substr($_SERVER['SERVER_NAME'], 0,1) == 'm'){ include template('content_m','index',$default_style); }elseif(stristr($_SERVER['HTTP_VIA'],"wap")){// 先檢查是否為wap代理,準確度高 include template('content_m','index',$default_style); }elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){// 檢查瀏覽器是否接受 WML. include template('content_m','index',$default_style); }elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){//檢查USER_AGENT include template('content_m','index',$default_style); }else{ include template('content','index',$default_style); } } //內容頁 public function show() { $catid = intval($_GET['catid']); $id = intval($_GET['id']); if(!$catid || !$id) showmessage(L('information_does_not_exist'),'blank'); $_userid = $this->_userid; $_username = $this->_username; $_groupid = $this->_groupid; $page = intval($_GET['page']); $page = max($page,1); $siteids = getcache('category_content','commons'); $siteid = $siteids[$catid]; $CATEGORYS = getcache('category_content_'.$siteid,'commons'); if(!isset($CATEGORYS[$catid]) || $CATEGORYS[$catid]['type']!=0) showmessage(L('information_does_not_exist'),'blank'); $this->category = $CAT = $CATEGORYS[$catid]; $this->category_setting = $CAT['setting'] = string2array($this->category['setting']); $siteid = $GLOBALS['siteid'] = $CAT['siteid']; $MODEL = getcache('model','commons'); $modelid = $CAT['modelid']; $tablename = $this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid]['tablename']; $r = $this->db->get_one(array('id'=>$id)); if(!$r || $r['status'] != 99) showmessage(L('info_does_not_exists'),'blank'); $this->db->table_name = $tablename.'_data'; $r2 = $this->db->get_one(array('id'=>$id)); $rs = $r2 ? array_merge($r,$r2) : $r; //再次重新賦值,以資料庫為準 $catid = $CATEGORYS[$r['catid']]['catid']; $modelid = $CATEGORYS[$catid]['modelid']; require_once CACHE_MODEL_PATH.'content_output.class.php'; $content_output = new content_output($modelid,$catid,$CATEGORYS); $data = $content_output->get($rs); extract($data); //檢查文章會員組許可權 if($groupids_view && is_array($groupids_view)) { $_groupid = param::get_cookie('_groupid'); $_groupid = intval($_groupid); if(!$_groupid) { $forward = urlencode(get_url()); showmessage(L('login_website'),APP_PATH.'index.php?m=member&c=index&a=login&forward='.$forward); } if(!in_array($_groupid,$groupids_view)) showmessage(L('no_priv')); } else { //根據欄目訪問許可權判斷許可權 $_priv_data = $this->_category_priv($catid); if($_priv_data=='-1') { $forward = urlencode(get_url()); showmessage(L('login_website'),APP_PATH.'index.php?m=member&c=index&a=login&forward='.$forward); } elseif($_priv_data=='-2') { showmessage(L('no_priv')); } } if(module_exists('comment')) { $allow_comment = isset($allow_comment) ? $allow_comment : 1; } else { $allow_comment = 0; } //閱讀收費 型別 $paytype = $rs['paytype']; $readpoint = $rs['readpoint']; $allow_visitor = 1; if($readpoint || $this->category_setting['defaultchargepoint']) { if(!$readpoint) { $readpoint = $this->category_setting['defaultchargepoint']; $paytype = $this->category_setting['paytype']; } //檢查是否支付過 $allow_visitor = self::_check_payment($catid.'_'.$id,$paytype); if(!$allow_visitor) { $http_referer = urlencode(get_url()); $allow_visitor = sys_auth($catid.'_'.$id.'|'.$readpoint.'|'.$paytype).'&http_referer='.$http_referer; } else { $allow_visitor = 1; } } //最頂級欄目ID $arrparentid = explode(',', $CAT['arrparentid']); $top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid; $template = $template ? $template : $CAT['setting']['show_template']; if(!$template) $template = 'show'; //SEO $seo_keywords = ''; if(!empty($keywords)) $seo_keywords = implode(',',$keywords); $SEO = seo($siteid, $catid, $title, $description, $seo_keywords); define('STYLE',$CAT['setting']['template_list']); if(isset($rs['paginationtype'])) { $paginationtype = $rs['paginationtype']; $maxcharperpage = $rs['maxcharperpage']; } $pages = $titles = ''; if($rs['paginationtype']==1) { //自動分頁 if($maxcharperpage < 10) $maxcharperpage = 500; $contentpage = pc_base::load_app_class('contentpage'); $content = $contentpage->get_data($content,$maxcharperpage); } if($rs['paginationtype']!=0) { //手動分頁 $CONTENT_POS = strpos($content, '[page]'); if($CONTENT_POS !== false) { $this->url = pc_base::load_app_class('url', 'content'); $contents = array_filter(explode('[page]', $content)); $pagenumber = count($contents); if (strpos($content, '[/page]')!==false && ($CONTENT_POS<7)) { $pagenumber--; } for($i=1; $i<=$pagenumber; $i++) { $pageurls[$i] = $this->url->show($id, $i, $catid, $rs['inputtime']); } $END_POS = strpos($content, '[/page]'); if($END_POS !== false) { if($CONTENT_POS>7) { $content = '[page]'.$title.'[/page]'.$content; } if(preg_match_all("|\[page\](.*)\[/page\]|U", $content, $m, PREG_PATTERN_ORDER)) { foreach($m[1] as $k=>$v) { $p = $k+1; $titles[$p]['title'] = strip_tags($v); $titles[$p]['url'] = $pageurls[$p][0]; } } } //當不存在 [/page]時,則使用下面分頁 $pages = content_pages($pagenumber,$page, $pageurls); //判斷[page]出現的位置是否在第一位 if($CONTENT_POS<7) { $content = $contents[$page]; } else { if ($page==1 && !empty($titles)) { $content = $title.'[/page]'.$contents[$page-1]; } else { $content = $contents[$page-1]; } } if($titles) { list($title, $content) = explode('[/page]', $content); $content = trim($content); if(strpos($content,'</p>')===0) { $content = '<p>'.$content; } if(stripos($content,'<p>')===0) { $content = $content.'</p>'; } } } } $this->db->table_name = $tablename; //上一頁 $previous_page = $this->db->get_one("`catid` = '$catid' AND `id`<'$id' AND `status`=99",'*','id DESC'); //下一頁 $next_page = $this->db->get_one("`catid`= '$catid' AND `id`>'$id' AND `status`=99"); if(empty($previous_page)) { $previous_page = array('title'=>L('first_page'), 'thumb'=>IMG_PATH.'nopic_small.gif', 'url'=>'javascript:alert(\''.L('first_page').'\');'); } if(empty($next_page)) { $next_page = array('title'=>L('last_page'), 'thumb'=>IMG_PATH.'nopic_small.gif', 'url'=>'javascript:alert(\''.L('last_page').'\');'); } /*判斷客戶端*/ if(substr($_SERVER['SERVER_NAME'], 0,1) == 'm'){ include template('content_m',$template); }elseif(stristr($_SERVER['HTTP_VIA'],"wap")){// 先檢查是否為wap代理,準確度高 include template('content_m',$template); }elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){// 檢查瀏覽器是否接受 WML. include template('content_m',$template); }elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){//檢查USER_AGENT include template('content_m',$template); }else{ include template('content',$template); } } //列表頁 public function lists() { $catid = $_GET['catid'] = intval($_GET['catid']); $_priv_data = $this->_category_priv($catid); if($_priv_data=='-1') { $forward = urlencode(get_url()); showmessage(L('login_website'),APP_PATH.'index.php?m=member&c=index&a=login&forward='.$forward); } elseif($_priv_data=='-2') { showmessage(L('no_priv')); } $_userid = $this->_userid; $_username = $this->_username; $_groupid = $this->_groupid; if(!$catid) showmessage(L('category_not_exists'),'blank'); $siteids = getcache('category_content','commons'); $siteid = $siteids[$catid]; $CATEGORYS = getcache('category_content_'.$siteid,'commons'); if(!isset($CATEGORYS[$catid])) showmessage(L('category_not_exists'),'blank'); $CAT = $CATEGORYS[$catid]; $siteid = $GLOBALS['siteid'] = $CAT['siteid']; extract($CAT); $setting = string2array($setting); //SEO if(!$setting['meta_title']) $setting['meta_title'] = $catname; $SEO = seo($siteid, '',$setting['meta_title'],$setting['meta_description'],$setting['meta_keywords']); define('STYLE',$setting['template_list']); $page = intval($_GET['page']); $template = $setting['category_template'] ? $setting['category_template'] : 'category'; $template_list = $setting['list_template'] ? $setting['list_template'] : 'list'; if($type==0) { $template = $child ? $template : $template_list; $arrparentid = explode(',', $arrparentid); $top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid; $array_child = array(); $self_array = explode(',', $arrchildid); //獲取一級欄目ids foreach ($self_array as $arr) { if($arr!=$catid && $CATEGORYS[$arr][parentid]==$catid) { $array_child[] = $arr; } } $arrchildid = implode(',', $array_child); //URL規則 $urlrules = getcache('urlrules','commons'); $urlrules = str_replace('|', '~',$urlrules[$category_ruleid]); $tmp_urls = explode('~',$urlrules); $tmp_urls = isset($tmp_urls[1]) ? $tmp_urls[1] : $tmp_urls[0]; preg_match_all('/{\$([a-z0-9_]+)}/i',$tmp_urls,$_urls); if(!empty($_urls[1])) { foreach($_urls[1] as $_v) { $GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v]; } } define('URLRULE', $urlrules); $GLOBALS['URL_ARRAY']['categorydir'] = $categorydir; $GLOBALS['URL_ARRAY']['catdir'] = $catdir; $GLOBALS['URL_ARRAY']['catid'] = $catid; /*判斷客戶端*/ if(substr($_SERVER['SERVER_NAME'], 0,1) == 'm'){ include template('content_m',$template); }elseif(stristr($_SERVER['HTTP_VIA'],"wap")){// 先檢查是否為wap代理,準確度高 include template('content_m',$template); }elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){// 檢查瀏覽器是否接受 WML. include template('content_m',$template); }elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){//檢查USER_AGENT include template('content_m',$template); }else{ include template('content',$template); } } else { //單網頁 $this->page_db = pc_base::load_model('page_model'); $r = $this->page_db->get_one(array('catid'=>$catid)); if($r) extract($r); $template = $setting['page_template'] ? $setting['page_template'] : 'page'; $arrchild_arr = $CATEGORYS[$parentid]['arrchildid']; if($arrchild_arr=='') $arrchild_arr = $CATEGORYS[$catid]['arrchildid']; $arrchild_arr = explode(',',$arrchild_arr); array_shift($arrchild_arr); $keywords = $keywords ? $keywords : $setting['meta_keywords']; $SEO = seo($siteid, 0, $title,$setting['meta_description'],$keywords); /*判斷客戶端*/ if(substr($_SERVER['SERVER_NAME'], 0,1) == 'm'){ include template('content_m',$template); }elseif(stristr($_SERVER['HTTP_VIA'],"wap")){// 先檢查是否為wap代理,準確度高 include template('content_m',$template); }elseif(strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0){// 檢查瀏覽器是否接受 WML. include template('content_m',$template); }elseif(preg_match('/(blackberry|configuration\/cldc|hp |hp-|htc |htc_|htc-|iemobile|kindle|midp|mmp|motorola|mobile|nokia|opera mini|opera |Googlebot-Mobile|YahooSeeker\/M1A1-R2D2|android|iphone|ipod|mobi|palm|palmos|pocket|portalmmm|ppc;|smartphone|sonyericsson|sqh|spv|symbian|treo|up.browser|up.link|vodafone|windows ce|xda |xda_)/i', $_SERVER['HTTP_USER_AGENT'])){//檢查USER_AGENT include template('content_m',$template); }else{ include template('content',$template); } } } //JSON 輸出 public function json_list() { if($_GET['type']=='keyword' && $_GET['modelid'] && $_GET['keywords']) { //根據關鍵字搜尋 $modelid = intval($_GET['modelid']); $id = intval($_GET['id']); $MODEL = getcache('model','commons'); if(isset($MODEL[$modelid])) { $keywords = safe_replace(new_html_special_chars($_GET['keywords'])); $keywords = addslashes(iconv('utf-8','gbk',$keywords)); $this->db->set_model($modelid); $result = $this->db->select("keywords LIKE '%$keywords%'",'id,title,url',10); if(!empty($result)) { $data = array(); foreach($result as $rs) { if($rs['id']==$id) continue; if(CHARSET=='gbk') { foreach($rs as $key=>$r) { $rs[$key] = iconv('gbk','utf-8',$r); } } $data[] = $rs; } if(count($data)==0) exit('0'); echo json_encode($data); } else { //沒有資料 exit('0'); } } } } /** * 檢查支付狀態 */ protected function _check_payment($flag,$paytype) { $_userid = $this->_userid; $_username = $this->_username; if(!$_userid) return false; pc_base::load_app_class('spend','pay',0); $setting = $this->category_setting; $repeatchargedays = intval($setting['repeatchargedays']); if($repeatchargedays) { $fromtime = SYS_TIME - 86400 * $repeatchargedays; $r = spend::spend_time($_userid,$fromtime,$flag); if($r['id']) return true; } return false; } /** * 檢查閱讀許可權 * */ protected function _category_priv($catid) { $catid = intval($catid); if(!$catid) return '-2'; $_groupid = $this->_groupid; $_groupid = intval($_groupid); if($_groupid==0) $_groupid = 8; $this->category_priv_db = pc_base::load_model('category_priv_model'); $result = $this->category_priv_db->select(array('catid'=>$catid,'is_admin'=>0,'action'=>'visit')); if($result) { if(!$_groupid) return '-1'; foreach($result as $r) { if($r['roleid'] == $_groupid) return '1'; } return '-2'; } else { return '1'; } } }?>