•

• Mike •

Ищущий всегда найдет… что поискать… ))
+912
Репутация
3834
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Новые статьи и foreach 10 апреля 2011 в 00:09
Может так будет понятнее…

/modules/mod_latest/module.php
  1.  
  2. <?php
  3. /*********************************************************************************************/
  4. // //
  5. // InstantCMS v1.7 (c) 2010 FREEWARE //
  6. // http://instantcms.ru/, info@instantcms.ru //
  7. // //
  8. // written by Vladimir E. Obukhov, 2007-2010 //
  9. // //
  10. /*********************************************************************************************/
  11.  
  12. function mod_latest($module_id){ // определяем последние материалы по идентификатору модуля
  13.  
  14. $inCore = cmsCore::getInstance(); // подгружаем класс cms.php
  15. $inDB = cmsDatabase::getInstance(); // подгружаем класс db.class.php
  16.  
  17. $cfg = $inCore->loadModuleConfig($module_id); //загружаем конфигурацию модуля
  18.  
  19. global $_LANG; // определяем глобальную языковую переменную
  20.  
  21. if (!isset($cfg['showrss'])) { $cfg['showrss'] = 1; } //если в конфиге не установлено значение для rss включаем rss
  22. if (!isset($cfg['subs'])) { $cfg['subs'] = 1; } //если в конфиге не установлено разрешать подразделы включем их
  23. if (!isset($cfg['cat_id'])) { $cfg['cat_id'] = 1; } //если в кофиге не задана определенная категория включаем главную
  24.  
  25. // опции постраничной разбивки
  26. $page = 1;
  27. $perpage = $cfg['newscount']; //берем из конфига количество новостей на страницу
  28.  
  29. $today = date("Y-m-d H:i:s"); //устанавливаем формат даты
  30.  
  31. if ($cfg['cat_id'] != '-1') //если в конфиге не установлено показывать из всех категорий
  32. {
  33. if (!$cfg['subs']) //если в конфиге не установлено показывать из подразделов
  34. {
  35. //select from category //то выбираем только из указанной категории по её ID
  36. $catsql = ' AND con.category_id = '.$cfg['cat_id']; //добавляем к запросу соответствующее условие
  37. }
  38. else //иначе
  39. {
  40. //select from category and subcategories // выбираем из категории и подраздела
  41. $rootcat = $inDB->get_fields('cms_category', 'id='.$cfg['cat_id'], 'NSLeft, NSRight'); //определяем родительскую категорию
  42. $catsql = "AND (cat.NSLeft >= {$rootcat['NSLeft']} AND cat.NSRight <= {$rootcat['NSRight']})"; //включаем из неё подразделы
  43. }
  44. $rssid = $cfg['cat_id']; //передаем записи из выбранной категроии в rss
  45. }
  46. else //иначе
  47. {
  48. $catsql = ''; $rssid = 'all'; //передаем записи из всех категорий
  49. }
  50. //формируем запрос к базе данных и обращаемся к таблице контента применяя сформированные выше условия
  51. $sql = "SELECT con.*,
  52. con.pubdate as fdate,
  53. u.nickname as author,
  54. u.login as author_login
  55. FROM cms_content con
  56. LEFT JOIN cms_category cat ON cat.id = con.category_id
  57. LEFT JOIN cms_users u ON u.id = con.user_id
  58. WHERE con.published = 1 AND con.showlatest = 1
  59. AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today'))
  60. ".$catsql."
  61. ORDER BY con.id DESC
  62. LIMIT ".$cfg['newscount'];
  63.  
  64. $result = $inDB->query($sql); //получаем результат запроса
  65.  
  66. $is_con = false; // не контент
  67.  
  68. if ($cfg['is_pag']) //если включено разбиение на страницы (пэйджинация)
  69. {
  70. // Считаем общее количество материалов если опция пагинация включена SELECT 1 ???
  71. $sql_total = "SELECT 1
  72. FROM cms_content con
  73. LEFT JOIN cms_category cat ON cat.id = con.category_id
  74. WHERE con.published = 1
  75. AND con.showlatest = 1
  76. AND (con.is_end=0 OR (con.is_end=1 AND con.enddate >= '$today' AND con.pubdate <= '$today')) ".$catsql."";
  77. $result_total = $inDB->query($sql_total) ; //всего результатов
  78. $total_page = $inDB->num_rows($result_total); //всего страниц
  79. }
  80.  
  81. if ($inDB->num_rows($result)) //если результат вернулся не пустой (строка 63)
  82. {
  83. $is_con = true; // контент
  84. $inCore->loadModel('content'); // вызываем из cms.php метод loadModel
  85. $model = new cms_model_content(); //присваиваем модели новый объект контент
  86.  
  87. $articles = array(); //определяем новый пустой массив артикулов
  88. while($con = $inDB->fetch_assoc($result)) //заполняем его значениями из результата запроса выше (строка 63)
  89. { //перебирая в цикле все строки из него в виде ассоциативного массива
  90. $next = sizeof($articles); //по шагу вхождения
  91. $articles[$next]['id'] = $con['id'];
  92. $articles[$next]['title'] = $con['title'];
  93. $articles[$next]['hits'] = $con['hits'];
  94. $articles[$next]['href'] = $model->getArticleURL(null, $con['seolink']);
  95. $articles[$next]['author'] = $con['author'];
  96. $articles[$next]['authorhref'] = cmsUser::getProfileURL($con['author_login']);
  97. $articles[$next]['comments'] = $cfg['showcom'] ? $inCore->getCommentsCount('article', $con['id']) : false;
  98. $articles[$next]['date'] = $inCore->dateformat($con['fdate']);
  99. $articles[$next]['description'] = $con['description'];
  100. $articles[$next]['image'] = (file_exists(PATH.'/images/photos/small/article'.$con['id'].'.jpg') ? 'article'.$con['id'].'.jpg' : '');
  101. }
  102.  
  103. }
  104.  
  105. $smarty = $inCore->initSmarty('modules', 'mod_latest.tpl');
  106. //инициируем объект Смарти и передаем в него переменные
  107.  
  108. $smarty->assign('articles', $articles); //в Смарти {$articles}
  109. $smarty->assign('rssid', $rssid); //в Смарти {$rssid}
  110. if ($cfg['is_pag']) //если установлена пейджинация передаем в Смарти {$is_pad}
  111. {
  112. $smarty->assign('pagebar', cmsPage::getPagebar($total_page, $page, $perpage, 'javascript:conPage(%page%,'.$module_id.')')); //в Смарти {$pagebar}
  113. }
  114. $smarty->assign('is_ajax', false); //в Смарти {$is_ajax} по умолчанию ложно
  115. $smarty->assign('is_con', $is_con); //в Смарти {$is_con} наличие контента
  116. $smarty->assign('module_id', $module_id); // и т.д.
  117. $smarty->assign('cfg', $cfg);
  118. $smarty->display('mod_latest.tpl'); //выводим Шаблон Модуля
  119.  
  120. return true;
  121. }
  122. ?>
  123.  
