/ / Простой форум средствами DLE
январь 19 2019

Простой форум средствами DLE


После перерыва в работе с DLE в несколько лет снова понадобилось развернуть информационный сайт про электромобили - и выбор движка был очевиден. И захотел я прикрутить к нему форум. Но вспоминая, сколько проблем сулит установка форума (помню и бесконечные кривые интеграции, которые надо было править с обновлением скриптов, и дырявые самописные форумы, после установки которых приходилось часами вычищать от вирусни сервер), подумал: а ведь можно запилить форум, используя стандартные возможности DLE. А их нехватку именно в контексте форума можно восполнить, дописав плагин. Решил так и сделать.

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

Сначала минусы:
  • небольшая функциональность. Понятное дело, монстры типа vBulletin и IPB имеют куда больше функций;

Что-то больше одного пункта в голову не пришло).

А теперь плюсы:
  • не требуется написание интеграций и использованрие двух отдельных баз данных, дружить разные авторизации и т.д.;
  • исходя из предыдущего: не требуется переписывание этих интеграций после выхода и обновления DLE или движка форума;
  • все заботы о безопасности лежат на DLЕ и его разработчике;
  • быстродействием DLE не может похвастаться ни один форумный движок. А наш может :);
  • для настройки дизайна используются шаблоны TPL, ничего нового изучать не нужно (плагин добавляет некоторые новые теги);
  • кэшированием также занимается DLE;
  • нагрузка на сервер почти не увеличивается. Единственное - обновляется дата последнего комментария в новости - плюс один запрос при оставлении комментария;
  • за этот плагин не нужно платить. Вы покупаете лицензию DLE, а плагин бесплатный.
Скриншоты того, что у меня получилось в самой первой версии. Ссылка на демо внизу статьи. Сайту на момент создания этой публикации меньше двух месяцев, поэтому форум пока пустой.





Функционал плагина:
  • Сортировка новостей (тем форума) в категории (разделе форума) по последнему комментарию и дате создания темы;
  • возврат в раздел после создания темы;
  • отдельный шаблон для создания темы на форуме;
  • вывод аватарки автора темы;
  • добавление тегов [before][/before] и [after][/after] в шаблон короткой новости, отображающие html код перед списком новостей и после него. Удобно, когда надо отобразить новости (темы) в таблице. Будет работать на всём сайте!
  • тег - ссылка на сорздание темы из раздела;
Итак, установка. Оговорюсь, что плагин писал для версии DLE 13.1 и корректная его работа не гарантируется на более старых версиях движка. Еще предупреждаю, что те немногие шаблоны, которые используются в форуме, вам придется кастомизировать самостоятельно. Я выложил шаблоны со своего сайта только для того, чтобы вы могли сориентироваться, что к чему.

1. Скачиваем архив (ссылка внизу статьи).
2. Устанавливаем плагин dle-simple-forum.xml. Включаем его.
3. Закидываем папку из архива forum в "директория_с_вашим_шаблоном/modules/".
3. Создаем корневую категорию форума. При создании прописываем шаблон короткой новости: modules/forum/main_shortstory. Внизу ставим галку "Эта категория принадлежит форуму". У меня эта категория называется "Форум" и имеет альтернативное название "forum".
4. Создаем вложенные категории, которые будут служить разделами форума. В каждой категории прописываем: шаблон короткой новости: modules/forum/topic_shortstory и шаблон полной новости modules/forum/topic_fullstory. Также ставим галки "Эта категория принадлежит форуму". Еще нужно выставить "Критерий сортировки новостей" - По дате последнего комментария. Пропишите "Описание категории" - они будут отображаться рядом с названиями разделов. Я еще запретил показываться новостям из категории в общем RSS потоке.
5. Если у вас включены ЧПУ, то в корневом файле .htaccess после
RewriteRule ^addnews.html$ index.php?do=addnews [L]

добавьте
RewriteRule ^addtopic.html/([0-9]+)/([^.]+)$ index.php?do=addnews&forum=1&category=$1&from=$2 [L]

6. Завершите настройку, оформив шаблоны в соответствии с дизайном вашего сайта. На всякий случай выложу мои стили для таблиц форума:
table.forum_cats {
	width: 100%;
	margin-top: 10px;
}

