Регистрируем персональные страницы для IP.Board 3
После создание темы в блоге "Пользовательские страницы на IP.Board 3", постоянно получаю в личку просьбу продолжить тему. Для простых страничек, лучше использовать старый совет. Если надо сделать, что-то сложное, с PHP логикой, работа с базой данной, то можно использовать следующее решения:
Создаем новое, простое приложение MyCustomPage.
В admin/applications_addon/other/ создаем папку mycustompage
Как правило приложения включают в себя следующие разделы (папки):
extensions modules_admin modules_public setup skin_cp
Для начала, мы создадим две папки.
modules_public skin_cp
В skin_cp положим иконку appIcon.png. Иконку можно взять в любом приложение, хотя все будет работать и без нее. Иконка применяется в АдминЦентре в списке приложений.
В modules_public создаем одну папку, назовем ее например modulename
В этой папке создаем два файла.
Первый основной (он должен быть всегда): defaultSection.php
<?php $DEFAULT_SECTION = 'firstname'; ?>
firstname - имя второго файла. Относительный путь на сайте у него будет
admin/applications_addon/other/mycustompage/modules_public/modulename/firstname.php
Это важно:
mycustompage - Директория всего приложения
modulename - Имя директории, содержащей файлы модуля (Ключ модуля)
firstname.php - Имя файла
Это название отражается и в главном классе файла firsname.php
class public_mycustompage_modulename_firstname extends ipsCommand
Понятно, что название могут быть любые. Но замена название в одном месте, должно быть заменено везде, где оно фигурирует.
И сам файл firstname.php
<?php if ( ! defined( 'IN_IPB' ) ) { print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files."; exit(); } class public_mycustompage_modulename_firstname extends ipsCommand { public function doExecute( ipsRegistry $registry ) { $this->output = "Текущая дата: " .strftime('%d %B %Y'); // Здесь формируем контент $this->registry->output->setTitle( "Название" ); $this->registry->output->addContent( $this->output ); $this->registry->output->sendOutput(); } } ?>
Можно сказать это необходимый минимум. Мы не описали lang - файлы, не подключили свой шаблон. Но уже такое решение, вполне рабочее.
Теперь надо только рассказать IP.Board, что у нас есть "готовое" приложение.
Для этого идем в АЦ
Панель управления > Приложения > Управление модулями > Список модулей > Приложения -> Добавить приложение
My Control Panel > Applications & Modules > Manage Applications & Modules > Applications -> Add New Application
В этой форме, важны два поля
Публичное имя приложения ( Application Public Title ) - имя под котором приложение будет присутствовать в меню.
Директория приложения ( Application Directory ) - место где находится наше приложение. И он же адрес странички: /index.php?app=mycustompage
Но в данный момент приложение доступно только по прямой ссылке, в меню ссылка еще не работает.
Регистрируем публичный модуль нашего приложения.
Добавить публичный модуль
Здесь важно правильно написать
Ключ модуля (Module Key) и естественно включить модуль: Модуль включен? (Module Enabled).
Для безопасности во все вновь созданные директории, можно положить защитные (пустые) файлы index.html
Вот и все.
Будет ли продолжение? Не знаю. Не сделано многое. Нет администраторского модуля, нет своих языковых файлов. Одним словом нечего нет.
Буду делать, конкретное приложение для себя, то выложу его исходники и опишу. Если не будет задачи, описывать сферического коня в вакууме, не очень интересно
Повторюсь, для простых вещей, гораздо удобнее решение описанное здесь: Пользовательские страницы на IP.Board 3
Для сложных решений, проще использовать IP.Content. Проще и быстрей. Он стоит своих денег.
- 5
4 комментария
Рекомендованные комментарии
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас