You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.7 KiB
PHTML

5 years ago
<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace Common\Api;
class CategoryApi {
/**
* 获取分类信息并缓存分类
* @param integer $id 分类ID
* @param string $field 要获取的字段名
* @return string 分类信息
*/
public static function get_category($id, $field = null){
static $list;
/* 非法分类ID */
if(empty($id) || !is_numeric($id)){
return '';
}
/* 读取缓存数据 */
if(empty($list)){
$list = S('sys_category_list');
}
/* 获取分类名称 */
if(!isset($list[$id])){
$cate = M('Category')->find($id);
if(!$cate || 1 != $cate['status']){ //不存在分类,或分类被禁用
return '';
}
$list[$id] = $cate;
S('sys_category_list', $list); //更新缓存
}
return is_null($field) ? $list[$id] : $list[$id][$field];
}
/* 根据ID获取分类标识 */
public static function get_category_name($id){
return get_category($id, 'name');
}
/* 根据ID获取分类名称 */
public static function get_category_title($id){
return get_category($id, 'title');
}
/**
* 获取参数的所有父级分类
* @param int $cid 分类id
* @return array 参数分类和父类的信息集合
* @author huajie <banhuajie@163.com>
*/
public static function get_parent_category($cid){
if(empty($cid)){
return false;
}
$cates = M('Category')->where(array('status'=>1))->field('id,title,pid')->order('sort')->select();
$child = get_category($cid); //获取参数分类的信息
$pid = $child['pid'];
$temp = array();
$res[] = $child;
while(true){
foreach ($cates as $key=>$cate){
if($cate['id'] == $pid){
$pid = $cate['pid'];
array_unshift($res, $cate); //将父分类插入到数组第一个元素前
}
}
if($pid == 0){
break;
}
}
return $res;
}
}