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

//路径:phpcms/modules/content/index.php控制器

//列表页:文章列表页、图片列表页、下载列表页执行的都是这段程序

public function lists() {

$catid = intval($_GET['catid']);//栏目id

$_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;//用户id

$_username = $this->_username;//用户名

$_groupid = $this->_groupid;//用户会员组id

if(!$catid) showmessage(L('category_not_exists'),'blank');//栏目不存在

$siteids = getcache('category_content','commons');//获取所有栏目对应的站点id

$siteid = $siteids[$catid];//获取当前栏目对应的站点id

$CATEGORYS = getcache('category_content_'.$siteid,'commons');//获取当前站点下所有栏目的详细配置信息

if(!isset($CATEGORYS[$catid])) showmessage(L('category_not_exists'),'blank');

$CAT = $CATEGORYS[$catid];//获取当前栏目的详细配置信息

$siteid = $GLOBALS['siteid'] = $CAT['siteid'];//获取当前栏目的站点id

//这行代码很重要

extract($CAT);//从当前栏目详细配置信息的数组中将变量导入到当前的符号表

$setting = string2array($setting);//将设置信息转换为数组格式

//SEO

if(!$setting['meta_title']) $setting['meta_title'] = $catname;//title

$SEO = seo($siteid,'',$setting['meta_title'],$setting['meta_description'],$setting['meta_keywords']);//description

define('STYLE',$setting['template_list']);//模板风格,默认为default

$page = $_GET['page'];//当前页码

$template = $setting['category_template'] ? $setting['category_template'] : 'category';//栏目首页模板

$template_list = $setting['list_template'] ? $setting['list_template'] : 'list';//栏目列表页模板

if($type==0) {//0-内部栏目 1-单网页 2-外部链接

$template = $child ? $template : $template_list;//$child,是否有子栏目: 1-有 0-没有

$arrparentid = explode(',',$arrparentid);//当前栏目所有的父栏目组成的父栏目id数组

$top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid;//当前栏目的顶级栏目id

$array_child = array();//当前栏目下一级栏目的id组成的数组

$self_array = explode(',$arrchildid);//当前栏目的所有子栏目组成的id数组,包含当前栏目id自身

//获取一级栏目ids

foreach ($self_array as $arr) {

if($arr!=$catid && $CATEGORYS[$arr][parentid]==$catid) {

$array_child[] = $arr;//当前栏目下一级栏目id组成的数组,不包含当前栏目id

}

}

$arrchildid = implode(',$array_child);//当前栏目下一级栏目id所组成的数组

//URL规则

$urlrules = getcache('urlrules','commons');//获取所有的url重写规则

//如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'

$urlrules = str_replace('|','~',$urlrules[$category_ruleid]);//当前栏目页的url重写规则id

$tmp_urls = explode('~',$urlrules);//当前栏目页的url重写规则数组

$tmp_urls = isset($tmp_urls[1]) ? $tmp_urls[1] : $tmp_urls[0];//如果是数组,采用第一个url

preg_match_all('/{$([a-z0-9_]+)}/i',$tmp_urls,$_urls);//$_urls:正则匹配的结果赋值给此变量

/**

* print_r($_urls):匹配到的结果

* Array

(

[0] => Array

(

[0] => {$catid}

[1] => {$page}

)

[1] => Array

(

[0] => catid

[1] => page

)

)

*/

if(!empty($_urls[1])) {

foreach($_urls[1] as $_v) {

$GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v];

}

}

//如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'

define('URLRULE',$urlrules);

$GLOBALS['URL_ARRAY']['categorydir'] = $categorydir;//

$GLOBALS['URL_ARRAY']['catdir'] = $catdir;//英文栏目名称

$GLOBALS['URL_ARRAY']['catid'] = $catid;//栏目id

//此行代码可参照上一篇文章

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,$title,$keywords);

include template('content',$template);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值