Создаем свой модуль в Центре пользователя phpbb3

В данном подфоруме будут располагаться все статьи, помогающие освоиться в администрировании форума.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Создаем свой модуль в Центре пользователя phpbb3

Сообщение DeaDRoMeO »

Всем доброго времени суток, продолжаю делиться магическими вещами в плане phpbb3 :-0=)

Сегодня мы научимся добавлять произвольный модуль в Центр пользователя (это там где пользователи настраивают свой профиль и форум, управляют подписками и прочим). Для чего оно нужно ? Это уж вам решать, лично для себя пока в тестовых целях я создал модуль FAQ по форуму и потихоньку пихаю туда ссылки на обучающие темы. А вы можете выводить туда любую информацию.

Вообщем как обычно, начальные условия:
1. Правильная кодировка - это кодировка UTF-8 без BOOM
2. Изначально создадим модуль с подмодулем
3. Обходимся без языковых файлов для простоты понимания
4. XXX - любое слово, написанное только буквенным латинским алфавитом, никаких пробелов
5. ххх - тот же ХХХ, только в нижнем регистре
6. ууу - любое слово, написанное только буквенным латинским алфавитом, никаких пробелов

Внимательно следите за XXX, ххх, ууу по ходу статьи

1. Модуль с одним подмодулем

Делаем костяк нашего модуля

Создаем файлик ucp_ххх.php с правильной кодировкой и следующим содержимым

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

<?php
 
class ucp_xxx
{
      function main($id, $mode)
      {
            global $template;
 
            switch ($mode)
            {
            
                case 'yyy':

                     break;
 
            }
			$this->tpl_name = 'ucp_xxx_' . $mode;
      }
 
} 
?>
Так как мы делаем простой модуль с выводом текста из шаблона, между case 'yyy': и break; пустота, если же нужно использовать какой либо php-код или функцию, она должна быть прописана вместо пустоты. Кстати yyy - это идентификатор (назовем его так) подмодуля.

Сохраняем файл и ложим по адресу includes/ucp/. После этого создаем еще один файл ucp_ххх.php с правильной кодировкой и следующим содержимым (файл содержит в себе инфу о вашем модуле)

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

<?php
 
class ucp_xxx_info
{
   function module()
   {
                 return array(
                        
         'filename'   => 'ucp_xxx',
         'title'      => 'Имя модуля',        
         'version'   => '1.0.0',                
         'modes'      => array(
            'yyy' => array(
								'title' => 'Имя подмодуля',
                                  'auth' => '',
                                  'cat' => array('UCP_XXX')
                                  ),
		
            ),
         );
   }
   function install()
   {
   }
 
   function uninstall()
   {
   }
}
?>
Вроде бы ничего сложного, но если при установке вашего модуля требуются SQL запросы (а при удалении нужно убрать все данные с нужных полей), то в секцию установки нужно все прописать

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

   function install()
   {
Тут прописываем все нужное при установке
   }
Аналогично для удаления

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

  function uninstall()
   {
Тут прописываем все нужное при удалении
   }
Так же если нужны какие то особые условия доступа к модулю, меняем строку

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

'auth' => '',
На

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

'auth' => 'тут требования к авторизации либо наличию каких то прав',
Сохраняем файл и ложим его в includes/ucp/info/.

Делаем шаблон с информацией для модуля

Костяк сделан, нужно и шаблончик сделать. Создаем файл ucp_xxx_yyy.html с правильной кодировкой и следующим содержанием

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

<!-- INCLUDE ucp_header.html -->
тута содержимое, любой текст или HTML код
<!-- INCLUDE ucp_footer.html -->
И помещаем его в папку template вашего стиля

Устанавливаем модуль

