www.lightcourse.com/app/home/controller/Article.php

234 lines
8.2 KiB
PHP

<?php
namespace app\home\controller;
use think\facade\View;
use think\facade\Lang;
class Article extends BaseMall
{
public function initialize()
{
parent::initialize(); // TODO: Change the autogenerated stub
Lang::load(base_path().'home/lang/'.config('lang.default_lang').'/article.lang.php');
}
/**
* 文章列表显示页面
*/
public function index()
{
$ac_id=intval(input('param.ac_id'));
if (empty($ac_id)) {
$this->error(lang('param_error'));//'缺少参数:文章类别编号'
}
/**
* 得到导航ID
*/
$nav_id = intval(input('param.nav_id'));
View::assign('index_sign', $nav_id);
/**
* 根据类别编号获取文章类别信息
*/
$articleclass_model = model('articleclass');
$article_class = $articleclass_model->getOneArticleclass($ac_id);
View::assign('class_name', $article_class['ac_name']);
if (empty($article_class) || !is_array($article_class)) {
$this->error(lang('article_article_class_not_exists'));//'该文章分类并不存在'
}
$default_count = 5;//定义最新文章列表显示文章的数量
/**
* 分类导航
*/
$nav_link = array(
array(
'title' => lang('ds_index'), 'link' => HOME_SITE_URL
), array(
'title' => $article_class['ac_name']
)
);
View::assign('nav_link_list', $nav_link);
/**
* 左侧分类导航
*/
$articleclass_list = $articleclass_model->getArticleclassList(array());
View::assign('class_list', $articleclass_list);
View::assign('ac_id', $ac_id);
$tree = new \mall\Tree();
$tree->setTree($articleclass_list, 'ac_id', 'ac_parent_id', 'ac_name');
View::assign('sub_class_list', $tree->getArrayList());
/**
* 文章列表
*/
$child_class_list = $articleclass_model->getChildClass($ac_id);
$ac_ids = array();
if (!empty($child_class_list) && is_array($child_class_list)) {
foreach ($child_class_list as $v) {
$ac_ids[] = $v['ac_id'];
}
}
$ac_ids = implode(',', $ac_ids);
$article_model = model('article');
$condition = array();
$condition[]=array('ac_id','in',$ac_ids);
$condition[]=array('article_show','=','1');
$article_list = $article_model->getArticleList($condition, 10);
foreach ($article_list as &$val) {
/* preg_match_all('/^[\x{4e00}-\x{9fa5}a-zA-Z0-9]+$/u', $val['article_content'], $matches);
$str = join('', $matches[0]);
$val['article'] = mb_substr($str,0,200);*/
if (empty($val['article_pic'])) {
$val['article_pic'] = '/static/home/new/images/logo.png';
} else {
$val['article_pic'] = '/uploads/home/article/'.$val['article_pic'];
}
}
View::assign('article', $article_list);
View::assign('show_page', $article_model->page_info->render());
/**
* 最新文章列表
*/
$count = count($article_list);
$new_article_list = array();
if (!empty($article_list) && is_array($article_list)) {
for ($i = 0; $i < ($count > $default_count ? $default_count : $count); $i++) {
$new_article_list[] = $article_list[$i];
}
}
View::assign('new_article_list', $new_article_list);
//SEO 设置
$seo = model('seo')->type('blog')->param(array('article_class' => $article_class['ac_name']))->show();
$this->_assign_seo($seo);
return View::fetch($this->template_dir.'article_list');
}
/**
* 单篇文章显示页面
*/
public function show()
{
$article_id=intval(input('param.article_id'));
if (empty($article_id)) {
$this->error(lang('param_error'));//'缺少参数:文章编号'
}
/**
* 根据文章编号获取文章信息
*/
$article_model = model('article');
$condition = array();
$condition[] = array('article_id','=',$article_id);
$article = $article_model->getOneArticle($condition);
if (empty($article) || !is_array($article) || $article['article_show'] == '0') {
$this->error(lang('article_show_not_exists'));//'该文章并不存在'
}
View::assign('article', $article);
/**
* 根据类别编号获取文章类别信息
*/
$articleclass_model = model('articleclass');
$condition = array();
$article_class = $articleclass_model->getOneArticleclass($article['ac_id']);
if (empty($article_class) || !is_array($article_class)) {
$this->error(lang('article_show_delete'));//'该文章已随所属类别被删除'
}
$default_count = 5;//定义最新文章列表显示文章的数量
/**
* 分类导航
*/
$nav_link = array(
array(
'title' => lang('ds_index'), 'link' => HOME_SITE_URL
), array(
'title' => $article_class['ac_name'],
'link' => url('Article/index', array('ac_id' => $article_class['ac_id']))
), array(
'title' => lang('article_show_article_content')
)
);
View::assign('nav_link_list', $nav_link);
/**
* 左侧分类导航
*/
$articleclass_list = $articleclass_model->getArticleclassList(array());
$tree = new \mall\Tree();
$tree->setTree($articleclass_list, 'ac_id', 'ac_parent_id', 'ac_name');
View::assign('sub_class_list', $tree->getArrayList());
/**
* 文章列表
*/
$child_class_list = $articleclass_model->getChildClass($article_class['ac_id']);
$ac_ids = array();
if (!empty($child_class_list) && is_array($child_class_list)) {
foreach ($child_class_list as $v) {
$ac_ids[] = $v['ac_id'];
}
}
$ac_ids = implode(',', $ac_ids);
$article_model = model('article');
$condition = array();
$condition[]=array('ac_id','in',$ac_ids);
$condition[]=array('article_show','=','1');
$article_list = $article_model->getArticleList($condition);
/**
* 寻找上一篇与下一篇
*/
$pre_article = $next_article = array();
if (!empty($article_list) && is_array($article_list)) {
$pos = 0;
foreach ($article_list as $k => $v) {
if ($v['article_id'] == $article['article_id']) {
$pos = $k;
break;
}
}
if ($pos > 0 && is_array($article_list[$pos - 1])) {
$pre_article = $article_list[$pos - 1];
}
if ($pos < count($article_list) - 1 and is_array($article_list[$pos + 1])) {
$next_article = $article_list[$pos + 1];
}
}
View::assign('pre_article', $pre_article);
View::assign('next_article', $next_article);
/**
* 最新文章列表
*/
$count = count($article_list);
$new_article_list = array();
if (!empty($article_list) && is_array($article_list)) {
for ($i = 0; $i < ($count > $default_count ? $default_count : $count); $i++) {
$new_article_list[] = $article_list[$i];
}
}
View::assign('new_article_list', $new_article_list);
$seo_param = array();
$seo_param['name'] = $article['article_title'];
$seo_param['article_class'] = $article_class['ac_name'];
$seo_param['description'] = ds_substing(htmlspecialchars_decode($article['article_content']));
//SEO 设置
$seo = model('seo')->type('blog_content')->param($seo_param)->show();
$this->_assign_seo($seo);
return View::fetch($this->template_dir.'article_show');
}
}