phpBB3 Создание простого модуля HelloWorld

Аватара пользователя
Distructor
Администратор
Сообщения: 1599
Зарегистрирован: 28 дек 2009
Рано или поздно администратор форума сталкивается с проблемами, для решения которых стандартной функциональности phpBB 3 уже не хватает.
Один из способов получить желаемую функциональность — это написать модуль самому.
В этом уроке мы с Вами рассмотрим процесс создания простого модуля для phpBB 3, выводящего на экран строчку «HelloWorld».

Мы не будем использовать языковые файлы для простоты изложения. Однако если Вы собираетесь делать качественный модуль, то Вам в обязательном порядке надо будет выносить все Ваши языковые выражения в отдельный файл. А также, при необходимости, использовать шаблоны.
Дело в том, что сообщество phpBB 3 интернационально, и это сделано специально для того, чтобы модуль написанный в одной стране мог легко использоваться в остальных странах. Для этого будет достаточно просто перевести языковые файлы.

Перед тем, как мы перейдем к созданию модуля, я должен Вам рассказать еще об одной особенности. Дело в том, что в phpBB 3 все модули поделены на три основные категории: User Control Panel (ucp), Moderator Control Panel (mcp) и Admin Control Panel (acp).
Это сделано специально для удобства разработки и управления модулями из администраторской панели. Мы с Вами будем разрабатывать модуль для пользовательской панели управления(ucp), но Вы точно также можете разработать аналогичный модуль и для других панелей управления. Для этого в последующем тексте мысленно замените все вхождения слова ucp на mcp, или на acp.
Приведенный ниже код сохраняйте в UTF-8!

Для создания рабочего модуля нам необходимо три файла:
    - Файл, содержащий общую информацию о модуле: имя модуля, права доступа к нему, подкатегории и прочее. Его мы расположим в дирректории includes/ucp/info.
    - Файл, в котором будет находится непосредственно код модуля. Его мы расположим в дирректории includes/ucp/.
    - Файл шаблона, в котором будет находиться текст «HelloWorld!». Его мы расположем в дирректории текущей темы оформления. Например, для темы prosilver мы расположим шаблон в styles/prosilver/template/.
Шаг первый
    Создадим файл ucp_hello.php, расположенный в дирректории includes/ucp/info, и содержащий информацию о модуле:

    Код: Выделить всё

    <?php
     
    class ucp_hello_info
    {
        // Данная функция возвращает массив, содержащий
        // информацию о текущем модуле.
        function module()
        {
                     return array(
                            // Имя файла основного модуля.
                'filename'    => 'ucp_hello',
                            // Название модуля.
                // В рабочих модулях указывается языковая переменная, которая впоследствии заменяется
                // на текст соответствующего языка.
                'title'        => 'Привет, мир!',
                            // Версия модуля.
                'version'    => '1.0.0',
                            // Список подразделов этого модуля.
                // Определим подраздел main, выводящий строчку "HelloWorld"
                'modes'        => array(
                   'main' => array(
                                      // Заголовок подраздела.
                                      'title' => 'Вывод строки',
                                      // Необходимые привилегии для доступа к этому подразделу.
                      // Если отсутствуют, то используются привилегии для доступа
                      // к UCP(User Control Panel).
                                      'auth' => '',
                                      // Категория, в которую входит этот подраздел.
                                      'cat' => array('UCP_HELLO')
                                      ),
                   ),
                );
        }
     
            
    // Данная функция вызывается при установке модуля в
            // администраторской панели.
            // В этом месте Ваш модуль может создавать необходимые
            // ему файлы, таблицы в базе данных и прочие действия.
        function install()
        {
        }
     
            
    // Эта функция вызывается при деактивации Вашего модуля
            // в администраторской панеле.
            // Позаботьтесь, пожалуйста, чтобы Ваш модуль не оставлял
            // после себя никакого мусора в системе.
        function uninstall()
        {
        }
    }
     
    ?>

Шаг второй
    Создадим второй файл ucp_hello.php, расположенный в дирректории includes/ucp/, содержащий непосредственно сам код модуля:

    Код: Выделить всё

    <?php
     
    class ucp_hello
    {
          // Функция, вызываемая ядром phpBB 3
          function main($id, $mode)
          {
                global $template;
     
                
    // Параметр $mode - это имя подраздела,
                // который запрашивает пользователь.
                switch ($mode)
                {
                    // У нас есть только один подраздел: main.
                    case 'main':
     
                         
    // Устанавливаем заголовок страницы
                         page_header('HelloWorld!');
     
                         
    // Указываем, какие файлы шаблонов нужно подключать.
                         $template->set_filenames(array(
                            'body' => 'helloworld.html',
                         ));
     
                         
    // Выводим
                         page_footer();
     
                         
    // Следует заметить, что вот так использовать языковые
                         // конструкции на английском, русском и т.д. прямо в
                         // коде модуля можно только индусам.
     
                         
    // Всем остальным это категорически запрещается.
     
                         
    // Я Вам показал такой код лишь для простоты понимания.
                         // В рабочем модуле на этом месте обычно выполняются
                         // какие либо действия, и затем результаты работы модуля
                         // передаются в шаблон, который уже и занимается выводом
                         // информации пользователю, подключая необходимые
                         // языковые файлы.
     
                         break
    ;
     
                
    }
          }
     
    }
     
    ?>

Шаг третий
    Теперь осталось создать файл шаблона, содержащий нашу строку «HelloWorld». Для этого нужно перейти в директорию, где расположены шаблоны Вашей текущей темы оформления.
    Например, для темы оформления prosilver нужно перейти в директорию styles/prosilver/template/. Создайте в этой директории файл helloworld.html со следующим содержимым:

    Код: Выделить всё

    <!-- INCLUDE overall_header.html -->
     
    <h2>The HelloWorld page</h2>
     
    <div class="panel">
       <div class="inner">
          <div class="content">
                HelloWorld!
          </div>
       </div>
    </div>
     
    <!-- INCLUDE overall_footer.html -->

    Все, на данный момент наш модуль полностью готов к использованию. Но если мы попробуем посмотреть его результат работы по адресу http://ваш_сайт.ru/ucp.php?i=hello мы столкнемся со следующей проблемой:
    2009-02-05_033820.png

    Это вызвано тем, что наш модуль еще не активирован в администраторском аккаунте. Для его активации необходимо перейти в вкладку Система, и в левом меню в подразделе Управления модулями выбрать пункт Личный раздел
    2009-02-05_034536__2.png

    Теперь нужно добавить наш модуль. Для этого введите его название. Например, «Привет, мир!»:
    2009-02-05_035057__3.png

    После этого необходимо лишь отредактировать параметры модуля следующим образом:
    2009-02-05_035916__4.png

    И нажать кнопку Отправить.
Шаг четвертый
    Поздравляю! Вы успешно прошли все этапы создания модуля для phpBB 3.
    Нам теперь осталось лишь посмотреть на результаты его работы. Для этого перейдите по адресу http://ваш_сайт.com/ucp.php?i=hello.
    Если Вы все сделали правильно, то должны увидеть приблизительно следующее:
    2009-02-05_040354__5.png

Источник: http://v673.com/phpbb3/sozdanie-prosoto ... elloworld/

Вернуться в «phpBB3»