tp3.2中怎么访问分类及子分类下面的文章

在项目开发过程中,我们可能会遇到在进入文章分类时需要遍历文章分类及文章子分类下面的文章的情况,具体解决步骤如下:

一、为便于理解,这里列出用到的表及字段

文章分类表(article_cate)

文章表(article)

其中 article 表的 cate_id 和 article_cate 表的 id 关联,article_cate 表中的 pid 是 id 的父级代号。

从表中可以看出,在 id 为 69 的文章分类下的 id 为 70 的子分类 下的 id 为 111 的 分类下 有一篇 cate_id 为111的文章

二、

(1)关系图如下

(2)要达到的效果就是

在控制器中写一个方法:能取到 与 文章分类有关联的所有分类 id , 及 id 为 69 下的所有 子 id 及 子 id 下的 二级子 id ,以此类推。代码如下:

 1  public function getChild($pid = 0){
 2         global $article_cate;
 3         $where = [
 4             ‘pid‘ => $pid
 5         ];
 6
 7         $datas = D(‘articleCate‘)->where($where)->select();
 8         if(!empty($datas)){
 9             foreach($datas as $data){
10                 $article_cate[] = $data[‘id‘];
11                 $this->getChild($data[‘id‘]);
12             }
13         }
14         return $article_cate;
15     }
16     public function getC(){
17         global $article_cate;
18         $article_cate = [];
19
20     }

调用:

在 方法中传入 69 这个参数,就会返回与 id 为69 有关联的 id

因为是定义了全局变量,所以在调用的时候还要清一下全局变量,具体调用代码如下:

1  global $article_cate;
2         $article_cate = [];
3         $arr = $this->getChild(69);
4         $str = implode(‘,‘,$arr);
5         $str = $str.‘,69‘;
6         $mapzb2bt[‘cate_id‘] = array(‘in‘,$str);
7         $zb2list = $arc->where($mapzb2bt)->order(‘a_id desc‘)->limit(6)->select();
8         $this->assign(‘zb2list‘,$zb2list);

其中拼了一个 69 是为了不进查询 id 为 69 下的所有子分类文章,还能查询 id 为69 下的分类文章

时间: 2024-10-27 13:37:10

tp3.2中怎么访问分类及子分类下面的文章的相关文章

destoon实现调用当前栏目分类及子分类和三级分类的方法

调用当前栏目分类及子分类和三级分类是程序设计里常用的方法,本文就来详细讲述destoon实现调用当前栏目分类及子分类和三级分类的方法.具体操作如下: 在destoon中提供了如下的调用语句: 一级分类名: ? 1 {$m[catname]} 二级分类名: ? 1 {$c[catname]} 三级分类名: ? 1 {$b[catname]} 具体调用示例如下: 一.直接调用分类名称和链接: ? 1 2 3 4 5 6 {loop $maincat $i $m}<dl>    {php $chil

Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名

在Magento目录的分类页面里,希望在左侧导航获取到父分类和子分类,可以用以下方法:打开app/your_package/your_themes/template/catalog/navigation/left.phtml 显示父分类的分类名 1 2 3 4 5 6 7 8 9 10 $currentCat = Mage::registry('current_category'); //如果是根目录,则显示当前目录 if ( $currentCat->getParentId() == Mage

magento 获取分类及其子分类 多种情况举例

1. 获取指定分类id 下的子分类 // 例如获取 分类id为 13 的子分类信息 <?php $root = Mage::getModel('catalog/category')->load(13); $subCat = explode(',',$root->getChildren()); $collection = $root ->getCollection() ->addAttributeToSelect("*") ->addFieldToFi

ThinkPHP分类查询(获取当前分类的子分类,获取父分类,下一级分类)

获取指定分类的所有子分类ID号 //获取指定分类的所有子分类ID号 function getAllChildcateIds($categoryID){ //初始化ID数组 $array[] = $categoryID; do { $ids = ''; $where['pid'] = array('in',$categoryID); $cate = M('cate')->where($where)->select(); foreach ($cate as $k=>$v){ $array[]

destoon调用它的分类及子分类和三级分类名的方法

下面的一种方法可以实现,三个分类名分别代表 一级分类名:{$m[catname]} 二级分类名:{$c[catname]} 三级分类名:{$b[catname]} {loop $maincat $i $m} {php $child = get_maincat($maincat, $CATEGORY, 1);} <div class="hq01"> <div class="hq-tt"> <p><h4>{$m[catna

问答项目---删除分类的时删除其子分类

递归获取所有的子分类的ID: //递归获取所有的子分类的ID function get_all_child($array,$id){ $arr = array(); foreach($array as $v){ if($v['pid'] == $id){ $arr[] = $v['id']; $arr = array_merge($arr,get_all_child($array,$v['id'])); }; }; return $arr; } 删除分类及其子分类: //删除分类 public

C++类中的访问权限问题

C++类中的访问权限问题 引用http://www.cnblogs.com/dongsheng/p/3344011.html 纠结的东西: private,public,protected方法的访问范围.(public继承下)private: 只能由该类中的函数.其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数.子类的函数.以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数.子类的函数.其友元函数访问,也可以由该类的

20151024_004_C#基础知识(C#中的访问修饰符,继承,new关键字,里氏转换,is 和 as,多态,序列化与反序列化)

1:C#中的访问修饰符 public: 公共成员,完全公开,没有访问限制. private: 私有的,只能在当前类的内部访问. protected: 受保护的,只能在当前类的内部以及该类的子类中访问. internal: 只能在当前项目中访问,在同一个项目中,internal和public的权限是一样的. protected internal: protected + internal权限. 1.1:能够修饰类的访问修饰符只有两个: public / internal 1.2:接口中的成员不允许

java中的访问控制符

首先来一张图: 对于一个类而言访问控制符只有一个public和默认无修饰符.其他的几个访问修饰符对于变量和方法都可以使用. 下面介绍具体的使用. 1. 公有访问控制符(public) Java的类是通过包的概念来组织的,包是类的一个松散的集合.处于同一个包中的类可以不需要任何说明二方便地相互访问和引用,而对于不同包中的类,则不行. 但如果一个类被声明为public时,它就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用了import语句引入了public类,就可以访问和引用这个