首页 > CMS > PhpCMS > 正文

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

2024-09-10 07:15:49
字体:
来源:转载
供稿:网友

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

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

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

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

  1. 奢侈品牌【频道名称】 
  2.       LV【子栏目名称:品牌英文名称】 
  3.                                  品牌简介【子栏目名称:品牌模型】 
  4.                                  品牌识别【子栏目名称:文章模型】 
  5.                                  品牌图片【子栏目名称:图片模型】 
  6.                                  品牌动态【子栏目名称:文章模型】 
  7.                                 品牌视频【子栏目名称:视频模型】 
  8.       BALLY【子栏目名称:品牌英文名称】 
  9.                                  品牌简介【子栏目名称:品牌模型】 
  10.                                  品牌识别【子栏目名称:文章模型】 
  11.                                  品牌图片【子栏目名称:图片模型】 
  12.                                  品牌动态【子栏目名称:文章模型】 
  13.                                 品牌视频【子栏目名称:视频模型】 
  14.        。。。 

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

  1. //列表页   
  2.     public function lists() {   
  3.         $catid = intval($_GET['catid']);                                    //栏目id   
  4.         $_priv_data = $this->_category_priv($catid);                     //检查阅读权限   
  5.         if($_priv_data=='-1') {                                             //请登录   
  6.             $forward = urlencode(get_url());   
  7.             showmessage(L('login_website'),APP_PATH.'index.php?m=member&c=index&a=login&forward='.$forward);   
  8.         } elseif($_priv_data=='-2') {                                       //没权限   
  9.             showmessage(L('no_priv'));   
  10.         }   
  11.         $_userid = $this->_userid;                                           //用户id   
  12.         $_username = $this->_username;                                       //用户名   
  13.         $_groupid = $this->_groupid;                                     //用户会员组id   
  14.    
  15.         if(!$catid) showmessage(L('category_not_exists'),'blank');          //栏目不存在   
  16.         $siteids = getcache('category_content','commons');                  //获取所有栏目对应的站点id   
  17.         $siteid = $siteids[$catid];                                         //获取当前栏目对应的站点id   
  18.         $CATEGORYS = getcache('category_content_'.$siteid,'commons');       //获取当前站点下所有栏目的详细配置信息   
  19.         if(!isset($CATEGORYS[$catid])) showmessage(L('category_not_exists'),'blank');   
  20.         $CAT = $CATEGORYS[$catid];                                          //获取当前栏目的详细配置信息   
  21.         $siteid = $GLOBALS['siteid'] = $CAT['siteid'];                      //获取当前栏目的站点id   
  22.         //这行代码很重要   
  23.         extract($CAT);                                                      //从当前栏目详细配置信息的数组中将变量导入到当前的符号表   
  24.         $setting = string2array($setting);                                  //将设置信息转换为数组格式   
  25.         //SEO   
  26.         if(!$setting['meta_title']) $setting['meta_title'] = $catname;      //title   
  27.         $SEO = seo($siteid'',$setting['meta_title'],$setting['meta_description'],$setting['meta_keywords']);//description   
  28.         define('STYLE',$setting['template_list']);                          //模板风格,默认为default   
  29.         $page = $_GET['page'];                                              //当前页码   
  30.    
  31.         $template = $setting['category_template'] ? $setting['category_template'] : 'category';//栏目首页模板   
  32.         $template_list = $setting['list_template'] ? $setting['list_template'] : 'list';//栏目列表页模板   
  33.            
  34.         if($type==0) {  //0-内部栏目  1-单网页  2-外部链接   
  35.             $template = $child ? $template : $template_list;//$child,是否有子栏目: 1-有     0-没有   
  36.             $arrparentid = explode(','$arrparentid);      //当前栏目所有的父栏目组成的父栏目id数组   
  37.             $top_parentid = $arrparentid[1] ? $arrparentid[1] : $catid;//当前栏目的顶级栏目id   
  38.             $array_child = array();                         //当前栏目下一级栏目的id组成的数组   
  39.             $self_array = explode(','$arrchildid);        //当前栏目的所有子栏目组成的id数组,包含当前栏目id自身   
  40.             //获取一级栏目ids   
  41.             foreach ($self_array as $arr) {   
  42.                 if($arr!=$catid && $CATEGORYS[$arr][parentid]==$catid) {   
  43.                     $array_child[] = $arr;//当前栏目下一级栏目id组成的数组,不包含当前栏目id   
  44.                 }   
  45.             }   
  46.                
  47.             /*以下代码为新添加代码,如果出现问题,可立即将其注释即可  
  48.              *将当前栏目下所有的子栏目数组打印出来   
  49.              echo "<pre>";  
  50.              print_r($array_child);  
  51.             */   
  52.             foreach($array_child as $cat_id){   
  53.                 if($CATEGORYS[$cat_id][catname] == "品牌动态"){   
  54.                     $pinpaidongtaiid=$cat_id;   
  55.                 }   
  56.                 if($CATEGORYS[$cat_id][catname] == "品牌识别"){   
  57.                     $pinpaishibieid=$cat_id;   
  58.                 }   
  59.                 if($CATEGORYS[$cat_id][catname] == "品牌视频"){   
  60.                     $pinpaishipinid=$cat_id;   
  61.                 }   
  62.                 if($CATEGORYS[$cat_id][catname] == "品牌图集"){   
  63.                     $pinpaitujiid=$cat_id;   
  64.                 }   
  65.                 if($CATEGORYS[$cat_id][catname] == "品牌知识"){   
  66.                     $pinpaizhishiid=$cat_id;   
  67.                     $modelid = $CATEGORYS[$cat_id]['modelid'];                                      //当前栏目所属模型id   
  68.                     //当前模型id所对应的主表名称:文章模型-news ,下载模型-download , 图片模型-picture  品牌模型-pinpai   
  69.                     $tablename = $this->db->table_name = $this->db->db_tablepre."pinpai";//当前模型id对应的主表名   
  70.                     $r = $this->db->get_one();                        //返回的主表数据,条件:where id=$id   
  71.                     //当前模型id所对应的副表名   
  72.                     $this->db->table_name = $tablename.'_data';                       //当前模型id所对应的副表名-pinpai_data   
  73.                     $r2 = $this->db->get_one(array('id'=>$r['id']));                       //返回的副表数据,条件:where id=$id   
  74.                     $rs = $r2 ? array_merge($r,$r2) : $r;                           //如果有返回副表数据,则将主表数据与副表数据合并后再返回,否则返回主表数据   
  75.                     //再次重新赋值,以数据库为准   
  76.                     $cat_id = $CATEGORYS[$r['catid']]['catid'];                     //栏目id   
  77.                     $modelid = $CATEGORYS[$r['catid']]['modelid'];                      //模型id   
  78.                     require_once CACHE_MODEL_PATH.'content_output.class.php';   
  79.                     $content_output = new content_output($modelid,$cat_id,$CATEGORYS);//主要用来对查询到的记录做一下过滤,仅此而已   
  80.                     $data_pinpaizhishi = $content_output->get($rs);  //定位模型为品牌模型,返回pinpai及附表中的数据     //参数:查询到的数据   
  81.    
  82.                 }   
  83.             } 
  84.                
  85.             $arrchildid = implode(','$array_child);//当前栏目下一级栏目id所组成的数组   
  86.             //URL规则   
  87.             $urlrules = getcache('urlrules','commons');//获取所有的url重写规则   
  88.             //如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'   
  89.             $urlrules = str_replace('|''~',$urlrules[$category_ruleid]);//当前栏目页的url重写规则id   
  90.             $tmp_urls = explode('~',$urlrules);//当前栏目页的url重写规则数组   
  91.             $tmp_urls = isset($tmp_urls[1]) ?  $tmp_urls[1] : $tmp_urls[0];//如果是数组,采用第一个url   
  92.             preg_match_all('/{/$([a-z0-9_]+)}/i',$tmp_urls,$_urls);//$_urls:正则匹配的结果赋值给此变量   
  93.             /**  
  94.              * print_r($_urls):匹配到的结果  
  95.              * Array  
  96.                 (  
  97.                     [0] => Array  
  98.                         (  
  99.                             [0] => {$catid}  
  100.                             [1] => {$page}  
  101.                         )  
  102.                   
  103.                     [1] => Array  
  104.                         (  
  105.                             [0] => catid  
  106.                             [1] => page  
  107.                         )  
  108.                   
  109.                 )  
  110.              */   
  111.             if(!emptyempty($_urls[1])) {   
  112.                 foreach($_urls[1] as $_v) {   
  113.                     $GLOBALS['URL_ARRAY'][$_v] = $_GET[$_v];   
  114.                 }   
  115.             }   
  116.             //如: 1 => '{$categorydir}{$catdir}/index.html|{$categorydir}{$catdir}/{$page}.html'   
  117.             define('URLRULE'$urlrules);   
  118.             $GLOBALS['URL_ARRAY']['categorydir'] = $categorydir;//   
  119.             $GLOBALS['URL_ARRAY']['catdir'] = $catdir;//英文栏目名称   
  120.             $GLOBALS['URL_ARRAY']['catid'] = $catid;//栏目id   
  121.             include template('content',$template);//如果有子栏目-栏目首页模板   如果无子栏目-栏目列表页模板   
  122.         } else {   
  123.         //单网页   
  124.             $this->page_db = pc_base::load_model('page_model');   
  125.             $r = $this->page_db->get_one(array('catid'=>$catid));   
  126.             if($r) extract($r);   
  127.             $template = $setting['page_template'] ? $setting['page_template'] : 'page';   
  128.             $arrchild_arr = $CATEGORYS[$parentid]['arrchildid'];   
  129.             if($arrchild_arr==''$arrchild_arr = $CATEGORYS[$catid]['arrchildid'];   //开源软件:Vevb.com 
  130.             $arrchild_arr = explode(',',$arrchild_arr);   
  131.             array_shift($arrchild_arr);   
  132.             $keywords = $keywords ? $keywords : $setting['meta_keywords'];   
  133.             $SEO = seo($siteid, 0, $title,$setting['meta_description'],$keywords);   
  134.             include template('content',$template);   
  135.         }   
  136.     }   

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

  1. <!-- 品牌右侧 -->   
  2.         <div class="pinpai_right">   
  3.             <div class="pinpaixq_tabnav">   
  4.                 <img src="http://www.Vevb.com/statics/images/zhenpin/pinpai_detail_images/pinpaixq_tabnav.jpg" alt="a">   
  5.             </div>   
  6.             <!--品牌动态 -->   
  7.             <div class="pinpaidt">   
  8.                 <dl class="pinpaidt_top">   
  9.                     <dt class="pinpaidt_font"></dt>   
  10.                     <dd>   
  11.                         <a href="#">更多<span></span></a>   
  12.                     </dd>   
  13.                 </dl>   
  14.                 <!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->   
  15.                 {pc:content action="lists" catid="$pinpaidongtaiid" num="3" order="id DESC"}   
  16.                 {loop $data $r}   
  17.                 <dl class="pinpaidt_c">   
  18.                     <dt>   
  19.                         <a href="{$r[url]}"><img src="{$r[thumb]}" width="141" height="106" alt="{$r[title]}"></a>   
  20.                     </dt>   
  21.                     <dd>   
  22.                         <h3><a href="{$r[url]}">{$r[title]}</a></h3>   
  23.                         <p>   
  24.                             {str_cut($r[description],400,'...')}   
  25.                         </p>   
  26.                     </dd>   
  27.                 </dl>   
  28.                 {/loop}   
  29.                 {/pc}   
  30.             </div>   
  31.    
  32.             <!--品牌识别 -->   
  33.             <div class="pinpaishibie">   
  34.                 <dl class="pinpaishibie_top">   
  35.                     <dt class="pinpaishibie_font"></dt>   
  36.                     <dd>   
  37.                         <a href="#">更多<span></span></a>   
  38.                     </dd>   
  39.                 </dl>   
  40.                 <!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->   
  41.                 {pc:content action="lists" catid="$pinpaishibieid" num="4" order="id DESC"}   
  42.                 {loop $data $r}   
  43.                 <dl class="pinpaishibie_c">   
  44.                     <dt>   
  45.                         <a href="{$r[url]}"><img src="{$r[thumb]}" width="91" height="91" alt="{$r[title]}"></a>   
  46.                     </dt>   
  47.                     <dd>   
  48.                         <h3><a href="{$r[url]}">{$r[title]}</a></h3>   
  49.                         <p>   
  50.                             {str_cut($r[description],100,'...')}   
  51.                         </p>   
  52.                     </dd>   
  53.                 </dl>   
  54.                 {/loop}   
  55.                 {/pc}   
  56.             </div>   
  57.             <!-- 品牌图片-->   
  58.             <div class="pinpaitupian">   
  59.                 <dl class="pinpaitupian_top">   
  60.                     <dt class="pinpaitupian_font"></dt>   
  61.                     <dd>   
  62.                         <a href="#">更多<span></span></a>   
  63.                     </dd>   
  64.                 </dl>   
  65.                 <ul class="pinpaitupian_c">   
  66.                     <!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->   
  67.                     {pc:content action="lists" catid="$pinpaitujiid" num="8" order="id DESC"}   
  68.                     {loop $data $r}   
  69.                     <li>   
  70.                         <a href="{$r[url]}"><img src="{$r[thumb]}" width="141" height="141" alt="{$r[title]}"></a>   
  71.                         <p><a href="{$r[url]}">{$r[title]}</a></p>   
  72.                     </li>   
  73.                     {/loop}   
  74.                     {/pc}   
  75.                 </ul>   
  76.             </div>       
  77.             <!-- 品牌视频 -->   
  78.             <div class="pinpaishipin">   
  79.                 <dl class="pinpaishipin_top">   
  80.                     <dt class="pinpaishipin_font"></dt>   
  81.                     <dd>   
  82.                         <a href="#">更多<span></span></a>   
  83.                     </dd>   
  84.                 </dl>   
  85.                 <div class="pinpaishipin_c">   
  86.                     <!-- pc标签会根据content_tag.class.php文件中接受到的catid参数的值重新定位模型及要查询的模型表 -->   
  87.                     {pc:content action="lists" catid="$pinpaishipinid" num="3" order="id DESC"}   
  88.                     {loop $data $r}   
  89.                     <a href="{$r[url]}"><img src="{$r[thumb]}" width="200" height="127" alt="{$r[title]}"></a>   
  90.                     {/loop}   
  91.                     {/pc}   
  92.                 </div>   
  93.             </div>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表