Шаблон модуля Новые статьи и пагинация

#1 15 июня 2011 в 14:09
Создал копию модуля Новые статьи, включил пагинацию.
Указал свой шаблон для модуля (НЕ module.tpl).
Почистил кеш. При выводе нового модуля первая страница с новыми статьями выводится согласно нужного шаблона...
При переходе на другую страницу, новые статьи выводятся согласно стандартного шаблона mod_latest.tpl
При возврате на 1-ю страницу, статьи выводятся тоже согласно стандартного шаблона...
Также модифицировал файл module.php, но проблема сохранилась:

  1.  
  2. function mod_latest($module_id){
  3.  
  4. $inCore = cmsCore::getInstance();
  5. $inDB = cmsDatabase::getInstance();
  6.  
  7. $cfg = $inCore->loadModuleConfig($module_id);
  8.  
  9. global $_LANG;
  10.  
  11. if (!isset($cfg['showrss'])) { $cfg['showrss'] = 1; }
  12. if (!isset($cfg['subs'])) { $cfg['subs'] = 1; }
  13. if (!isset($cfg['cat_id'])) { $cfg['cat_id'] = 1; }
  14.  
  15. // опции постраничной разбивки
  16. $page = 1;
  17. $perpage = $cfg['newscount'];
  18.  
  19. $today = date("Y-m-d H:i:s");
  20.  
  21. if ($cfg['cat_id'] != '-1') {
  22. if (!$cfg['subs']){
  23. //select from category
  24. $catsql = ' AND con.category_id = '.$cfg['cat_id'];
  25. } else {
  26. //select from category and subcategories
  27. $rootcat = $inDB->get_fields('cms_category', 'id='.$cfg['cat_id'], 'NSLeft, NSRight');
  28. $catsql = "AND (cat.NSLeft >= {$rootcat['NSLeft']} AND cat.NSRight <= {$rootcat['NSRight']})";
  29. }
  30. $rssid = $cfg['cat_id'];
  31.  
  32. } else { $catsql = ''; $rssid = 'all'; }
  33.  
  34. $sql = "SELECT con.*,
  35. con.pubdate as fdate,
  36. u.nickname as author,
  37. u.login as author_login
  38. FROM cms_content con
  39. LEFT JOIN cms_category cat ON cat.id = con.category_id
  40. LEFT JOIN cms_users u ON u.id = con.user_id
  41. WHERE con.published = 1 AND con.showlatest = 1
  42. AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today'))
  43. ".$catsql."
  44. ORDER BY con.id DESC
  45. LIMIT ".$cfg['newscount'];
  46.  
  47. $result = $inDB->query($sql);
  48.  
  49. $is_con = false;
  50.  
  51. if ($cfg['is_pag']) {
  52. // Считаем общее количество материалов если опция пагинация включена
  53. $sql_total = "SELECT 1
  54. FROM cms_content con
  55. LEFT JOIN cms_category cat ON cat.id = con.category_id
  56. WHERE con.published = 1 AND con.showlatest = 1 AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) ".$catsql."";
  57. $result_total = $inDB->query($sql_total) ;
  58. $total_page = $inDB->num_rows($result_total);
  59. }
  60.  
  61. if ($inDB->num_rows($result)){
  62.  
  63. $is_con = true;
  64.  
  65. $inCore->loadModel('content');
  66. $model = new cms_model_content();
  67.  
  68. $articles = array();
  69. while($con = $inDB->fetch_assoc($result)){
  70. $next = sizeof($articles);
  71. $articles[$next]['id'] = $con['id'];
  72. $articles[$next]['title'] = $con['title'];
  73. $articles[$next]['hits'] = $con['hits'];
  74. $articles[$next]['href'] = $model->getArticleURL(null, $con['seolink']);
  75. $articles[$next]['author'] = $con['author'];
  76. $articles[$next]['authorhref'] = cmsUser::getProfileURL($con['author_login']);
  77. $articles[$next]['comments'] = $cfg['showcom'] ? $inCore->getCommentsCount('article', $con['id']) : false;
  78. $articles[$next]['date'] = $inCore->dateformat($con['fdate']);
  79. $articles[$next]['description'] = $con['description'];
  80. $articles[$next]['image'] = (file_exists(PATH.'/images/photos/small/article'.$con['id'].'.jpg') ? 'article'.$con['id'].'.jpg' : '');
  81. }
  82.  
  83. }
  84. if ($module_id == 108) {
  85. $smarty = $inCore->initSmarty('modules', 'module_art.tpl'); }
  86. else {
  87. $smarty = $inCore->initSmarty('modules', 'mod_latest.tpl'); }
  88. $smarty->assign('articles', $articles);
  89. $smarty->assign('rssid', $rssid);
  90. if ($cfg['is_pag']) {
  91. $smarty->assign('pagebar', cmsPage::getPagebar($total_page, $page, $perpage, 'javascript:conPage(%page%, '.$module_id.')'));
  92. }
  93. $smarty->assign('is_ajax', false);
  94. $smarty->assign('is_con', $is_con);
  95. $smarty->assign('module_id', $module_id);
  96. $smarty->assign('cfg', $cfg);
  97. if ($module_id == 108) {
  98. $smarty->display('module_art.tpl'); }
  99. else { $smarty->display('mod_latest.tpl'); }
  100. return true;
  101. }
  102.  
#2 15 июня 2011 в 18:05

При переходе на другую страницу, новые статьи выводятся согласно стандартного шаблона mod_latest.tpl При возврате на 1-ю страницу, статьи выводятся тоже согласно стандартного шаблона...

Обратите внимание на то что вы указали условие, на переключение на mod_latest.tpl вот код:
  1. if ($module_id == 108) {
  2. $smarty->display('module_art.tpl'); }
  3. else { $smarty->display('mod_latest.tpl'); }
чтобы он перключился на темплайт другого модуля.
#3 15 июня 2011 в 18:16
module_id 108 это как раз нужный мне модуль с нестандартным шаблоном (module_art.tpl). По моему в условии указано, если ид модуля 108 то шаблон module_art.tpl, в других случаях стандартный шаблон…
#4 15 июня 2011 в 18:24
так вот и срабатывают другие условия… не проще просто
  1. $smarty->display('module_art.tpl');
или эти условия обязательно должны быть? И в чём их суть? просто дальше срабатывает условие else {}
#5 16 июня 2011 в 00:07
Условие else для второго модуля Новые статьи. У меня 2 одинаковых модуля. Условие else срабатывает, для остальных случаев (когда модуль ид не равно 108)
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.