Article.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. namespace app\home\controller;
  3. use think\facade\View;
  4. use think\facade\Lang;
  5. /**
  6. * ============================================================================
  7. * DSMall多用户商城
  8. * ============================================================================
  9. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  10. * 网站地址: http://www.csdeshang.com
  11. * ----------------------------------------------------------------------------
  12. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  13. * 不允许对程序代码以任何形式任何目的的再发布。
  14. * ============================================================================
  15. * 控制器
  16. */
  17. class Article extends BaseMall
  18. {
  19. public function initialize()
  20. {
  21. parent::initialize(); // TODO: Change the autogenerated stub
  22. Lang::load(base_path().'home/lang/'.config('lang.default_lang').'/article.lang.php');
  23. }
  24. /**
  25. * 文章列表显示页面
  26. */
  27. public function index()
  28. {
  29. $ac_id=intval(input('param.ac_id'));
  30. if (empty($ac_id)) {
  31. $this->error(lang('param_error'));//'缺少参数:文章类别编号'
  32. }
  33. /**
  34. * 得到导航ID
  35. */
  36. $nav_id = intval(input('param.nav_id'));
  37. View::assign('index_sign', $nav_id);
  38. /**
  39. * 根据类别编号获取文章类别信息
  40. */
  41. $articleclass_model = model('articleclass');
  42. $article_class = $articleclass_model->getOneArticleclass($ac_id);
  43. View::assign('class_name', $article_class['ac_name']);
  44. if (empty($article_class) || !is_array($article_class)) {
  45. $this->error(lang('article_article_class_not_exists'));//'该文章分类并不存在'
  46. }
  47. $default_count = 5;//定义最新文章列表显示文章的数量
  48. /**
  49. * 分类导航
  50. */
  51. $nav_link = array(
  52. array(
  53. 'title' => lang('homepage'), 'link' => HOME_SITE_URL
  54. ), array(
  55. 'title' => $article_class['ac_name']
  56. )
  57. );
  58. View::assign('nav_link_list', $nav_link);
  59. /**
  60. * 左侧分类导航
  61. */
  62. $condition = array();
  63. $condition[] = array('ac_parent_id','=',$article_class['ac_id']);
  64. $sub_class_list = $articleclass_model->getArticleclassList($condition);
  65. if (empty($sub_class_list) || !is_array($sub_class_list)) {
  66. $condition[] = array('ac_parent_id','=',$article_class['ac_parent_id']);
  67. $sub_class_list = $articleclass_model->getArticleclassList($condition);
  68. }
  69. View::assign('sub_class_list', $sub_class_list);
  70. /**
  71. * 文章列表
  72. */
  73. $child_class_list = $articleclass_model->getChildClass($ac_id);
  74. $ac_ids = array();
  75. if (!empty($child_class_list) && is_array($child_class_list)) {
  76. foreach ($child_class_list as $v) {
  77. $ac_ids[] = $v['ac_id'];
  78. }
  79. }
  80. $ac_ids = implode(',', $ac_ids);
  81. $article_model = model('article');
  82. $condition = array();
  83. $condition[]=array('ac_id','in',$ac_ids);
  84. $condition[]=array('article_show','=','1');
  85. $article_list = $article_model->getArticleList($condition, 10);
  86. View::assign('article', $article_list);
  87. View::assign('show_page', $article_model->page_info->render());
  88. /**
  89. * 最新文章列表
  90. */
  91. $count = count($article_list);
  92. $new_article_list = array();
  93. if (!empty($article_list) && is_array($article_list)) {
  94. for ($i = 0; $i < ($count > $default_count ? $default_count : $count); $i++) {
  95. $new_article_list[] = $article_list[$i];
  96. }
  97. }
  98. View::assign('new_article_list', $new_article_list);
  99. //SEO 设置
  100. $seo = model('seo')->type('article')->param(array('article_class' => $article_class['ac_name']))->show();
  101. $this->_assign_seo($seo);
  102. return View::fetch($this->template_dir.'article_list');
  103. }
  104. /**
  105. * 单篇文章显示页面
  106. */
  107. public function show()
  108. {
  109. $article_id=intval(input('param.article_id'));
  110. if (empty($article_id)) {
  111. $this->error(lang('param_error'));//'缺少参数:文章编号'
  112. }
  113. /**
  114. * 根据文章编号获取文章信息
  115. */
  116. $article_model = model('article');
  117. $condition = array();
  118. $condition[] = array('article_id','=',$article_id);
  119. $article = $article_model->getOneArticle($condition);
  120. if (empty($article) || !is_array($article) || $article['article_show'] == '0') {
  121. $this->error(lang('article_show_not_exists'));//'该文章并不存在'
  122. }
  123. View::assign('article', $article);
  124. /**
  125. * 根据类别编号获取文章类别信息
  126. */
  127. $articleclass_model = model('articleclass');
  128. $article_class = $articleclass_model->getOneArticleclass($article['ac_id']);
  129. if (empty($article_class) || !is_array($article_class)) {
  130. $this->error(lang('article_show_delete'));//'该文章已随所属类别被删除'
  131. }
  132. $default_count = 5;//定义最新文章列表显示文章的数量
  133. /**
  134. * 分类导航
  135. */
  136. $nav_link = array(
  137. array(
  138. 'title' => lang('homepage'), 'link' => HOME_SITE_URL
  139. ), array(
  140. 'title' => $article_class['ac_name'],
  141. 'link' => (string)url('Article/index', array('ac_id' => $article_class['ac_id']))
  142. ), array(
  143. 'title' => lang('article_show_article_content')
  144. )
  145. );
  146. View::assign('nav_link_list', $nav_link);
  147. /**
  148. * 左侧分类导航
  149. */
  150. $condition = array();
  151. $condition[] = array('ac_parent_id','=',$article_class['ac_id']);
  152. $sub_class_list = $articleclass_model->getArticleclassList($condition);
  153. if (empty($sub_class_list) || !is_array($sub_class_list)) {
  154. $condition[] = array('ac_parent_id','=',$article_class['ac_parent_id']);
  155. $sub_class_list = $articleclass_model->getArticleclassList($condition);
  156. }
  157. View::assign('sub_class_list', $sub_class_list);
  158. /**
  159. * 文章列表
  160. */
  161. $child_class_list = $articleclass_model->getChildClass($article_class['ac_id']);
  162. $ac_ids = array();
  163. if (!empty($child_class_list) && is_array($child_class_list)) {
  164. foreach ($child_class_list as $v) {
  165. $ac_ids[] = $v['ac_id'];
  166. }
  167. }
  168. $ac_ids = implode(',', $ac_ids);
  169. $article_model = model('article');
  170. $condition = array();
  171. $condition[]=array('ac_id','in',$ac_ids);
  172. $condition[]=array('article_show','=','1');
  173. $article_list = $article_model->getArticleList($condition);
  174. /**
  175. * 寻找上一篇与下一篇
  176. */
  177. $pre_article = $next_article = array();
  178. if (!empty($article_list) && is_array($article_list)) {
  179. $pos = 0;
  180. foreach ($article_list as $k => $v) {
  181. if ($v['article_id'] == $article['article_id']) {
  182. $pos = $k;
  183. break;
  184. }
  185. }
  186. if ($pos > 0 && is_array($article_list[$pos - 1])) {
  187. $pre_article = $article_list[$pos - 1];
  188. }
  189. if ($pos < count($article_list) - 1 and is_array($article_list[$pos + 1])) {
  190. $next_article = $article_list[$pos + 1];
  191. }
  192. }
  193. View::assign('pre_article', $pre_article);
  194. View::assign('next_article', $next_article);
  195. /**
  196. * 最新文章列表
  197. */
  198. $count = count($article_list);
  199. $new_article_list = array();
  200. if (!empty($article_list) && is_array($article_list)) {
  201. for ($i = 0; $i < ($count > $default_count ? $default_count : $count); $i++) {
  202. $new_article_list[] = $article_list[$i];
  203. }
  204. }
  205. View::assign('new_article_list', $new_article_list);
  206. $seo_param = array();
  207. $seo_param['name'] = $article['article_title'];
  208. $seo_param['article_class'] = $article_class['ac_name'];
  209. $seo_param['description'] = ds_substing(htmlspecialchars_decode($article['article_content']));
  210. //SEO 设置
  211. $seo = model('seo')->type('article_content')->param($seo_param)->show();
  212. $this->_assign_seo($seo);
  213. return View::fetch($this->template_dir.'article_show');
  214. }
  215. }