дальше в шаблоне:
#2 [ЕСТЬ РЕШЕНИЕ] Справочник по расположению модулей 9 апреля 2011 в 15:22
ВАЖНО в файле position.txt перед названием позиций не должно быть пробелов, иначе показываться в выпадающем списке в админке они будут, но при сохранении будут сбрасываться на первый пункт…
#3 стена профиля без пролистывания 8 апреля 2011 в 20:06
/core/classes/user.class.php в самом файле определение функции public static function getUserWall
строка 833: $pages = 10;
исправляем 10 на 100 или 1000, хотя больше 50, я бы не стал такую “портянку” читать будет не удобно ИМХО 😊
#4 [ЕСТЬ РЕШЕНИЕ] Спецшаблон для главной 8 апреля 2011 в 18:01
Название шаблона должно соответствовать названию папки с шаблоном в директории /templates
#5 [ЕСТЬ РЕШЕНИЕ] Спецшаблон для главной 8 апреля 2011 в 17:38
Если в поле стоит ноль "0" показывается шаблон по умолчанию
#6 [ЕСТЬ РЕШЕНИЕ] Спецшаблон для главной 8 апреля 2011 в 17:35


• Mike •, я так понимаю поле template указывает шаблон по умолчанию. Нет?

Пилигриm

Да для определенного пунка меню. root соответствует странице Главная, ну или как она обзывается в языковом файле…
#7 [ЕСТЬ РЕШЕНИЕ] Спецшаблон для главной 8 апреля 2011 в 17:24


Как задать для главной страницы сайта шаблон отличный от дефолтного?
У меня на сайте уже сейчас используется три шаблона. Один из них нужен только для главной и он установлен по умолчанию. Для других страниц (или их разделов) приходится создавать пункт меню и указывать другой пункт. Но для главной всегда вылазит шаблон установленный по умолчанию, а это не удобно. Особенно когда пользователь хочет отредактировать какой-нибудь материал, там всегда выскакивает тот же шаблон что и на главной.
iCMS 1.7

Пилигриm

Если есть доступ к базе данных через phpMyAdmin, например, то в таблице cms_menu можно вручную отредактировать поле template для записи root, указав нужный файл шаблона. Это как вариант, возможно есть другое решение 😊
#8 8 апреля 2011 в 14:39
#9 5 апреля 2011 в 02:08


… после установки обновления из трака..

opariks

Я не устанавливал обновлений (чистый дистрибутив CMS 1.7 из раздела «Скачать»). Просто в одном месте исправить проще… 😊
#10 4 апреля 2011 в 20:01
В файле /modules/mod_menu/module.php строка 18:
  1. if (!isset($cfg['menu'])) { $menu = 'mainmenu'; } else { $menu = $cfg['menu']; }
  2.  
исправляем на:
  1. if (!isset($cfg['showtype'])) { $menu = 'mainmenu'; } else { $menu = $cfg['showtype']; }
  2.  
ибо в конфигурации модуля 'menu' нет, а есть 'showtype' )
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.