Проблемы в модулях на 1.10.1

#1 20 января 2013 в 22:13
На днях написал модуль "Цитата". На 1.9 и 1.10= работает как надо.
А вот на 1.10.1 прячется. Модуль устанавливается, настраивается, записи через админку вносятся, но на сайте не отображается запрашиваемая из базы данных информация. При этом заголовок показывается.
Переменная $module_id пуста. Но подозреваю, что это не все. Помогите разобраться. Модуль можно скачать и установить, сайту он проблем не приносит. А вот код файла /modules/mod_quote/module.php:
  1. function mod_quote($module_id){
  2.  
  3. $inCore = cmsCore::getInstance(); // подключаем ядро
  4. $inDB = cmsDatabase::getInstance(); // подключаем базу
  5. $inUser = cmsUser::getInstance(); //подключаем пользователей
  6. $cfg = $inCore->loadModuleConfig($module_id); //подключаем конфиг модуля
  7.  
  8. global $_LANG; //подключаем языковой файл
  9.  
  10. $userid = $inUser->id; //id пользователя
  11. $login = $inUser->login; //логин пользователя
  12. $nickname = $inUser->nickname; //никнейм пользователя
  13.  
  14.  
  15. //код модуля
  16. $orderby = $cfg['orderby'];
  17. $limit = $cfg['limit'];
  18. $justnow = date('Y-m-d H:i:s');
  19. $dateendno = "0000-00-00 00:00:00";
  20.  
  21. $sql = "SELECT * FROM cms_quote
  22. WHERE mod_id = $module_id AND published = 1 AND date <= '$justnow' AND (dateend > '$justnow' OR dateend = '$dateendno')
  23. ORDER BY $orderby
  24. LIMIT $limit
  25. ";
  26. $result = $inDB->query($sql);
  27.  
  28.  
  29. if ($inDB->num_rows($result)){
  30.  
  31. $quote = array();
  32. while($con = $inDB->fetch_assoc($result)){
  33. $next = sizeof($quote);
  34. $quote[$next]['id'] = $con['id'];
  35. $quote[$next]['title'] = $con['title'];
  36. $quote[$next]['text'] = $con['text'];
  37. $quote[$next]['source'] = $con['source'];
  38. $quote[$next]['link'] = $con['link'];
  39. $quote[$next]['date'] = $con['date'];
  40. $quote[$next]['dateend'] = $con['dateend'];
  41. $quote[$next]['ordering'] = $con['ordering'];
  42. }
  43.  
  44. }
  45.  
  46.  
  47.  
  48.  
  49.  
  50. // передаем в шаблон переменные
  51. $smarty = $inCore->initSmarty('modules', 'mod_quote.tpl');
  52. $smarty->assign('LANG', $_LANG); // языковая переменная
  53. $smarty->assign('quote', $quote);
  54. $smarty->assign('cfg', $cfg);
  55. $smarty->display('mod_quote.tpl');
  56.  
  57. return true;
  58.  
  59. }
#2 20 января 2013 в 22:30
Если в в теле модуля на сайте выводиться название вашего модуля что то по типу mod_quote тогда проблема в том что не правильно сработала установка модуля, посмотрите в БД в таблице cms_modules для вашего модуля значение столбца is_external (вроде).
#3 20 января 2013 в 22:34


Если в в теле модуля на сайте выводиться название вашего модуля что то по типу mod_quote тогда проблема в том что не правильно сработала установка модуля, посмотрите в БД в таблице cms_modules для вашего модуля значение столбца is_external (вроде).

maxisoft

Нет, модуль устанавливается правильно и заголовок правильный. Проблема однозначно между файлом module.php и движком 1.10.1.
#4 20 января 2013 в 22:37
ОТписываюсь.
Ид модуль получает 100%
Не корректно работало галочка безсрочно. дата окончания выставилась 1970 год.
Поправил ручками дату всё заработало
#5 20 января 2013 в 22:37
Например, если запрос сделать такого вида:
  1. $sql = "SELECT * FROM cms_quote
  2. ";
то записи выводятся (ес-но все, без выборки).
#6 20 января 2013 в 22:39


ОТписываюсь.
Ид модуль получает 100%
Не корректно работало галочка безсрочно. дата окончания выставилась 1970 год.
Поправил ручками дату всё заработало

Димитриус

! Щас-щас гляну
#7 20 января 2013 в 22:48
У вас проблема вот тут
  1. if($dateendno == '1'){
  2. $dateend = '0000-00-00 00:00:00';
  3. }
  4.  
  5. $newdate=date('Y-m-d H:i:s', strtotime($date));
  6. $dateend=date('Y-m-d H:i:s', strtotime($dateend));
Когда вы пытаетесь преобразовать 0000-00-00 00:00:00 функцией strtotime
так как в юниксе время исчисления начинается с 1970 года…
#8 20 января 2013 в 22:48
Нет. Не работает (#4). Это наверное у вас 1.10 > 1.10.1 Там работает. Только этот момент надо поправить с датой.
#9 20 января 2013 в 22:59
чистая 1.10.1 работает. выводит
#10 20 января 2013 в 23:00

Когда вы пытаетесь преобразовать 0000-00-00 00:00:00 функцией strtotime
так как в юниксе время исчисления начинается с 1970 года...

Димитриус

Момент с датой поправлю, но проблема не в нем. Так тоже не работает.

  1. $sql = "SELECT * FROM cms_quote
  2. WHERE mod_id = $module_id AND published = 1
  3. ";
#11 20 января 2013 в 23:13
Да. Проблема ТОЧНО с $module_id. Объявляю переменную принудительно перед функцией и внутри нее — все работает.
  1. $module_id = 88;
  2. function mod_quote($module_id){
  3. $module_id = 88;
#12 20 января 2013 в 23:15
Подскажите где вызывается функция mod_quote($module_id)?
#13 20 января 2013 в 23:22
Вот скрин модуля
#14 20 января 2013 в 23:36
Ну что? Что никто не знает откуда вызывается функция модуля? Тобишь код примерно такого содержания: mod_$peremennaya($module_id)
#15 21 января 2013 в 00:41
maxisoft, а вашу проблему удалось решить? Неужели проблема была только в экстернале?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.