Комментарии перестали отображаться

#1 2 февраля 2012 в 00:43
Сегодня обнаружил, что пропали комментарии под под фотографиями, под статьями, в блогах,
короче во всех компонентах. Только например под статьёй или фоткой, где должны быть комментарии отображается их количество, например "Комментарии (23)"
По адресу мой_сайт/comments комментарии отображаются нормально от всех компонентов, а в самих компонентах
не отображаются. Последний раз я видел отображение комментариев в компонентах дня два назад. Ничего не трогал в настройках с этого времени, а это случилось само по себе.
Настройки компонента "Комментарии пользователей" пробовал менял по всякому на всякий случай в разных вариантах, но не помогло. Комментарии не видны для всех групп пользователей, а также и администратору.
Версия 1.9 после обновления с 1.8. Шаблон дефолтный. Ничего подобного никогда ещё не было.
Если не совсем понятно объяснил подробности, то можно посмотреть это на сайте gubkin31.ru
Даже не знаю, что и делать, что это может быть?
#2 2 февраля 2012 в 01:13
У вас в странном месте грузится плагин юзертип попробуйте его совсем отключить… и выкинуть из шаблона…
#3 2 февраля 2012 в 01:33
Удалил плагин юзертип и ещё на всякий случай четыре не очень нужные плагина удалил, очистил папку cache на хостинге,
посмотрел с разных браузеров, но пока всё по прежнему, комментарии не отображаются.

Если кто хочет можете добавить комментарии без регистрации, посмотрите результат, (сайт gubkin31.ru) хотя я уже написал выше что получается.
#4 2 февраля 2012 в 01:48
да уже пробовал…
попробуйте включить на время отладку и показ всех ошибок в index.php сейчас просто оболочка грузиться родительский шаблон от комментов а самих комментов нет…
#5 2 февраля 2012 в 08:04
Попробуйте проверить деревья. Может где-то что-то слетело. А заодно в настройках всех групп пользователей проверьте права на добавление комментариев.
#6 2 февраля 2012 в 12:08
Деревья проверял, ничего не слетело, нормально. Во всех группах стоят разрешены права на добавление комментариев,
гости через капчу, добавляю комментарий от администратора, всё равно его нет.

включить на время отладку и показ всех ошибок в index.php

Mike
В админке: "Включить режим отладки:" поставил "ДА" и появилось вот это везде, даже где нет комментариев:
  1. DATABASE ERROR:
  2. SELECT c.*,
  3. IFNULL(v.total_rating, 0) as votes,
  4. IFNULL(u.nickname, 0) as nickname,
  5. IFNULL(u.login, 0) as login,
  6. IFNULL(u.is_deleted, 0) as is_deleted,
  7. IFNULL(p.imageurl, 0) as imageurl,
  8. (NOW() < DATE_ADD(c.pubdate, INTERVAL 30 MINUTE)) as is_editable
  9. FROM cms_comments c
  10. LEFT JOIN cms_ratings_total v ON v.item_id = c.id AND v.target = 'comment'
  11. LEFT JOIN cms_users u ON u.id = c.user_id
  12. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  13. WHERE c.target='photo' AND c.target_id=26 AND c.published=1
  14. ORDER BY c.pubdate ASC
  15. The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
Как бы ошибка базы данных, но я не понимаю что оно означает.
#7 2 февраля 2012 в 12:19
Ещё скажу, что возможно, но не точно, пропадание комментариев как то связано с тем, что последний комментарий добавил гость и это очень длинный комментарий, хотя не такой уж он длинный. Через админку посмотрел этот комментарий, никаких подозрительный кодов, один текст. Можно посмотреть этот коммент по адресу gubkin31.ru/comments (комментарий от Руслан)
Заходил по FTP смотрел папки, файлы, число последнего обращение (исправления), это мои мелкие исправления аж три недели назад когда всё отлично работало, т.е. чужого присутствия в папках на хостинге на глаз не заметно.
#8 2 февраля 2012 в 15:44
Хостер ответил по этому вопросу:


В данном случае проблема в том, что начал превышаться лимит
SQL_MAX_JOIN_SIZE. Попросите разработчика, чтобы он в скриптах перед
проблемным запросом прописал запрос:
SET SQL_BIG_SELECTS=1;
это решит проблему.

Подскажите пожалуйста знающие люди, где прописать SET SQL_BIG_SELECTS=1; в каком файле и на какой строчке?
#9 2 февраля 2012 в 16:53
в файле /components/comments/model.php в функции getComments строка ~188:
  1.  
  2. $sql = "SELECT c.*,
  3.  
вставляйте после SELECT
  1.  
  2. $sql = "SELECT SQL_BIG_SELECTS=1 c.*,
  3.  
