【phpcms-v9】index.php文件分析-前台列表页代码分析

[html]  view plain  copy
 print ?
  1. //路径:phpcms/modules/content/index.php控制器  
  2. //列表页:文章列表页、图片列表页、下载列表页执行的都是这段程序  
  3. public function lists() {  
  4.         $catid = intval($_GET['catid']);                                    //栏目id  
  5.         $_priv_data = $this->_category_priv($catid);                     //检查阅读权限  
  6.         if($_priv_data=='-1') {                                             //请登录  
  7.             $forward = urlencode(get_url());  
  8.             showmessage(L('login_website'),APP_PATH.'index.php?m=member&c=index&a=login&forward='.$forward);  
  9.         } elseif($_priv_data=='-2') {                                       //没权限  
  10.             showmessage(L('no_priv'));  
  11.         }  
  12.         $_userid = $this->_userid;                                           //用户id  
  13.         $_username = $this->_username;                                       //用户名  
  14.         $_groupid = $this->_groupid;                                     //用户会员组id  
  15.   
  16.         if(!$catid) showmessage(L('category_not_exists'),'blank');          //栏目不存在  
  17.         $siteids = getcache('category_content','commons');                  //获取所有栏目对应的站点id  
  18.         $siteid = $siteids[$catid];                                         //获取当前栏目对应的站点id  
  19.         $CATEGORYS = getcache('category_content_'.$siteid,'commons');       //获取当前站点下所有栏目的详细配置信息  
  20.         if(!isset($CATEGORYS[$catid])) showmessage(L('category_not_exists'),'blank');  
  21.         $CAT = $CATEGORYS[$catid];                                          //获取当前栏目的详细配置信息  
  22.         $siteid = $GLOBALS['siteid'] = $CAT['siteid'];                      //获取当前栏目的站点id  
  23.         //这行代码很重要  
  24.         extract($CAT);                                                      //从当前栏目详细配置信息的数组中将变量导入到当前的符号表  
  25.         $setting = string2array($setting);                                  //将设置信息转换为数组格式  
  26.         //SEO  
  27.         if(!$setting['meta_title']) $setting['meta_title'] = $catname;      //title  
  28.         $SEO = seo($siteid, '',$setting['meta_title'],$setting['meta_description'],$setting['meta_keywords']);//description  
  29.         define('STYLE',$setting['template_list']);                          //模板风格,默认为default  
  30.         $page = $_GET['page'];                                              //当前页码  
  31.   
  32.         $template = $setting['category_template'] ? $setting['category_template'] : 'category';//栏目首页模板  
  33.         $template_list = $setting['list_template'] ? $setting['list_template'] : 'list';//栏目列表页模板  
  34.           
  35.         if($type==0) {  //0-内部栏目  1-单网页  2-外部链接  
  36.             $template = $child ? $template : $template_list;//$child,是否有子栏目: 1-有     0-没有  
  37.             $arrparentid = explode(',', $arrparentid);      //当前栏目所有的父栏目组成的父栏目id数组  
  38.             $top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid;//当前栏目的顶级栏目id  
  39.             $array_child = array();                         //当前栏目下一级栏目的id组成的数组  
  40.             $self_array = explode(',', $arrchildid);        //当前栏目的所有子栏目组成的id数组,包含当前栏目id自身  
  41.             //获取一级栏目ids  
  42.             foreach ($self_array as $arr) {  
  43.                 if($arr!=$catid && $CATEGORYS[$arr][parentid]==$catid) {  
  44.                     $array_child[] = $arr;//当前栏目下一级栏目id组成的数组,不包含当前栏目id  
  45.                 }  
  46.             }  
  47.             $arrchildid = implode(',', $array_child);//当前栏目下一级栏目id所组成的数组  
  48.             //URL规则  
  49.             $urlrules = getcache('urlrules','commons');//获取所有的url重写规则  
  50.             //如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'  
  51.             $urlrules = str_replace('|', '~',$urlrules[$category_ruleid]);//当前栏目页的url重写规则id  
  52.             $tmp_urls = explode('~',$urlrules);//当前栏目页的url重写规则数组  
  53.             $tmp_urls = isset($tmp_urls[1]) ?  $tmp_urls[1] : $tmp_urls[0];//如果是数组,采用第一个url  
  54.             preg_match_all('/{\$([a-z0-9_]+)}/i',$tmp_urls,$_urls);//$_urls:正则匹配的结果赋值给此变量  
  55.             /**  
  56.              * print_r($_urls):匹配到的结果  
  57.              * Array  
  58.                 (  
  59.                     [0] => Array  
  60.                         (  
  61.                             [0] => {$catid}  
  62.                             [1] => {$page}  
  63.                         )  
  64.                   
  65.                     [1] => Array  
  66.                         (  
  67.                             [0] => catid  
  68.                             [1] => page  
  69.                         )  
  70.                   
  71.                 )  
  72.              */  
  73.             if(!empty($_urls[1])) {  
  74.                 foreach($_urls[1] as $_v) {  
  75.                     $GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v];  
  76.                 }  
  77.             }  
  78.             //如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'  
  79.             define('URLRULE', $urlrules);  
  80.             $GLOBALS['URL_ARRAY']['categorydir'] = $categorydir;//  
  81.             $GLOBALS['URL_ARRAY']['catdir'] = $catdir;//英文栏目名称  
  82.             $GLOBALS['URL_ARRAY']['catid'] = $catid;//栏目id  
  83.                         //此行代码可参照上一篇文章  
  84.                         include template('content',$template);//如果有子栏目-栏目首页模板   如果无子栏目-栏目列表页模板  
  85.     } else {  
  86.         //单网页  
  87.             $this->page_db = pc_base::load_model('page_model');  
  88.             $r = $this->page_db->get_one(array('catid'=>$catid));  
  89.             if($r) extract($r);  
  90.             $template = $setting['page_template'] ? $setting['page_template'] : 'page';  
  91.             $arrchild_arr = $CATEGORYS[$parentid]['arrchildid'];  
  92.             if($arrchild_arr=='') $arrchild_arr = $CATEGORYS[$catid]['arrchildid'];  
  93.             $arrchild_arr = explode(',',$arrchild_arr);  
  94.             array_shift($arrchild_arr);  
  95.             $keywords = $keywords ? $keywords : $setting['meta_keywords'];  
  96.             $SEO = seo($siteid, 0, $title,$setting['meta_description'],$keywords);  
  97.             include template('content',$template);  
  98.     }  
  99. }  
