В этой теме хотелось бы обсуждать развитие нового движка (не версии) на базе EXBB FM 1.0 RC 1, который подвергся некоторой конверсии.
В частности, движок подвергся очистке от практически всех следов ООП, что сделало код движка гораздо более понятным, читабельным и быстрым.
На данном этапе переделанный движок находится в работоспособном состоянии.
Вкратце, обрисую то, что уже сделано, и то, над чем предстоит ещё поработать и ради чего всё затевалось.
Сделано:
1) как уже указывалось, движок очищен от следов ооп. На это есть определённые причины. Не буду здесь спорить о концепциях, так как эта тема большая и для другого разговора, просто ограничусь указанием на то, что изначально движок был гораздо проще и поэтому стал таким популярным. Это привело к созданию множества форумов, как поддержки, так и других. Всё начало затихать и чахнуть когда движок подвергся переделке. Код стал намного более запутанным и интуитивно не ясным. То есть произошла революция, а не эволюция. А все революции, как известно "начинают пожирать своих сынов"..
Лечиться всегда больно, неприятно, горько, но лечиться надо. А чтобы вылечиться надо немного умерить свой пыл и сдать назад..
Это позволит легко продолжать развитие движка в эволюционном ключе. Я всё сказал по этому поводу и больше повторяться не буду. Не нравится - проходите мимо и ставьте EXBB 2.0..
2) все функции движка получили префикс exbb_. Это позволит уменьшить возможные кофликты разных кусков кода в дальнейшем.
На пример, было:
CODE:
forumjump()
стало:
CODE:
exbb_forumJump()
3) все пути в скриптах сделаны от корня сервера.
Например было:
CODE:
include('./templates/'.DEF_SKIN.'/preview.php');
include('./templates/'.DEF_SKIN.'/preview.php');
стало:
CODE:
include(TEMPLATE_DIR.DEF_SKIN.'/preview.php');
include(TEMPLATE_DIR.DEF_SKIN.'/preview.php');
В common.php прописано:
CODE:
$RootPath=dirname(__FILE__).'/';
$RootPath=dirname(__FILE__).'/';
а в файле defines.php прописано:
CODE:
define('TEMPLATE_DIR', $RootPath.'templates/');
define('TEMPLATE_DIR', $RootPath.'templates/');
а те ссылки которые отправляются юзеру формируются так.
Было:
CODE:
'src="./javascript/board.js"'
'src="./javascript/board.js"'
стало:
CODE:
'src="./'.exbb_dir(JAVASCRIPT_DIR).'board.js"'
'src="./'.exbb_dir(JAVASCRIPT_DIR).'board.js"'
Это позволит усилить безопасность скрипта и формировать все пути из одной точки. Как видно работа проведена большая.
3) изменён темплейт админ центра. Исправлена некоторая неряшливость в отображении.
Темплейты ещё будут переделываться.
4) переход по форумам внизу страницы сделан не через java скрипт, а через кнопку. Считаю, что движок сильно засорён множеством java скриптов. например в FlaxBB их вообще нет. Я не являюсь их противником, например в форме ответа они необходимы, но пихать их даже в такие вещи как навигация по форуму, извините меня но это сильный бред. Многие юзеры и я в том числе отключают джава скрипты в своих браузерах для безопасного сёрфинга по и-нету. А тут их как блох на каждом шагу.. Многое можно сделать чисто html и php скриптами.
Зачем всё так усложнять? не понимаю..
Вот то, что уже сделано. Главное что форум работает.
Теперь о том, что нужно сделать и что требует обсуждения.
1) вход в скрипты через одну точку входа. Это не обсуждается. Так будет сделано сразу, следующим шагом. В этом случае можно безопасно контролировать подключение скриптов через их список. К тому же можно распределить подключаемые модули по папкам в одной папке: категориям отдельная папка, темам отдельная, форумам отдельная. Проще будет найти какой-то форум, тему или файл. А сейчас все лежит в корне сайта.. Это просто некрасиво.
2) сейчас если тема превышает некоторый порог по весу, то приходится создавать её продолжение. Это некрасиво, трудоёмко, юзерам приходится искать все эти части отдельной темы, и т.д. Всё потому, что при заходе в тему, например на последнюю страницу, грузится вся тема целиком в ОЗУ сервера. Получается, что человек просматривает 15 сообщений а загрузилось все 100, что там в этой теме были.. Опять некрасиво, и расходует ресурсы сервера. А если юзеров будет 100 и все они сразу загрузят эту тему? Сайт повиснет.. Рукотворный ddos, который мы создали сами. не забывайте, что на сервере, кроме вашего сайта находятся тысячи других. И они тоже повиснут..
Что предлагаю.
На одном форуме обсуждалось сколько сообщений оптимально выводить на одну страницу. Согласились, что меньше 30 крайне неудобно, но нужно ограничить вес одного сообщения. Меньше 30 юзерам приходится чаще жать на кнопку перехода это ужасно утомляет. Предлагаю в настройках удалить функцию выбора пользователем количества выводимых на одну страницу сообщений. Это позволит стандартизировать их вывод и иметь жёсткие ссылки на одну какую-то страницу. Также это позволит разгрузить сервер и грузить только ту страницу, которую затребовал пользователь. Также это позволит не делить темы на много частей если они большие по обьёму. Это значит, что тема может быть сколько угодно большой и не приведёт к падению сервера и скорости. По-моему плюсов значительно больше, чем минусов в смысле запрета на количество страниц..
Если кто боится, что станет слишком много файлов, то давайте посчитаем и сравним. Всё зависит от обьема тем. На этом форуме к примеру, 1795 тем. Стало быть файлов этих тем тоже 1795. Сообщений ~32422. Если все темы пропорциональны по сообщениям и сообщений = 30 на страницу, то получим 32422/30 = ~1080 файлов. Выходит даже, что файлов стало меньше, чем сейчас. Конечно в реальности их может стать и больше и меньше, но оно будет варьироваться в пределах средних значений.
3) изменить алгоритм сохранения информации о категориях, форумах и темах. Предлагаю отображать в файл реальную картину, к примеру, их взаимного расположения. Это значит, что в файле со списком категорий категории расположены в том порядке, в котором они выводятся. Также и форумы, и темы. Это упростит скрипты. Сейчас там всё запутано. Например, удаляем форум, а номер его теряется. опять некрасиво, неряшливо. И таких неряшливостей полно..
К примеру есть проблема с описанием категорий и форумов.(описаний категорий вообще нет). Ещё есть проблема когда удаляем первое сообщение в категории, форуме или теме, то удаляется эта категория, тема или форум. Но такая логика неправильна, согласитесь.
4) изменить способ сохранения-загрузки файлов. Базу сделать более читабельной.
5) При удалении сообщения, не удалять всю таблицу, которая отображается, а писать в ней например "удалено модератором/админом". Чтобы пользователи, которые читают тему понимали что здесь было сообщение, если есть на него ссылки или были цитаты из него, или на него ссылались в тексте других сообщений. Думаю внятно объяснил. Это также позволит не рвать ссылки на отдельные ссобщения и страницы.
Это основное.