table.forum_cats tr {
	border-bottom: 1px solid #ebebeb;
}

table.forum_cats tr:last-of-type {
	border-bottom: none;
}

table.forum_cats td {
	padding: 10px;
}

table.forum_cats tbody td {
	font-size: 1.2em;
}

table.forum_cats thead {
	background-color: #f8f8f8;
}
table.forum_cats tbody a {
	text-decoration: underline;
}

table.forum_cats tbody div {
	font-size: 0.75em;
}

Готово! Вроде ничего не забыл.
Я планирую потихоньку дописывать функционал форума и актуализировать плагин под новые версии движка. Если какие-то вопросы - вэлкам в комментарии.

Версия DLE: 13.1 и выше. Возможно будет работать на более старых версиях.
Демо: Форум об электромобилях.
Скачать модуль: https://vk.cc/8WOKcW.

Комментарии

Zdraff

Zdraff

20 января 2019 11:08 Клиенты
0
Сразу сделал маленький фиксик. Архив обновил.
TCSE

TCSE

20 января 2019 12:00 Клиенты
2
Полезная штука!

Позволю себе пару советов:

Модуль для DLE 13.1 лучше собирать в виде архива
скрипшот https://yadi.sk/i/rW0tTs_ttbN2ug
тогда можно загружать архив через стандартный диалог
Утилиты - Управления плагинами - Загрузить плагин

при этом файлы форума автоматически попадут в папку активного шаблона по умолчанию.
Zdraff

Zdraff

20 января 2019 12:07 Клиенты
0
TCSE,
Спасибо! Учту в новых версиях.
kamensk

kamensk

20 января 2019 19:04 Клиенты
0
TCSE,
Не понял. Так а сейчас, что не получится загрузить плагин?
fortuna

fortuna

20 января 2019 21:04 Клиенты
0
Привет! А что необходимо и где заменить, что бы не forum было, а допустим vopros-otvet?
Я создал папку в шаблоне именно vopros-otvet и в созданных категориях указал
modules/vopros-otvet/main_shortstory
modules/vopros-otvet/topic_shortstory
modules/vopros-otvet/topic_fullstory
fortuna

fortuna

20 января 2019 21:35 Клиенты
0
И здесь точно все правильно?
https://prnt.sc/m9s393
Zdraff

Zdraff

21 января 2019 04:01 Клиенты
0
kamensk,
Получится.

Цитата: fortuna
необходимо и где заменить, что бы не forum было, а допустим vopros-otvet

Альтернативное имя корневой категории. Поддиректория с шаблонами может называться как угодно, лишь бы правильный путь к шаблонам был прописан в настройках категорий.
Цитата: fortuna
здесь точно все правильно?

А что смущает?
alexpsp

alexpsp

21 января 2019 11:32 Клиенты
0
Можно ещё либо в раках версий, либо отдельно интегрировать всё с DLE UserBox от LazyDev
Zdraff

Zdraff

22 января 2019 06:24 Клиенты
0
Внимание! Внес некоторые изменения, у некоторых были проблемы с добавлением тем. В архив добавил два ридми: для обновления и установки. Актуальная версия: 0.2: https://vk.cc/8WOKcW
Lexxs

Lexxs

22 января 2019 10:54 Клиенты
0
Цитата: Zdraff
Актуальная версия: 0.2: https://vk.cc/8WOKcW

404
Not Found

The resource requested could not be found on this server!
так же как и первая ссылка.

Очень полезное дополнение, давно такое искал, но его небыло.
Благодарность автору !
Zdraff

Zdraff

22 января 2019 11:10 Клиенты
0
Спасибо, ссылку поправил. И спасибо админам, что обновили ссылку в новости.
alexpsp

alexpsp

22 января 2019 19:21 Клиенты
1
Идёт конфликт с хаком https://pafnuty.name/statyi/145-more-addnews.html =(

ранее добавленные шаблоны слетают и ошибка из-за:
Далее находим:
$tpl->load_template( 'addnews.tpl' );

Заменяем на:
$tpl->load_template( $addnewsTemplate.'.tpl' );


Вот она, проблема плагинов дле, если несколько похожих плагинов, то всё слетает.
celsoft

celsoft