[html]  view plain  copy
 print ?
  1. //路径:phpcms/modules/content/index.php控制器  
  2. //列表页:文章列表页、图片列表页、下载列表页执行的都是这段程序  
  3. public function lists() {  
  4.         $catid = intval($_GET['catid']);                                    //栏目id  
  5.         $_priv_data = $this->_category_priv($catid);                     //检查阅读权限  
  6.         if($_priv_data=='-1') {                                             //请登录  
  7.             $forward = urlencode(get_url());  
  8.             showmessage(L('login_website'),APP_PATH.'index.php?m=member&c=index&a=login&forward='.$forward);  
  9.         } elseif($_priv_data=='-2') {                                       //没权限  
  10.             showmessage(L('no_priv'));  
  11.         }  
  12.         $_userid = $this->_userid;                                           //用户id  
  13.         $_username = $this->_username;                                       //用户名  
  14.         $_groupid = $this->_groupid;                                     //用户会员组id  
  15.   
  16.         if(!$catid) showmessage(L('category_not_exists'),'blank');          //栏目不存在  
  17.         $siteids = getcache('category_content','commons');                  //获取所有栏目对应的站点id  
  18.         $siteid = $siteids[$catid];                                         //获取当前栏目对应的站点id  
  19.         $CATEGORYS = getcache('category_content_'.$siteid,'commons');       //获取当前站点下所有栏目的详细配置信息  
  20.         if(!isset($CATEGORYS[$catid])) showmessage(L('category_not_exists'),'blank');  
  21.         $CAT = $CATEGORYS[$catid];                                          //获取当前栏目的详细配置信息  
  22.         $siteid = $GLOBALS['siteid'] = $CAT['siteid'];                      //获取当前栏目的站点id  
  23.         //这行代码很重要  
  24.         extract($CAT);                                                      //从当前栏目详细配置信息的数组中将变量导入到当前的符号表  
  25.         $setting = string2array($setting);                                  //将设置信息转换为数组格式  
  26.         //SEO  
  27.         if(!$setting['meta_title']) $setting['meta_title'] = $catname;      //title  
  28.         $SEO = seo($siteid, '',$setting['meta_title'],$setting['meta_description'],$setting['meta_keywords']);//description  
  29.         define('STYLE',$setting['template_list']);                          //模板风格,默认为default  
  30.         $page = $_GET['page'];                                              //当前页码  
  31.   
  32.         $template = $setting['category_template'] ? $setting['category_template'] : 'category';//栏目首页模板  
  33.         $template_list = $setting['list_template'] ? $setting['list_template'] : 'list';//栏目列表页模板  
  34.           
  35.         if($type==0) {  //0-内部栏目  1-单网页  2-外部链接  
  36.             $template = $child ? $template : $template_list;//$child,是否有子栏目: 1-有     0-没有  
  37.             $arrparentid = explode(',', $arrparentid);      //当前栏目所有的父栏目组成的父栏目id数组  
  38.             $top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid;//当前栏目的顶级栏目id  
  39.             $array_child = array();                         //当前栏目下一级栏目的id组成的数组  
  40.             $self_array = explode(',', $arrchildid);        //当前栏目的所有子栏目组成的id数组,包含当前栏目id自身  
  41.             //获取一级栏目ids  
  42.             foreach ($self_array as $arr) {  
  43.                 if($arr!=$catid && $CATEGORYS[$arr][parentid]==$catid) {  
  44.                     $array_child[] = $arr;//当前栏目下一级栏目id组成的数组,不包含当前栏目id  
  45.                 }  
  46.             }  
  47.             $arrchildid = implode(',', $array_child);//当前栏目下一级栏目id所组成的数组  
  48.             //URL规则  
  49.             $urlrules = getcache('urlrules','commons');//获取所有的url重写规则  
  50.             //如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'  
  51.             $urlrules = str_replace('|', '~',$urlrules[$category_ruleid]);//当前栏目页的url重写规则id  
  52.             $tmp_urls = explode('~',$urlrules);//当前栏目页的url重写规则数组  
  53.             $tmp_urls = isset($tmp_urls[1]) ?  $tmp_urls[1] : $tmp_urls[0];//如果是数组,采用第一个url  
  54.             preg_match_all('/{\$([a-z0-9_]+)}/i',$tmp_urls,$_urls);//$_urls:正则匹配的结果赋值给此变量  
  55.             /**  
  56.              * print_r($_urls):匹配到的结果  
  57.              * Array  
  58.                 (  
  59.                     [0] => Array  
  60.                         (  
  61.                             [0] => {$catid}  
  62.                             [1] => {$page}  
  63.                         )  
  64.                   
  65.                     [1] => Array  
  66.                         (  
  67.                             [0] => catid  
  68.                             [1] => page  
  69.                         )  
  70.                   
  71.                 )  
  72.              */  
  73.             if(!empty($_urls[1])) {  
  74.                 foreach($_urls[1] as $_v) {  
  75.                     $GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v];  
  76.                 }  
  77.             }  
  78.             //如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'  
  79.             define('URLRULE', $urlrules);  
  80.             $GLOBALS['URL_ARRAY']['categorydir'] = $categorydir;//  
  81.             $GLOBALS['URL_ARRAY']['catdir'] = $catdir;//英文栏目名称  
  82.             $GLOBALS['URL_ARRAY']['catid'] = $catid;//栏目id  
  83.                         //此行代码可参照上一篇文章  
  84.                         include template('content',$template);//如果有子栏目-栏目首页模板   如果无子栏目-栏目列表页模板  
  85.     } else {  
  86.         //单网页  
  87.             $this->page_db = pc_base::load_model('page_model');  
  88.             $r = $this->page_db->get_one(array('catid'=>$catid));  
  89.             if($r) extract($r);  
  90.             $template = $setting['page_template'] ? $setting['page_template'] : 'page';  
  91.             $arrchild_arr = $CATEGORYS[$parentid]['arrchildid'];  
  92.             if($arrchild_arr=='') $arrchild_arr = $CATEGORYS[$catid]['arrchildid'];  
  93.             $arrchild_arr = explode(',',$arrchild_arr);  
  94.             array_shift($arrchild_arr);  
  95.             $keywords = $keywords ? $keywords : $setting['meta_keywords'];  
  96.             $SEO = seo($siteid, 0, $title,$setting['meta_description'],$keywords);  
  97.             include template('content',$template);  
  98.     }  
  99. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值