+38(073) 413-59-71  info@binliz.org.ua

Создаем форум на MODx REVO часть 1

 29.06.2014
MODX, php

Форумы достаточно сложная тема, которая скорее всего займет не одну неделю с моей загруженностью но начнем.

Так, обозначимся.

Форумы должны:

  1. Работать из коробки
  2. Отлично интегрироватся в шаблон
  3. Иметь ЧПУ ссылки
  4. Иметь свои настройки в админке
  5. Давать возможность работать пользователям, модераторам и адиснистраторам с ними.
  6. Вести статистику и быть защищены.
  7. Иметь набор сниппетов для интеграции в разные блоки сайтов
  8. Давать возможность четко управлять всеми возможностями и шаблонами
  9. Стать мощным, востребованным компонентом для порталов разработанных на MODx
  10. И скорее всего платным. Но тут посмотрим.

Форумы не должны:

  1. Всячески модифицировать ядро и системные файлы вплоть до .htaccess
  2. СПИСОК БУДУ РАСШИРЯТЬ.

В итоге у меня получится цикл статей. Как я разрабатывал форум.

Первое, что я сделал это создал рессурс в дереве документов символически назвал его форумы создал ему алиас forums, создал пустой сниппет forums и вставил его в созданный документ. 

Склонировал modExtra и назвав свой компонент modForums добавил пространство имен modforums с параметрами

{core_path}components/modforums/
{assets_path}components/modforums/

Пространство имен MODx

Добавил в настройках системы в своем пространстве имен параметр forum_document_id назначил ему значение ID документа с форумами у меня это 2.

Системные настройки modx

Далее я начал выполнять пункт 1 чего не должен делать форум и создал плагин для работы с документом который символически у нас называется форумы. Назвал плагин Forums_SEF

<?php
/**
 * Forums_SEF Plugin
 *
 * Events: OnPageNotFound
 *
 * @author Aleksey Husarov <binliz@binliz.org.ua>
 *
 * @package modForums
 **/

$event = $modx->event->name;
switch ($event){
    case 'OnPageNotFound':
           // В общем здесь будет наш обработчик событий

           // получаем название параметра для алиаса и если он не задан выходим (будем пользовать только ЧПУ
           $alias = $modx->context->getOption('request_param_alias', 'q');           
           if (!isset($_REQUEST[$alias])) {return false;}

           // В общем наш запрос
           $request = $_REQUEST[$alias];
           // разложим запрос на составляющие (очень потом понадобится в принципе и сейчас без него обходится не будем).
           $tmp = explode('/',$request);
           // получим ИД рессурса и сравинм его с нашим системным ИД рессурса и если они совпадут,
           // то делаем наше злобное дело в смысле передаем управление сниппету, правда может потом еще добавим проверок.
           $id = $modx->findResource($tmp[0] . '/');
           $forum_sef_id = $modx->getOption('forum_document_id');
           if($id == $forum_sef_id) {
              $modx->sendForward($id);
           }else return false;
    break;
}

В общем вот такая получиласть статья, плагин сделали, старт дан. Сажусь за обдумывание базы данных, работы много думаю это материал для следующей статьи.


 

 
JamesFieft

Комментарий скрыт администратором сайта

Adultmovreuse

Комментарий скрыт администратором сайта

onhalm

Комментарий скрыт администратором сайта

Ruslan

Желаю удачи. Модекс очень классный и удобный дыижок и форум на нём был бы как нельзя к стати!

  • 1