#10 2 февраля 2012 в 17:48
Вставил
  1. $sql = "SELECT SET SQL_BIG_SELECTS=1 c.*,
как вы сказали после слова SELECT что здесь:
  1. $sql = "SELECT c.*,
Ниже в коде видно как вставил, но не работает.
  1. /* ==================================================================================================== */
  2.  
  3. /* ==================================================================================================== */
  4.  
  5.  
  6.  
  7. public function getComments($target, $target_id, $cfg){
  8.  
  9.  
  10.  
  11. $comments = array();
  12.  
  13.  
  14.  
  15. if (!$cfg['edit_minutes']) { $cfg['edit_minutes'] = 0; }
  16.  
  17.  
  18.  
  19. $sql = "SELECT $sql = "SELECT SET SQL_BIG_SELECTS=1 c.*, c.*,
  20.  
  21. IFNULL(v.total_rating, 0) as votes,
  22.  
  23. IFNULL(u.nickname, 0) as nickname,
  24.  
  25. IFNULL(u.login, 0) as login,
  26.  
  27. IFNULL(u.is_deleted, 0) as is_deleted,
  28.  
  29. IFNULL(p.imageurl, 0) as imageurl,
  30.  
  31. (NOW() < DATE_ADD(c.pubdate, INTERVAL {$cfg['edit_minutes']} MINUTE)) as is_editable
  32.  
  33. FROM cms_comments c
  34.  
  35. LEFT JOIN cms_ratings_total v ON v.item_id = c.id AND v.target = 'comment'
  36.  
  37. LEFT JOIN cms_users u ON u.id = c.user_id
  38.  
  39. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  40.  
  41. WHERE c.target='$target' AND c.target_id=$target_id AND c.published=1
  42.  
  43. ORDER BY c.pubdate ASC";
  44.  
  45.  
  46.  
  47. $result = $this->inDB->query($sql);
  48.  
  49.  
  50.  
  51. if (!$this->inDB->num_rows($result)) { return false; }
  52.  
  53.  
  54.  
  55. while($comment = $this->inDB->fetch_assoc($result)){
  56.  
  57. $comment['fpubdate'] = cmsCore::dateFormat($comment['pubdate'], true, true);
  58.  
  59. $comments[] = $comment;
  60.  
  61. }
  62.  
  63.  
  64.  
  65. $comments = cmsCore::callEvent('GET_COMMENTS', $comments);
  66.  
  67.  
  68.  
  69. return $comments;
  70.  
  71.  
  72.  
  73. }
  74.  
  75.  
  76.  
  77. public function getComment($id, $cfg) {
  78.  
  79.  
#11 2 февраля 2012 в 17:53
Весь запрос поменяйте на этот:
(Первый вариант неправильный, прошу прошения перепутал с SQL_BIG_RESULT который можно применять внутри SELECT)
  1.  
  2. $sql = "SET SQL_BIG_SELECTS=1";
  3. $sql = "SELECT c.*,
  4. IFNULL(v.total_rating, 0) as votes,
  5. IFNULL(u.nickname, 0) as nickname,
  6. IFNULL(u.login, 0) as login,
  7. IFNULL(u.is_deleted, 0) as is_deleted,
  8. IFNULL(p.imageurl, 0) as imageurl,
  9. (NOW() < DATE_ADD(c.pubdate, INTERVAL {$cfg['edit_minutes']} MINUTE)) as is_editable
  10. FROM cms_comments c
  11. LEFT JOIN cms_ratings_total v ON v.item_id = c.id AND v.target = 'comment'
  12. LEFT JOIN cms_users u ON u.id = c.user_id
  13. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
  14. WHERE c.target='$target' AND c.target_id=$target_id AND c.published=1
  15. ORDER BY c.pubdate ASC";
  16.  
так должно работать…
#12 2 февраля 2012 в 18:07
Если не поможет то в файл /core/classes/db.class.php (строка ~32)
после строки
  1. $this->query("SET NAMES cp1251");
добавьте чтобы получилось так:
  1.  
  2. $this->query("SET NAMES cp1251");
  3. $this->query("SET SQL_BIG_SELECTS=1");
  4.  
а module.php тогда добавлять не нужно
#13 2 февраля 2012 в 18:54

в файл /core/classes/db.class.php (строка ~32)
после строки
$this->query("SET NAMES cp1251");

добавьте чтобы получилось так:
$this->query("SET NAMES cp1251");
$this->query("SET SQL_BIG_SELECTS=1");

• Mike •

Только в этом варианте заработало, УРААА!!!
Комментарии появились все и везде.
Спасибо!!!
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.