22 января 2019 19:32 Администраторы
3
Цитата: alexpsp
Вот она, проблема плагинов дле, если несколько похожих плагинов, то всё слетает.

Это не проблема системы плагинов как таковой, просто для одного и того же места и функциональности стандартного DLE, делается взаимоисключающая функциональность. Такие конфликты при любой системе плагинов. Тут нужно просто плагины писать с учетом функциональности обеих плагинов.
Mek

Mek

24 января 2019 19:57 Клиенты
1
Цитата: celsoft
Тут нужно просто плагины писать с учетом функциональности обеих плагинов.

То есть, разработчик, перед написанием плагина, должен изучить все остальные плагины от других разработчиков, на предмет наличия конфликтов кода?
celsoft

celsoft

24 января 2019 23:44 Администраторы
1
Цитата: Mek
То есть, разработчик, перед написанием плагина, должен изучить все остальные плагины от других разработчиков, на предмет наличия конфликтов кода?

Разработчик не должен. Но если желает, то может. Я лишь сказал, что если один плагин говорит: "загрузи этот шаблон", а другой в этом же месте и в этой же ситации говорит: "загрузи другой шаблон", то конфликт неизбежен при любой системе плагинов. А вы написали что это недостаток именно системы плагинов, что не соответствует действительности.
Lexxs

Lexxs

25 января 2019 08:11 Клиенты
0
Именно поэтому, каждый плагин должен работать по своему уникальному префиксу, и различаться системой плагинов, чтобы не вызывать конфликтов.
Это мог бы быть как уникальный префикс, как система распознавания, или чтоб не воротить большой огород, разработчикам давать уникальные названия файлам для использования, чтоб не пересекаться.
Мда. Надеюсь смысл мною сказанного более-менее понятен.
Видимо это не моё, чтоб доступно и понятно описать свою мысль )))
celsoft

celsoft

25 января 2019 12:13 Администраторы
4
Цитата: Lexxs
Мда. Надеюсь смысл мною сказанного более-менее понятен.
Видимо это не моё, чтоб доступно и понятно описать свою мысль )))

Ваша проблема не в этом. Понять вас легко, а проблема заключается в том вы пишите и рассуждаете о решениях, не понимая самой сути вопроса. Причем здесь система префиксов и что должна различать система плагинов, если суть вопроса в конфликте одновременно выполняемых действий. Это конфликт действий, а не конфликт плагинов. Два плагина хотят чтобы одновременно выполнились противоположные действия, в одном и том же месте в одно и то же время. Это тоже самое что я вам скажу одновременно прыгнуть и лечь. Сделайте эти два действия в один и тот же промежуток времени, а не последовательно, можно через систему префиксов smiley
Kino-man

Kino-man

31 января 2019 10:05 Клиенты
0
alexpsp,
Аналогичные конфликты плагинов наблюдаются и в Ксенфоро, т.ч. DLE тут не при чём.

П.С. В подвале пора поменять год на 2019 wink
YuriBtr

YuriBtr

15 февраля 2019 20:31 Клиенты
1
Цитата: celsoft
Это конфликт действий, а не конфликт плагинов. Два плагина хотят чтобы одновременно выполнились противоположные действия, в одном и том же месте в одно и то же время.

Вот именно поэтому я и предложил в соответствующей ветке не именовать Плагином то, что по сути является Хаком. Плагин не должен менять функциональность кода. Он должен органично расширять возможности через взаимодействие классов. Если уважаемый разработчик займется разработкой нормальной системы плагинов, то можно не бояться подобной несовместимости. У меня сейчас более полусотни хаков (только моих), они вроде не конфликтуют, но если я поставлю такой "плагин" форума, мне надо будет проверить каждую строчку кода этого "плагина" - не собьет ли он мне какие либо другие мои хаки. Это реально утомляет.

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Календарь
«    Февраль 2019    »
ПнВтСрЧтПтСбВс
 123
45678910
11121314151617
18192021222324
25262728 
Опрос на сайте
Совершаете ли вы покупки в интернет?

Популярные новости
Архив новостей
Февраль 2019 (1)
Январь 2019 (2)
Декабрь 2018 (1)
Ноябрь 2018 (1)
Октябрь 2018 (2)
Сентябрь 2018 (3)