/** * 查询指定标签的详细信息 * @param $info detail 查询的 id 或者slug */ public function detail($info) { $TagsLogic = new TagsLogic(); $PostsLogic = new PostsLogic(); $tag = $TagsLogic->detail($info); $this->if404($tag, "非常抱歉,没有这个标签,可能它已经躲起来了"); $posts_id = $TagsLogic->getPostsId($tag['tag_id']); $count = sizeof($posts_id); $count == 0 ? $res404 = 0 : ($res404 = 1); if (!empty($posts_id)) { $Page = new GreenPage($count, get_opinion('PAGER')); $pager_bar = $Page->show(); $limit = $Page->firstRow . ',' . $Page->listRows; $posts_list = $PostsLogic->getList($limit, 'single', 'post_id desc', true, array(), $posts_id); } $this->assign('title', $tag['tag_name']); // 赋值数据集 $this->assign('res404', $res404); $this->assign('postslist', $posts_list); // 赋值数据集 $this->assign('pager', $pager_bar); // 赋值分页输出 $this->assign('breadcrumbs', get_breadcrumbs('tags', $tag['tag_id'])); $this->display('Archive/single-list'); }
/** * 页面feed * @param null * 显示数量由 feed_num决定 */ public function listsPage() { $PostsList = new PostsLogic(); $post_list = $PostsList->getList(get_opinion('feed_num'), 'page', 'post_id desc', true); $RSS = new RSS(get_opinion('title'), '', get_opinion('description'), ''); // 站点标题的链接 foreach ($post_list as $list) { $RSS->AddItem($list['post_title'], 'http://' . $_SERVER["SERVER_NAME"] . getPageURLByID($list['post_id']), $list['post_content'], $list['post_date']); } $RSS->Display(); }
/** * 文章feed * @param string $type 文章类型 * @internal param $null 显示数量由 feed_num决定* 显示数量由 feed_num决定 */ public function listPost($type = 'single') { $PostsList = new PostsLogic(); $post_list = $PostsList->getList(get_opinion('feed_num'), $type, 'post_date desc', true); $RSS = new RSS(get_opinion('title'), '', get_opinion('description'), ''); // 站点标题的链接 foreach ($post_list as $list) { $RSS->addItem($list['post_title'], 'http://' . $_SERVER["SERVER_NAME"] . get_post_url($list), $list['post_content'], $list['post_date']); } $RSS->display(); }
/** * 列表显示,包括page和single * @param string $post_type 文章类型 * @param string $post_status 文章状态 * @param string $order 顺序 * @param string $keyword 搜索关键词 */ public function index($post_type = 'single', $post_status = 'publish', $order = 'post_id desc', $keyword = '') { //获取get参数 $cat = I('get.cat'); $tag = I('get.tag'); $page = I('get.page', C('PAGER')); $where = array('post_status' => $post_status); $where['post_content|post_title'] = array('like', "%{$keyword}%"); $post_ids = array(); //投稿员只能看到自己的 if (!$this->noVerify()) { $where['user_id'] = get_current_user_id(); } //处理详细信息 搜索,指定TAG CAT文章 if ($cat != '') { $post_ids = D('Cats', 'Logic')->getPostsId($cat); $post_ids = empty($post_ids) ? array('post_id' => 0) : $post_ids; $cat_detail = D('Cats', 'Logic')->detail($cat); $cat = '关于分类 ' . $cat_detail['cat_name'] . ' 的'; } else { if ($tag != '') { $post_ids = D('Tags', 'Logic')->getPostsId($tag); $post_ids = empty($post_ids) ? array('post_id' => 0) : $post_ids; $tag_detail = D('Tags', 'Logic')->detail($tag); $tag = '关于标签' . $tag_detail['tag_name'] . ' 的'; } else { if ($keyword != '') { $key = '关于' . $keyword . ' 的'; } } } $PostsLogic = new PostsLogic(); $count = $PostsLogic->countAll($post_type, $where, $post_ids); // 查询满足要求的总记录数 if ($count != 0) { $Page = new GreenPage($count, $page); // 实例化分页类 传入总记录数 $pager_bar = $Page->show(); $limit = $Page->firstRow . ',' . $Page->listRows; $posts_list = $PostsLogic->getList($limit, $post_type, $order, true, $where, $post_ids); } $this->assign('post_type', $post_type); $this->assign('action', $key . $cat . $tag . get_real_string($post_type) . '列表'); $this->assign('posts', $posts_list); $this->assign('pager', $pager_bar); $this->display('index_no_js'); }
/** * @param $tag * @param $content * @usage <recentlist type="文章类型" num="数量" order="排序" relation="是否关联" length="字长度" li_attr='li属性' ul_attr="ul属性"></recentlist> * @return string */ public function _recentlist($tag, $content) { $PostsLogic = new PostsLogic(); $num = isset($tag['num']) ? (int) $tag['num'] : 5; $post_type = isset($tag['type']) ? $tag['type'] : 'single'; $order = isset($tag['order']) ? $tag['order'] : 'post_date desc'; $relation = isset($tag['relation']) ? $tag['relation'] : false; $li_attr = isset($tag['li_attr']) ? $tag['li_attr'] : ''; $ul_attr = isset($tag['ul_attr']) ? $tag['ul_attr'] : ''; $length = isset($tag['length']) ? (int) $tag['length'] : 20; $info['post_type'] = $post_type; $post_list = $PostsLogic->getList($num, $post_type, $order, $relation, $info); $parseStr = '<ul ' . $ul_attr . '>'; foreach ($post_list as $value) { $parseStr .= '<li ' . $li_attr . '> <a href="' . getSingleURLByID($value['post_id']) . '" title="' . $value['post_title'] . '"> ' . mb_substr($value['post_title'], 0, $length, "UTF-8") . ' </a></li>'; } $parseStr .= '</ul>'; if (!empty($parseStr)) { return $parseStr; } }
/** * 兼容旧式CMS深目录结构的二级cat结构 * @param $info */ public function channel($info) { //TODO 兼容旧式CMS深目录结构的二级cat结构 $Cat = new CatsLogic(); $cat = $Cat->detail($info); $children = $Cat->getChildren($cat['cat_id']); $Cat = new CatsLogic(); $Posts = new PostsLogic(); $cat = $Cat->detail($info); $this->if404($cat, "非常抱歉,没有这个分类,可能它已经躲起来了"); //优雅的404 $posts_id = $Cat->getPostsId($cat['cat_id']); $count = sizeof($posts_id); $count == 0 ? $res404 = 0 : ($res404 = 1); if (!empty($posts_id)) { $Page = new GreenPage($count, get_opinion('PAGER')); $pager_bar = $Page->show(); $limit = $Page->firstRow . ',' . $Page->listRows; $posts_list = $Posts->getList($limit, 'single', 'post_id desc', true, array(), $posts_id); } $this->assign('children', $children); $this->assign('title', $cat['cat_name']); // 赋值数据集 $this->assign('res404', $res404); $this->assign('postslist', $posts_list); // 赋值数据集 $this->assign('pager', $pager_bar); // 赋值分页输出 $this->assign('breadcrumbs', get_breadcrumbs('cats', $cat['cat_id'])); $this->display('Archive/channel-list'); }
/** * 兼容旧式CMS深目录结构的二级cat结构 * @param $info */ public function channel($info) { //TODO 兼容旧式CMS深目录结构的二级cat结构 $CatsLogic = new CatsLogic(); $cat = $CatsLogic->detail($info); $children = $CatsLogic->getChildren($cat['cat_id']); if (empty($children['cat_children'])) { $children = $CatsLogic->getChildren($children['cat_father']); } $CatsLogic = new CatsLogic(); $Posts = new PostsLogic(); $cat = $CatsLogic->detail($info); $this->if404($cat, "非常抱歉,没有这个分类,可能它已经躲起来了"); //优雅的404 $posts_id = $CatsLogic->getPostsIdWithChildren($cat['cat_id']); $count = sizeof($posts_id); $count == 0 ? $res404 = 0 : ($res404 = 1); if (!empty($posts_id)) { $Page = new GreenPage($count, get_opinion('PAGER')); $pager_bar = $Page->show(); $limit = $Page->firstRow . ',' . $Page->listRows; $posts_list = $Posts->getList($limit, 'single', 'post_date desc', true, array(), $posts_id); } $this->assign('children', $children); $this->assign('title', $cat['cat_name']); // 赋值数据集 $this->assign('res404', $res404); $this->assign('postslist', $posts_list); // 赋值数据集 $this->assign('pager', $pager_bar); // 赋值分页输出 $this->assign('breadcrumbs', get_breadcrumbs('cats', $cat['cat_id'])); if (File::file_exists(T('Home@Archive/channel-list'))) { $this->display('Archive/channel-list'); } else { //TODO 这里怎么处理却决于你自己了。 // $this->error404('缺少对应的模版而不能显示'); $this->display('Archive/single-list'); } }
/** * 标签文章 * @param int $id 指定标签的文章 */ public function tag($id) { $Tag = new TagsLogic(); $Posts = new PostsLogic(); $tag = $Tag->detail($id); $posts_id = $Tag->getPostsId($tag['cat_id']); $count = sizeof($posts_id); if (!empty($posts_id)) { $Page = new GreenPage($count, get_opinion('PAGER')); $limit = $Page->firstRow . ',' . $Page->listRows; $res = $Posts->getList($limit, 'single', 'post_date desc', true, array(), $posts_id); foreach ($res as $key => $value) { $res[$key]['post_content'] = strip_tags($res[$key]['post_content']); $res[$key]['post_url'] = U('Api/Index/post', array('id' => $res[$key]['post_id']), false, true); $res[$key]["post_img"] = get_post_img($value); } $res_array["posts"] = $res; $this->jsonReturn(1, $res_array); } else { $res_array["detail"] = "没有文章"; $this->jsonReturn(0, $res_array); } }
/** * 未知类型归档 支持年月日参数传递 和用户id * @param $method 未知类型 * @param array $args 参数 */ public function _empty($method, $args) { $title_prefix = (I('get.year', '') ? I('get.year', '') . '年' : '') . (I('get.month', '') ? I('get.month', '') . '月' : '') . (I('get.day', '') ? I('get.day', '') . '日' : ''); //TODO 通用类型 $post_type = $method; $map['post_date'] = array('like', I('get.year', '%') . '-' . I('get.month', '%') . '-' . I('get.day', '%') . '%'); if (I('get.uid') != '') { $map['user_id'] = I('get.uid'); } $PostsLogic = new PostsLogic(); $count = $PostsLogic->countAll($post_type, $map); // 查询满足要求的总记录数 $count == 0 ? $res404 = 0 : ($res404 = 1); if ($count != 0) { $Page = new GreenPage($count, C('PAGER')); $pager_bar = $Page->show(); $limit = $Page->firstRow . ',' . $Page->listRows; $posts_list = $PostsLogic->getList($limit, $post_type, 'post_id desc', true, $map); } $this->assign('title', $title_prefix . '所有' . $post_type); $this->assign('res404', $res404); // 赋值数据集 $this->assign('postslist', $posts_list); // 赋值数据集 $this->assign('pager', $pager_bar); // 赋值分页输出 if (File::file_exists(T('Home@Archive/' . $post_type . '-list'))) { $this->display($post_type); } else { //TODO 这里怎么处理却决于你自己了。 $this->error404('缺少对应的模版而不能显示'); // $this->display('single-list'); } }
/** * 列表显示,包括page和single * @param string $post_type 文章类型 * @param string $post_status 文章状态 * @param string $order 顺序 * @param string $keyword 搜索关键词 * @param string $tpl 模板名称 * @param string $name */ public function index($post_type = 'single', $post_status = 'publish', $order = 'post_date desc', $keyword = '', $tpl = 'index_no_js', $name = '', $uid = 0) { $CatsLogic = new CatsLogic(); $TagsLogic = new TagsLogic(); $key = ''; //获取get参数 $cat = I('get.cat'); $tag = I('get.tag'); $page = I('get.page', get_opinion('PAGER')); $where = array('post_status' => $post_status); $where['post_content|post_title'] = array('like', "%{$keyword}%"); $post_ids = array(); if ($uid != 0 && $this->noVerify()) { $where['user_id'] = $uid; $UserLogic = new UserLogic(); $user_info = $UserLogic->detail($uid); $key .= $user_info["user_nicename"] . ' 的'; } //投稿员只能看到自己的 if (!$this->noVerify()) { $where['user_id'] = get_current_user_id(); } //处理详细信息 搜索,指定TAG CAT文章 if ($cat != '') { $post_ids = $CatsLogic->getPostsIdWithChildren($cat); $post_ids = empty($post_ids) ? array('post_id' => 0) : $post_ids; $cat_detail = $CatsLogic->detail($cat); $cat = '关于分类 ' . $cat_detail['cat_name'] . ' 的'; } else { if ($tag != '') { $post_ids = $TagsLogic->getPostsId($tag); $post_ids = empty($post_ids) ? array('post_id' => 0) : $post_ids; $tag_detail = $TagsLogic->detail($tag); $tag = '关于标签' . $tag_detail['tag_name'] . ' 的'; } else { if ($keyword != '') { $key .= '关于' . $keyword . ' 的'; } } } $PostsLogic = new PostsLogic(); $count = $PostsLogic->countAll($post_type, $where, $post_ids); // 查询满足要求的总记录数 if ($count != 0) { $Page = new GreenPage($count, $page); // 实例化分页类 传入总记录数 $pager_bar = $Page->show(); $limit = $Page->firstRow . ',' . $Page->listRows; $posts_list = $PostsLogic->getList($limit, $post_type, $order, true, $where, $post_ids); } $cats = $CatsLogic->category(); $tags = $TagsLogic->select(); $this->assign("cats", $cats); $this->assign("tags", $tags); $this->assign('post_type', $post_type); $this->assign('action', $name . $key . $cat . $tag . get_real_string($post_type) . '列表'); $this->assign('posts', $posts_list); $this->assign('pager', $pager_bar); $this->display($tpl); }
/** * 轮播说明 * post_img->幻灯图片 url * post_top->顺序 * post_template->分组 * post_name->链接URL * post_content->文字 * */ public function slider() { $PostsList = new PostsLogic(); $slider = $PostsList->getList(0, 'slider', 'post_top', false); $this->assign('slider', $slider); $this->display(); }