【phpcms-v9】如何在频道页面动态显示当前频道各个子栏目的部分信息

1.案例:如何在当前频道页动态的显示其子栏目部分内容,注意,当前频道页下的子栏目可能属于不同的模型,如下:

难点:①需要在index.php控制器中获取当前频道下所有的子栏目②需要获取当前子栏目的所对应的模型 ③根据模型查询不同的模型表返回数据

注意:一个频道页可以有多个子栏目,每个子栏目又可以属于不同的模型

奢侈品牌【频道名称】

      LV【子栏目名称:品牌英文名称】

                                 品牌简介【子栏目名称:品牌模型】

                                 品牌识别【子栏目名称:文章模型】

                                 品牌图片【子栏目名称:图片模型】

                                 品牌动态【子栏目名称:文章模型】

                                品牌视频【子栏目名称:视频模型】

      BALLY【子栏目名称:品牌英文名称】

                                 品牌简介【子栏目名称:品牌模型】

                                 品牌识别【子栏目名称:文章模型】

                                 品牌图片【子栏目名称:图片模型】

                                 品牌动态【子栏目名称:文章模型】

                                品牌视频【子栏目名称:视频模型】

       。。。

 

2.前台控制器index.php中list()方法代码:

//列表页
	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
				}
			}
			
			
			
			
			
			
			
			
			
			/*以下代码为新添加代码,如果出现问题,可立即将其注释即可
			 *将当前栏目下所有的子栏目数组打印出来 
			 echo "<pre>";
			 print_r($array_child);
			*/
			foreach($array_child as $cat_id){
				if($CATEGORYS[$cat_id][catname] == "品牌动态"){
					$pinpaidongtaiid=$cat_id;
				}
				if($CATEGORYS[$cat_id][catname] == "品牌识别"){
					$pinpaishibieid=$cat_id;
				}
				if($CATEGORYS[$cat_id][catname] == "品牌视频"){
					$pinpaishipinid=$cat_id;
				}
				if($CATEGORYS[$cat_id][catname] == "品牌图集"){
					$pinpaitujiid=$cat_id;
				}
				if($CATEGORYS[$cat_id][catname] == "品牌知识"){
					$pinpaizhishiid=$cat_id;
					$modelid = $CATEGORYS[$cat_id]['modelid'];										//当前栏目所属模型id
					//当前模型id所对应的主表名称:文章模型-news ,下载模型-download , 图片模型-picture  品牌模型-pinpai
					$tablename = $this->db->table_name = $this->db->db_tablepre."pinpai";//当前模型id对应的主表名
					$r = $this->db->get_one();						//返回的主表数据,条件:where id=$id
					//当前模型id所对应的副表名
					$this->db->table_name = $tablename.'_data';						//当前模型id所对应的副表名-pinpai_data
					$r2 = $this->db->get_one(array('id'=>$r['id']));						//返回的副表数据,条件:where id=$id
					$rs = $r2 ? array_merge($r,$r2) : $r;							//如果有返回副表数据,则将主表数据与副表数据合并后再返回,否则返回主表数据
					//再次重新赋值,以数据库为准
					$cat_id = $CATEGORYS[$r['catid']]['catid'];						//栏目id
					$modelid = $CATEGORYS[$r['catid']]['modelid'];						//模型id
					require_once CACHE_MODEL_PATH.'content_output.class.php';
					$content_output = new content_output($modelid,$cat_id,$CATEGORYS);//主要用来对查询到的记录做一下过滤,仅此而已
					$data_pinpaizhishi = $content_output->get($rs);	//定位模型为品牌模型,返回pinpai及附表中的数据		//参数:查询到的数据

				}
			}
			
			
			
			
			
			
			
			
			
			
			
			
			
			$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, 0, $title,$setting['meta_description'],$keywords);
			include template('content',$template);
		}
	}


3.频道页面对应的模板文件:


<!-- 品牌右侧 -->
		<div class="pinpai_right">
			<div class="pinpaixq_tabnav">
				<img src="http://www.zhen.com/statics/images/zhenpin/pinpai_detail_images/pinpaixq_tabnav.jpg" alt="a">
			</div>
			<!--品牌动态 -->
			<div class="pinpaidt">
				<dl class="pinpaidt_top">
					<dt class="pinpaidt_font"></dt>
					<dd>
						<a href="#">更多<span></span></a>
					</dd>
				</dl>
				<!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->
				{pc:content action="lists" catid="$pinpaidongtaiid" num="3" order="id DESC"}
				{loop $data $r}
				<dl class="pinpaidt_c">
					<dt>
						<a href="{$r[url]}"><img src="{$r[thumb]}" width="141" height="106" alt="{$r[title]}"></a>
					</dt>
					<dd>
						<h3><a href="{$r[url]}">{$r[title]}</a></h3>
						<p>
							{str_cut($r[description],400,'...')}
						</p>
					</dd>
				</dl>
				{/loop}
				{/pc}
			</div>

			<!--品牌识别 -->
			<div class="pinpaishibie">
				<dl class="pinpaishibie_top">
					<dt class="pinpaishibie_font"></dt>
					<dd>
						<a href="#">更多<span></span></a>
					</dd>
				</dl>
				<!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->
				{pc:content action="lists" catid="$pinpaishibieid" num="4" order="id DESC"}
				{loop $data $r}
				<dl class="pinpaishibie_c">
					<dt>
						<a href="{$r[url]}"><img src="{$r[thumb]}" width="91" height="91" alt="{$r[title]}"></a>
					</dt>
					<dd>
						<h3><a href="{$r[url]}">{$r[title]}</a></h3>
						<p>
							{str_cut($r[description],100,'...')}
						</p>
					</dd>
				</dl>
				{/loop}
				{/pc}
			</div>
			<!-- 品牌图片-->
			<div class="pinpaitupian">
				<dl class="pinpaitupian_top">
					<dt class="pinpaitupian_font"></dt>
					<dd>
						<a href="#">更多<span></span></a>
					</dd>
				</dl>
				<ul class="pinpaitupian_c">
					<!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->
					{pc:content action="lists" catid="$pinpaitujiid" num="8" order="id DESC"}
					{loop $data $r}
					<li>
						<a href="{$r[url]}"><img src="{$r[thumb]}" width="141" height="141" alt="{$r[title]}"></a>
						<p><a href="{$r[url]}">{$r[title]}</a></p>
					</li>
					{/loop}
					{/pc}
				</ul>
			</div>	
			<!-- 品牌视频 -->
			<div class="pinpaishipin">
				<dl class="pinpaishipin_top">
					<dt class="pinpaishipin_font"></dt>
					<dd>
						<a href="#">更多<span></span></a>
					</dd>
				</dl>
				<div class="pinpaishipin_c">
					<!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->
					{pc:content action="lists" catid="$pinpaishipinid" num="3" order="id DESC"}
					{loop $data $r}
					<a href="{$r[url]}"><img src="{$r[thumb]}" width="200" height="127" alt="{$r[title]}"></a>
					{/loop}
					{/pc}
				</div>
			</div>

4.截图如下:








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值