Прямое обращение к файлам модуля

Для работы вне структуры сайта описывается файл modules/модуль/модуль.функция.php. Этот файл можно вызвать напрямую так: http://site.ru/модуль/функция/.

Прямое обращение к модулю может понадобиться по следующим причинам:

  1. Страница модуля должна существовать независимо от того, создана ли соответствующая страница в структуре сайта. Тем самым нужно обезопасить функциональность от случайного удаления страницы.
  2. Страница модуля имеет служебный характер и не должна отображаться на карте сайта, в файле sitemap.xml, в меню и пр.
  3. При работе с частью модуля нужно избавиться от лишних запросов на определение страницы.

В файле modules/модуль/модуль.функция.php доступен основной класс системы $this->diafan. Через эту переменную можно получить доступ к классам пользователей, кэширования, маршрутизатора и подключения шаблонов, а также к подключениям модулей.

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

Если запрошен адрес http://site.ru​/модуль/функция/какие-то_данные/, то данные, переданные в URL, будут доступны в модуле в виде: $_GET["rewrite"] = 'какие-то_данные';

Примеры реализации прямого обращения к модулю в DIAFAN.CMS:

  • modules/captcha/captcha.get.phphttp://site.ru/captcha/get/ – генерирует изображение защитного кода;
  • modules/news/news.rss.phphttp://site.ru/news/rss/ – генерирует RSS-ленту новостей;
  • modules/payment/payment.get.phphttp://site.ru/payment/get/ – работа с платежными системами;
  • modules/useradmin/useradmin.edit.phphttp://site.ru/useradmin/edit/ – форма редактирования данных из пользовательской части;
  • modules/attachments/attachments.get.phphttp://site.ru/attachments/get/ – отдает прикрепленный файл.
Ваши комментарии и дополнения
06 февраля 2023 г.
Столкнулся с очень странной штукой. При создании файла modules/модуль/модуль.функция.php если функцию назвать "api", то есть, например, modules/news/news.api.php при вызове по адресу site.ru/news/api/ сервер отвечает 404, страница не найдена. Надеюсь, кого-нибудь этот комментарий убережет от близости к безумию, удачи!

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.