Что нового

Ищу исполнителя DLE Simple Forum: Простой форум средствами DLE

Ознакомились с правилами?
  1. Да

dasdeman

Посетитель
OLD SkripTers
Регистрация
17 Дек 2019
Сообщения
69
Реакции
1
Автор разработки
Zdraff
Версия DLE
13.2-17.3
1547970960_2.png

Здравствуйте, это модуль простого форума использующий стандартные возможности DLE. Он работает на DLE 18.0, но есть пару незначительных ошибок. Помогите знающие, пожалуйста поправить их. А ошибки такие:

1) При создании категории нужно выбрать "Критерий сортировки новостей" - По дате последнего комментария, чтобы актуальные темы со свежими ответами были в верху списка. Так вот, когда выбираешь такую сортировку, то появляется ошибка:

Код:
Error Number: 1054
The Error returned was: Unknown column 'last_comm' in 'order clause'
SQL query: SELECT p.id FROM dle_post p INNER JOIN (SELECT DISTINCT dle_post_extras_cats.news_id FROM dle_post_extras_cats WHERE cat_id IN ('12')) c ON (p.id=c.news_id) WHERE approve=1 AND date < '2025-03-31 10:37:43' ORDER BY fixed desc, last_comm DESC LIMIT 0,10

2) Не отображает аватар ТС. Но если в плагине, в engine/modules/show.full.php убрать условие if ($cat_info[$cat_list[0]]['is_forum_cat'] == 1) { то аватар работает (не знаю на сколько критично его убирать, по идее не особо)

Код:
Было так
if ($cat_info[$cat_list[0]]['is_forum_cat'] == 1) {
    $avatar = $db->super_query("SELECT foto FROM ".PREFIX."_users WHERE name='{$row['autor']}'");
    if($avatar['foto']) $tpl->set('{avatar}', $avatar['foto']);
    else $tpl->set('{avatar}', "{THEME}/dleimages/noavatar.png");
}

Стало так
    $avatar = $db->super_query("SELECT foto FROM ".PREFIX."_users WHERE name='{$row['autor']}'");
    if($avatar['foto']) $tpl->set('{avatar}', $avatar['foto']);
    else $tpl->set('{avatar}', "{THEME}/dleimages/noavatar.png");

3) Когда создаешь категорию, а потом заходишь ее редактировать, нужно установить галочку "Эта категория принадлежит форуму". Вот ее ставишь, сохраняешь, а после вновь заходишь, то она слетает. Но если вместе с ней поставить галочку "Включить Дзен по умолчанию" тогда она сохраняется. ХЗ почему так и на что вообще это влияет.

Помогите пожалуйста пофиксить ошибки, ибо модуль прикольный, думаю многим пригодиться.

Оригинальная тема автора на dle-news.ru DLE Simple Forum
Архив с файлами:
  • dle-simple-forum-0_31.zip
    10 КБ · ID: 5341
 
Ошибка SQL при сортировке по дате последнего комментария

Ошибка Unknown column 'last_comm' означает, что в таблице dle_post нет столбца last_comm.

Возможное решение:
Проверьте, есть ли поле last_comm в таблице dle_post.

Выполните в phpMyAdmin или MySQL-консоли:

Код:
SHOW COLUMNS FROM dle_post;<br>

Если last_comm отсутствует, его нужно добавить.

Создайте поле last_comm, если его нет:
Код:
ALTER TABLE dle_post ADD COLUMN last_comm DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;<br>

Обновите даты последнего комментария для существующих записей:

Код:
UPDATE dle_post p<br>LEFT JOIN dle_comments c ON p.id = c.post_id<br>SET p.last_comm = (SELECT MAX(date) FROM dle_comments WHERE post_id = p.id);<br>

Проверьте, обновляется ли поле last_comm при добавлении комментария.

Добавьте триггер для автоматического обновления:
Код:
CREATE TRIGGER update_last_comment_time<br>AFTER INSERT ON dle_comments<br>FOR EACH ROW<br>UPDATE dle_post SET last_comm = NOW() WHERE id = NEW.post_id;<br>

Теперь сортировка по last_comm должна работать.

Не отображается аватар ТС:

Причина:
Условие if ($cat_info[$cat_list[0]]['is_forum_cat'] == 1) блокирует загрузку аватара. Скорее всего, is_forum_cat либо отсутствует, либо не установлено в 1.

Решение:
Проверьте, есть ли поле is_forum_cat в таблице dle_category:
Код:
SHOW COLUMNS FROM dle_category;<br>

Если нет - добавьте:
Код:
ALTER TABLE dle_category ADD COLUMN is_forum_cat TINYINT(1) NOT NULL DEFAULT 0;<br>

Проверьте, что is_forum_cat действительно 1 у форумных категорий:
Код:
SELECT id, name, is_forum_cat FROM dle_category WHERE is_forum_cat = 1;<br>

Все это описано на глаз. Так что перед тем как пробовать, делайте копию БД.
 
С аватаром решил, в engine/inc/categories.php в добавляемой строке $is_forum_cat = isset($_POST['is_forum_cat']) ? intval($_POST['is_forum_cat']): 0; была опечатка.
С чекбоксом тоже, конфликтовал с $ifch6, такой же и у Дзена, просто поменял на $ifch9.
Еще добавил вывод названия группы ТС и его количество комментариев.
А вот с сортировкой ни как, выше советы не помогли, полагаю где-то еще в самом плагине ошибка а не в запросах.

Обновленный архив, все работает как нужно, кроме сортировки по последнему комментарию:
  • dle-simple-forum.zip
    10.1 КБ · ID: 5347
 
Попробуйте загрузить вот этот плагин.
Там в сортировке скобка не верно закрывалась. Может из за этого и не работало
 

Вложения

Не, всё равно ошибка блин(
 
Пробуйте этот
 

Вложения

Последнее редактирование:
Заработало, спасибо большое.
 
Последнее редактирование:
Единственное, когда создаешь тему, дата имеет такой вид 30-11--0001, 00:00, но если ответить, потом нормально
 
Единственное, когда создаешь тему, дата имеет такой вид 30-11--0001, 00:00, но если ответить, потом нормально
Под темой вы имеете веду публикацию созданную внутри форума?
Если так, то не знаю в чем проблема, у меня дата изначально верно ставится.
 
Под темой вы имеете веду публикацию созданную внутри форума?
Если так, то не знаю в чем проблема, у меня дата изначально верно ставится.
Да, все нормально. То если создавать пост через админку, появляется такая дата, а если через кнопку "Новая тема", то дата становится как нужно. Еще раз спасибо! Не критично, все темы все равно создаются через кнопку)
 
Верх