/** * 媒体文章详情 * @param HttpRequest $request */ public function detail(HttpRequest $request) { $id = $request->getParameter('id', 'intval'); if ($id <= 0) { page404(); } $articleService = Beans::get("article.article.service"); $tagService = Beans::get('article.tags.service'); $condi = getMediaArticleConds(); $conditions = array('id' => $id, 'media_id' => $this->loginMedia['id']); $condi = array_merge($conditions, $condi); $item = $articleService->getItem($condi, 'id,title,media_chanel,bcontent,tags,kwords,author, add_time, update_time'); if (!$item) { page404(); } //更新文章点击率 $articleService->increase('hits', 1, $id); if ($item['tags'] != '') { $tagids = explode(',', $item['tags']); $item['tags'] = $tagService->getItems($tagids, 'id,name'); } $this->assign('item', $item); //注册页面seo信息 $this->assign('seoTitle', $item['title'] . '-' . $this->mediaConfigs['sitename']); $this->assign('seoKwords', $item['kwords']); $this->assign('seoDesc', $item['bcontent']); $this->assign("chanelId", $item["media_chanel"]); $this->setView('article_detail'); }
/** * 首页 * @param HttpRequest $request */ public function index(HttpRequest $request) { $page = $request->getParameter('page', 'intval'); //获取轮播图 $mediaService = Beans::get("media.media.service"); $casoulItems = $mediaService->getMediaCarousel(5, $this->loginMedia['id']); $this->assign("casoulItems", $casoulItems); $condi = getMediaArticleConds(); $condi['media_id'] = $this->loginMedia['id']; $this->loadMediaArticles($condi, $page, 'sort_num DESC, id DESC'); //注册页面seo信息 $this->assign('seoTitle', $this->mediaConfigs['sitetitle']); $this->assign('seoKwords', $this->mediaConfigs['siteseo']); $this->assign('seoDesc', $this->mediaConfigs['sitedescription']); $this->setView('index'); }
/** * 获取热点文章 * @param HttpRequest $request */ private function getHotArticles(HttpRequest $request) { $mediaId = $request->getParameter('media_id', 'intval'); $articleService = Beans::get('article.article.service'); $articleRecService = Beans::get('media.articleRec.service'); $baseCondi = getMediaArticleConds(); //1. 首先获取推荐位的文章 $rcondi = array('media_id' => $mediaId, 'position' => 2, 'status' => 1); $item = $articleRecService->getItem($rcondi, 'aids'); $field = 'id, title, thumb, bcontent, hits, author'; if ($item && $item['aids']) { $conditions = $baseCondi; $conditions['id'] = '#IN' . $item['aids']; $items = $articleService->getItems($conditions, $field); if ($items) { //按照ID排序 $ids = explode(',', $item['aids']); $newsItems = array(); $items = ArrayUtils::changeArrayKey($items, 'id'); foreach ($ids as $value) { if ($items[$value]) { $newsItems[] = $items[$value]; } } } } //2. 推荐位的文章不够,再从最热门搜索补上 if (count($newsItems) < 10) { $conditions = $baseCondi; $conditions['media_id'] = $mediaId; if ($item['aids']) { $conditions['id'] = '#NI' . $item['aids']; } $hotArticles = $articleService->getItems($conditions, $field, "hits desc", 1, 10 - count($newsItems)); } $result = array(); if ($newsItems) { $result = array_merge($result, $newsItems); } if ($hotArticles) { $result = array_merge($result, $hotArticles); } $this->assign('hotArticles', $result); }
/** * @see \media\service\interfaces\IMediaService::getMediaCarousel */ public function getMediaCarousel($rows, $mediaId) { $articleService = Beans::get('article.article.service'); $articleRecService = Beans::get('media.articleRec.service'); $baseCondi = getMediaArticleConds(); //1. 先读取轮播图推荐位 $rcondi = array('media_id' => $mediaId, 'position' => 1, 'status' => 1); $item = $articleRecService->getItem($rcondi, 'aids'); $field = 'id, title, thumb, bcontent, hits, author'; if ($item && $item['aids']) { $conditions = $baseCondi; $conditions['id'] = '#IN' . $item['aids']; $items = $articleService->getItems($conditions, $field, null, 1, $rows); if ($items) { //按照ID排序 $ids = explode(',', $item['aids']); $newsItems = array(); $items = ArrayUtils::changeArrayKey($items, 'id'); foreach ($ids as $value) { if ($items[$value]) { $newsItems[] = $items[$value]; } } } } //2. 推荐位的文章不够,再从最热门搜索补上 if (count($newsItems) < $rows) { $conditions = $baseCondi; $conditions['media_id'] = $mediaId; if ($item['aids']) { $conditions['id'] = '#NI' . $item['aids']; } $conditions['thumb'] = "!=''"; $__items = $articleService->getItems($conditions, $field, "id desc", 1, $rows - count($newsItems)); } $result = array(); if ($newsItems) { $result = array_merge($result, $newsItems); } if ($__items) { $result = array_merge($result, $__items); } return $result; }