Все приготовления окончены, надо установить модуль. Идем в админку на вкладку Система - Центр пользователя (может называться иначе если локализация другая) и внизу создаем свой модуль (имя я взял произвольное - вам же нужно задавать такое, чтоб пользователь понял для чего модуль)
Система - Центр пользователя, добавление модуля
Система - Центр пользователя, добавление модуля
Жмем Создать новый модуль и конфигурируем его как на скриншоте
Конфигурация нового модуля
Конфигурация нового модуля
После этого жмем Отправить, возвращаемся на предыдущую страницу, находим наш модуль в самом низу, кликаем по нему и попадаем на следующую страницу. Слева уже из готовых модулей добавляем наш единственный подмодуль (на скриншоте все отмечено) и жмем Добавить модуль.
Добавляем подмодуль
Добавляем подмодуль
Вас спрашивают Вы уверены, что хотите добавить выбранный модуль с указанным методом использования? - отвечаете ДА. Идет перенаправление на другую страницу, мы видим наш подмодуль, жмем зеленую шестеренку напротив него и конфигурируем следующим образом
Конфигурируем наш подмодуль
Конфигурируем наш подмодуль
Жмем Отправить и готово. Если вернуться на страницу Система - Центр пользователя, то можно поперемещать наш модуль, дабы он шел как вам надо по списку в Центре пользователя
Перемещение модуля по списку
Перемещение модуля по списку
После всего этого можем проверить наш модуль в Центре пользователя (в настройках своего профиля если локализация форума другая)
Наш модуль работает
Наш модуль работает
Красоту вы сами наводите средствами CSS и HTML, наш модуль готов и работает !!!

2. Модуль с двумя и более подмодулями

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

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

 case 'yyy':

                     break;
Вставить

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

 case 'yyy1':

                     break;
Где yyy1 - это совсем другой идентификатор, отличный от yyy. Тобишь этот кусочек добавляет еще один подмодуль (ну не только этот, далее нужно еще сделать несколько правок). Вы можете добавить еще несколько таких частей. Далее, в той же части, но уже в другом файле найти

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

'yyy' => array(
                        'title' => 'Имя подмодуля',
                                  'auth' => '',
                                  'cat' => array('UCP_XXX')
                                  ),
Вставить после найденного

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

'yyy1' => array(
                        'title' => 'Имя второго подмодуля',
                                  'auth' => '',
                                  'cat' => array('UCP_XXX')
                                  ),
Этот кусочек так же отвечает за второй подмодуль, далее, так как у нас 2 подмодуля, нужно второму сделать шаблон с именем ucp_xxx_yyy1.html, с правильной кодировкой и содержанием

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

<!-- INCLUDE ucp_header.html -->
тута содержимое, любой текст или HTML код для второго подмодуля
<!-- INCLUDE ucp_footer.html -->
И потом в админпанели добавить все наши модули (в примере их 2) аналогично инструкциям из первой части
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Создаем свой модуль в Центре пользователя phpbb3

Сообщение DeaDRoMeO »

Как и писал ранее, по этой статье я немного поменял личный раздел пользователю, сейчас по частям переношу туда материалы для новичков, удобно получается
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#2
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Создаем свой модуль в Центре пользователя phpbb3

Сообщение DeaDRoMeO »

Вообщем дописал вторую часть, конечно это тяжелее освоить чем добавление модуля с одним подмодулем, но все зависит от вашего желания
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#3
Аватара пользователя
petroff
Заглянул на огонек
Заглянул на огонек
Сообщения: 28
Стаж: 10 лет 2 месяца
Контактная информация:

Создаем свой модуль в Центре пользователя phpbb3

Сообщение petroff »

Серёжа спасибо. Всё работает.
Сделай пометочку о том, что этим способом можно добавить собственный модуль не только в Пользовательский раздел, но и в Модераторский, и даже в Администраторский.
Отличия только в том, что нужно изменить в названиях файлов ucp на mcp и acp соответственно, и разложить их в соответствующие папки в /includies
В случае с Админским разделом, файл шаблона будет лежать в /adm/style/файл_шаблона
#4
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Создаем свой модуль в Центре пользователя phpbb3

Сообщение DeaDRoMeO »

На здоровье, думаю тот кто эту статью изучает, поймет что и в другие разделы можно по аналогии добавлять))
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#5
Аватара пользователя
petroff
Заглянул на огонек
Заглянул на огонек
Сообщения: 28
Стаж: 10 лет 2 месяца
Контактная информация:

Создаем свой модуль в Центре пользователя phpbb3

Сообщение petroff »

petroff писал(а):думаю тот кто эту статью изучает, поймет что и в другие разделы можно по аналогии добавлять))
Для новичков не на поверхности. Ещё пол года назад я читал всё буквально и всю голову бы себе сломал над этим вопросом :-00):
#6
Ответить