public function getListByDiseaseid($condition = [], $offset = 0, $limit = 10, $orderBy = 'id DESC') { $article = new Article(); $articles = $article->getListByDiseaseid($condition, $offset, $limit, $orderBy); if (isset($articles) && !empty($articles)) { foreach ($articles as $key => &$article) { $article['url'] = '/article/' . date("Y/md", $article["inputtime"]) . '/' . $article['id'] . '.shtml'; } } return $articles; }
/** * 生成 404 静态页面 * @author gaoqing * @date 2016-04-20 * @param string $cacheKey 缓存的唯一标识 * @return boolean$generateFlag是否生成成功 */ public static function cache404Page($cacheKey, $param = [], $forceCache = false) { $generateFlag = false; $frontend = \Yii::getAlias('@frontend'); $page404FileName = $frontend . '/web/404.shtml'; if (!file_exists($page404FileName)) { $forceCache = true; } if ($forceCache) { $view = "404"; //获取最新的资讯文章 $article = new Article(); $where = ' status=20'; $order = ' articleid DESC'; $lastestNews = $article->List_Articles($where, $order, 5, 0); //获取 疾病健康 文章 $darticle = new \common\models\disease\Article(); $lastestJibingArticle = $darticle->getLatestArticle(5, 0); //精彩问答 $ask = new Ask(); $where1 = ' 1'; $order1 = ' id DESC'; $lastestAsk = $ask->getList($where1, $order1, 5, 0); //字母部分 $letters = range('A', 'Z'); $condition = array('typeid' => array(0, 2, 3, 4, 5, 6, 7, 8, 9)); $rand_words = KeyWords::getCacheRandWords(100, $condition); //热门疾病、热门部位 $commonDisDep = CacheHelper::getCache('frontend_article_detail_rmksbw_404', []); $params = ['lastestNews' => $lastestNews, 'lastestJibingArticle' => $lastestJibingArticle, 'lastestAsk' => $lastestAsk, 'letters' => $letters, 'rand_words' => $rand_words, 'commonDisDep' => $commonDisDep, 'searchurl' => 'http://www.9939.com/zhuanti/']; $controller = new BaseController('base404', null); $controller->id = "base404"; $page404FilePath = $frontend . '/views/site'; $controller->viewPath = $page404FilePath; $page404 = $controller->renderPartial($view, $params); if (isset($page404) && !empty($page404)) { if (file_put_contents($page404FileName, $page404)) { $generateFlag = true; } } } return $generateFlag; }
public function actionSearchart() { \Yii::$app->response->format = Response::FORMAT_JSON; $article = []; $articleid = $this->helpGquery('articleid', '0'); $type = $this->helpGquery('type', '1'); if (!empty($articleid)) { if ($type == 2) { $articleObj = new \common\models\Article(); $temp = $articleObj->List_ArticleByIds([$articleid]); if (!empty($temp)) { $article = $temp[0]; } } elseif ($type == 1) { $temp = Article::find()->where(['id' => $articleid])->asArray()->one(); if (!empty($temp)) { $temp['url'] = \Yii::getAlias("@domain") . '/article/' . date('Y/md', $temp['inputtime']) . '/' . $temp['id'] . '.shtml'; $article = $temp; } } } return $article; }
public static function search_jb_article_data($sphinx_data) { $total = 0; $ret_list = array(); if (!empty($sphinx_data['matches'])) { $art_obj = new \common\models\disease\Article(); $arr_ids = array(); foreach ($sphinx_data['matches'] as $k => $v) { $arr_ids[] = $k; } $disease_list = $art_obj->List_DiseaseArticleByIds($arr_ids); if ($disease_list) { foreach ($disease_list as $k => $v) { $v['tmp_source_id'] = 2; $date_path = date('Y/md', $v['inputtime']); $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $v['id']); $v['url'] = sprintf('%s/%s', Yii::getAlias('@jb_domain'), $article_path); $v['wap_url'] = sprintf('%s/%s', Yii::getAlias('@mjb_domain'), $article_path); $ret_list[] = $v; } } $total = $sphinx_data['total']; } $explain_words = $sphinx_data['explain_words']; return array('list' => $ret_list, 'total' => $total, 'explain_words' => $explain_words); }
/** * 获取更多文章 * ajax */ public function actionLoadArticle() { $condition['diseaseid'] = $this->helpGpost('diseaseid', ''); $condition['type'] = [$this->helpGpost('type', 0)]; $offset = $this->helpGpost('offset', 0); $length = $this->helpGpost('length', 5); $obj_article = new Article(); $article = $obj_article->getListByDiseaseid($condition, $offset, $length); $data['article'] = $article; return $this->renderPartial('inc_article_list', $data); }
/** * 文章缓存 */ public function articleCache($param) { $article = new DArticle(); $res = $article->getAllArticle(); $i = 0; foreach ($res as $k => $v) { if (CacheHelper::$param['function']($param['key_prefix'], $v, true)) { $i++; } } return $i; }
/** * 文章列表页 * @author gaoqing * @date 2016-03-25 * @return string 视图 */ public function actionList() { $data = []; $limit = 40; $paging = $this->helpPaging('pager_disease_article')->setSize($limit)->setPageSetSize(5); $offset = $paging->getOffset(); $records = Article::search(['status' => 99], $offset, $limit, ['id' => SORT_DESC], true); $paging->setTotal($records['total']); $article = $records['list']; $letters = range('A', 'Z'); $rand_words = $this->rand_words(); // KeyWords::getCacheRandWords(); $randWords['letter'] = $letters; $randWords['words'] = $rand_words; //广告 $obj_ads = new Ads(); $ads_interest = $obj_ads->ads(4543); //右侧:最新文章 $lastestArticles = $this->getLatestArticles(20); $data['article'] = $article; $data['paging'] = $paging; $data['ads_interest'] = $ads_interest; $data['randWords'] = $randWords; $data['lastestArticles'] = $lastestArticles; return $this->render('article_list', $data); }
/** * 文章列表页 * @author gaoqing * @date 2016-03-25 * @return string 视图 */ public function actionList() { $data = []; $limit = 10; $paging = $this->helpPaging('pager_disease_wapjb_article_list')->setSize($limit); $offset = $paging->getOffset(); $records = Article::search(['status' => 99], $offset, $limit, ['id' => SORT_DESC], true); $paging->setTotal($records['total']); $article = $records['list']; $data['article'] = $article; $data['paging'] = $paging; return $this->renderPartial('article_list', $data); }
/** * 文章sitemap * * <url> <loc>http://m.jb.9939.com/article/2009/0327/22.shtml</loc> <mobile:mobile type="mobile"/> <lastmod>2009-12-14</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> */ public function articleSitemap() { $this->_changefreq = 'daily'; $this->_priority = '0.8'; $where = $this->_ownership; //目录 if ($where == 'pc') { $frontend = \Yii::getAlias("@frontend"); $frontDomain = \Yii::getAlias("@frontdomain"); } elseif ($where == 'wap') { $frontend = \Yii::getAlias("@wapjb"); $frontDomain = \Yii::getAlias("@mjb_domain"); } $sitemapFolder = $this->_baidu ? 'sitemap/sitemapbaiduaricleindex' : 'sitemap/sitemaparicleindex'; $fileFolder = $frontend . '/web/' . $sitemapFolder; if (!file_exists($fileFolder) || !is_dir($fileFolder)) { mkdir($fileFolder, 0755, true); } //判断jb还是wapjb $type = $where == 'pc' ? 'article' : 'wap_article'; //文章数据 $art_obj = new Article(); $limit = 10000; $sitemap_site = $this->getSitemapCount($fileFolder); $offset = $sitemap_site['limit']; $articles = $art_obj->listByCondition([['status' => 99]], $limit, $offset, 'id ASC'); $flag = count($articles) == $limit ? 1 : 2; //为2时提示已经生成完毕 //xml $sitemap = '<?xml version="1.0" encoding="UTF-8"?>'; $sitemap .= $this->_baidu ? '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">' : '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; $sitemap .= $this->setSitemapURL($articles, $type); $sitemap .= '</urlset>'; //写入计数文件 $this->setSitemapCount(['limit' => (int) $offset + $limit], $fileFolder); $name_tail = intval($offset / 10000 + 1); $fileName = 'sitemap' . $name_tail . '.xml'; if (file_put_contents($fileFolder . '/' . $fileName, $sitemap)) { $res = $this->generateSitemapIndex($fileFolder, $sitemapFolder); return ['flag' => $flag, 'url' => $frontDomain . '/' . $sitemapFolder . '/' . $fileName, 'name' => $fileName, 'siteindex' => $res['url']]; } return []; }
/** * 获取疾病文章的相关文章 * @author gaoqing * @date 2016-04-26 * @param array $params 参数 * @return array 疾病文章的相关文章集 */ private static function getRelArticlesBySymptomid($symptomid, $iswapjb = false) { $articleids = []; $darticle = new DArticle(); $rarticles = $darticle->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], 22, 0, 'id DESC'); if (isset($rarticles) && !empty($rarticles)) { $relArticles = $rarticles; if ($iswapjb) { foreach ($relArticles as &$relArticle) { $date_path = date('Y/md', $relArticle['inputtime']); $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $relArticle['id']); $relArticle['url'] = sprintf('%s/%s', \Yii::getAlias('@jb_domain'), $article_path); $relArticle['wap_url'] = sprintf('%s/%s', \Yii::getAlias('@mjb_domain'), $article_path); } } } else { $relArticles = []; } return $relArticles; }
public static function getListByDiseaseid($condition = [], $offset = 0, $limit = 10, $orderBy = 'id DESC') { $article = new Article(); $articles = Article::find()->select(['id', 'title', 'description', 'inputtime', 'content'])->where($condition)->offset($offset)->limit($limit)->asArray()->all(); if (isset($articles) && !empty($articles)) { foreach ($articles as $key => &$article) { if (empty($article['description'])) { $article['description'] = String::cutString($article['content'], 66); } else { $article['description'] = String::cutString($article['description'], 66); } $article['url'] = '/article/' . date("Y/md", $article["inputtime"]) . '/' . $article['id'] . '.shtml'; } } return $articles; }
function get_disease_articles($match_count) { return \common\models\disease\Article::find()->where(['diseaseid' => 0, 'status' => 99])->andWhere(['ismatch' => 0])->limit($match_count)->all(); }
/** * 设置文章字段属性值 * @param type $attribute * @param type $condtion * @return type */ public function editArticle($attribute, $condtion) { $result = Article::updateAll($attribute, $condtion); return $result; }
/** * 根据分类id获取该分类下的疾病内容 * lc 2016-4-11 * @param type $optionMap 分类id数组 * @param type $contain_article 是否包含文章 * @return type */ public function getCategoryData($optionMap, $disease_length = 10, $contain_article = false, $article_length = 4) { $data = []; foreach ($optionMap as $k => $v) { $catId[] = $k; } $obj_disease = new Disease(); $tmp = $obj_disease->batGetDiseaseByCategoryId($catId); $obj_article = new Article(); // $disid = []; foreach ($tmp as $k => $v) { $data[$v['categoryid']]['disease'][] = $v; $disid[$v['categoryid']][] = $v['id']; } $new_data = []; foreach ($disid as $kk => $vv) { $new_data[$kk]['disease'] = array_slice($data[$kk]['disease'], 0, $disease_length); if ($contain_article) { $dis_str = implode(',', $vv); $res = $obj_article->getListByGroup($dis_str); $new_data[$kk]['article'] = array_slice($res, 0, $article_length); } } ksort($new_data); return $new_data; }
/** * 疾病症状 饮食护理 * @return type */ public function actionArticle() { $pinyin = $this->helpGquery('pinyin'); $result = $this->getColumn('cause', $pinyin); //获取基本信息及字段对应信息 $name = $result['info']['name']; $symptomid = $result['info']['id']; //症状基本信息 $model['id'] = $symptomid; $model['info'] = $result['info']; $model['content'] = $result['content']; $model['pinyin_initial'] = $pinyin; //设置title,keywords,description $this->setMeta($name, 'article'); //右侧公用信息 $rightTmp = $this->getRightInfo($symptomid, ['disease', 'articles', 'doctorInfos', 'relSymptom']); foreach ($rightTmp as $k => $v) { $model[$k] = $v; } //症状相关文章 $article_count = Article::find()->andWhere('symptomid=:symptomid', [':symptomid' => $symptomid])->count('id'); if ($article_count > 0) { $perpage = 20; $pagenum = $this->helpGparam('page', 1); $total = $article_count; $page = $pagenum <= $total / $perpage ? $pagenum : $total / $perpage; $paging = $this->helpPaging('pager_symptom_article')->setSize($perpage)->setPageSetSize(5); $paging->setUrlFormat(Url::to("@domain/zhengzhuang/{$pinyin}/article_list_%u.shtml")); $paging->setTotal($total)->setCurrent($page); $offset = $paging->getOffset(); $articles = $this->article->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], $perpage, $offset, 'id DESC'); //查询结果 $model['articles'] = $articles; $model['paging'] = $paging; } else { if (isset($model['disid'])) { //通过疾病id查找【疾病与疾病文章关联表】得到疾病文章id $diseaseIdStr = implode(',', $model['disid']); $perpage = 20; $pagenum = $this->helpGparam('page', 1); $tmp = $this->article->getRecordsBySql($diseaseIdStr); $totalPage = $tmp[0]['num']; $page = $pagenum <= $totalPage / $perpage ? $pagenum : $totalPage / $perpage; $paging = $this->helpPaging('pager_symptom_article')->setSize($perpage)->setPageSetSize(5); $paging->setUrlFormat(Url::to("@domain/zhengzhuang/{$pinyin}/article_list_%u.shtml")); $paging->setTotal($totalPage)->setCurrent($page); $offset = $paging->getOffset(); $articles = $this->article->listBySqlCondition($diseaseIdStr, $perpage, $offset); //查询结果 $model['articles'] = $articles; $model['paging'] = $paging; } } //底部随机词 $randWords = $this->letterHotWordsBatch($name); $model['randWords'] = $randWords; return $this->render('article', ['model' => $model]); }
/** * 右侧公共信息,跟疾病有关的 * lc 2016-4-6 * @param type $symptomid * @param array $filter ['disease','relSymptom'] 筛选需要的数据 * @return type */ public function getRightInfo($symptomid, $filter = []) { $cacheHelper = new CacheHelper(); $filter = !empty($filter) ? $filter : ['disease', 'articles', 'doctorInfos', 'leftDoctor', 'medicalDepartment', 'relSymptom']; $model = []; $diseaseList = []; $parms = ['id' => $symptomid]; $diseaseCache = $cacheHelper->getCache('frontend_symptom_index_knjb', $parms); if (in_array('medicalDepartment', $filter) || in_array('disease', $filter)) { if (!empty($diseaseCache)) { $model['disid'] = $diseaseCache['diseaseId']; //症状首页左侧可能疾病及伴随症状 $model['disease'] = $diseaseCache['diseaseTmp']; } } //右侧就诊科室 // if (in_array('medicalDepartment', $filter)) { // if (!empty($diseaseCache)) { // //在取到的所有科室数据合并去重 // $medicalDepartment = []; // foreach ($diseaseCache['departmentMap'] as $vv) { // $Tmp['medicalDepartmentTmp'][] = $vv['id']; // $Tmp['medicalDepartmentTmpName'][] = $vv['name']; // $Tmp['medicalDepartmentTmpPinyin'][] = $vv['pinyin']; // } // $medicalDepartment['id'] = array_unique($Tmp['medicalDepartmentTmp']); // $medicalDepartment['name'] = array_unique($Tmp['medicalDepartmentTmpName']); // $medicalDepartment['pinyin'] = array_unique($Tmp['medicalDepartmentTmpPinyin']); //// print_r($medicalDepartment);exit; // $model['medicalDepartment'] = $medicalDepartment; // //科室拼音 // $model['departPinyin'] = $this->department->getDepartmentPinyin(); // } // } //右侧相关症状 if (in_array('relSymptom', $filter)) { $relateObj = new Relate(); $model['relSymptom'] = $relateObj->getRelateSymptoms($symptomid); } //症状相关文章 if (in_array('articles', $filter)) { $articleObj = new Article(); $model['articles'] = []; $articles = $articleObj->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], 7, 0, 'id DESC'); if (!empty($articles)) { $model['articles'] = $articles; } else { if (!empty($diseaseCache)) { $diseaseId = $diseaseCache['diseaseId']; $disease_ids = implode(',', $diseaseId); $articles = $articleObj->listBySqlCondition($disease_ids, 7, 0); $arts = []; foreach ($articles as $k => $v) { $date_path = date('Y/md', $v['inputtime']); $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $v['id']); $articleUrl = sprintf('%s/%s', Yii::getAlias('@jb_domain'), $article_path); foreach ($v as $kk => $vv) { $arts[$k][$kk] = $vv; $arts[$k]['url'] = $articleUrl; } } $model['articles'] = $arts; } } } //专家(左侧) if (in_array('doctorInfos', $filter)) { if (!empty($diseaseCache)) { //取所有相关疾病里第一个疾病id来查专家 $diseaserandid = $diseaseCache['diseaseId']['0']; $doctors = $this->getDoctor($diseaserandid, 0, 6); //专家(右侧) $rightDoctor = array_slice($doctors, 3, 3); $model['doctorInfos'] = $rightDoctor; //在线咨询 左侧 $leftDoctor = [['uid' => 1440561, 'nickname' => '陶丽萍', 'zhicheng' => '', 'best_dis' => '保健综合', 'pic' => '201601/1440561_avatar_middle.jpg'], ['uid' => 221102, 'nickname' => '王庆松', 'zhicheng' => '', 'best_dis' => '上呼吸道综合', 'pic' => '201601/221102_avatar_middle.jpg'], ['uid' => 831181, 'nickname' => '刘业生', 'zhicheng' => '', 'best_dis' => '常见病综合,呼吸道系统诊疗', 'pic' => '201604/831181_avatar_middle.jpg']]; $model['leftDoctor'] = $leftDoctor; } } return $model; }