Файл "forums.extrafields.php" в системе Cotonti CMF является частью модуля Forums и используется для настройки и работы с дополнительными полями (extrafields) в контексте форума. Этот файл хранится в директории /modules/forums и отвечает за интеграцию с расширенными полями в админке форума.
Основное назначение файла
Основная цель файла — зарегистрировать и настроить дополнительные поля (extrafields) для таблиц форума, таких как forum_posts и forum_topics. Эти поля могут быть использованы для добавления дополнительной информации о сообщениях и темах форума. Файл работает в контексте административной панели и используется для расширения возможностей форума, позволяя администраторам сайта настраивать дополнительные поля для форума через интерфейс администрирования.
Место в системе Cotonti
Файл находится в каталоге /modules/forums. Это означает, что он является частью модуля форума и загружается только в контексте работы этого модуля. Файл взаимодействует с базой данных для работы с таблицами форума, а также с системой администрирования для настройки дополнительных полей через интерфейс админа.
Взаимодействие с другими частями сайта
-
Работа с дополнительными полями (extrafields): Файл регистрирует дополнительные поля для таблиц форума — это позволяет работать с дополнительной информацией, такой как теги и метки, которые могут быть использованы в шаблонах форума. Эти поля добавляются в список "разрешенных" для таблиц базы данных форума.
-
Интеграция с административной панелью: Благодаря хуку admin.extrafields.first, файл подключается к системе дополнительных полей, позволяя администратору настраивать данные поля через административный интерфейс.
-
Работа с шаблонами: В файле прописаны теги для использования в шаблонах форума. Теги позволяют вставлять динамический контент в шаблоны форумных страниц, такие как темы, сообщения, их заголовки и т. д.
Переменные, хуки, методы, функции, классы
-
Переменные:
$extra_whitelist: Эта переменная определяет разрешенные дополнительные поля для таблиц форума. Она используется для указания, какие поля могут быть добавлены в базу данных и отображены в интерфейсе.
Cot::$db->forum_posts: Переменная, которая ссылается на таблицу с сообщениями форума.
Cot::$db->forum_topics: Переменная, которая ссылается на таблицу с темами форума.
Cot::$L['Module']: Это переменная, которая используется для вывода локализированного текста (названия модуля "Forums").
-
Хуки:
admin.extrafields.first: Этот хук определяет точку подключения для файла, что позволяет зарегистрировать дополнительные поля форума в административном интерфейсе. Хук сообщает системе, что дополнительное поле будет добавлено в первую очередь, когда будет происходить обработка этих данных в админке.
-
Методы и функции:
cot_incfile(): Эта функция используется для подключения других файлов и модулей, таких как forums, extrafields, users. Она подключает необходимый функционал для работы с форумом и его компонентами.
Cot::$L['Module']: Используется для локализации строки, то есть, для получения переведенного текста на текущий язык сайта.
-
Классы:
- В этом файле непосредственно классов не используется, но активно используются функции и переменные, связанные с базой данных (
Cot::$db) и локализацией (Cot::$L).
Суть содержания кода
-
Регистрация дополнительных полей для форума: В коде определяется массив $extra_whitelist, который включает в себя список разрешенных дополнительных полей для двух основных таблиц форума — forum_posts и forum_topics. Каждое из полей включает информацию о:
- Названии поля
- Заголовке поля, локализированном на текущем языке сайта
- Типе поля (в данном случае — модуль)
- Коде модуля
- Тегах, которые могут быть использованы в шаблонах форума.
-
Использование хуков и фильтров: Хук admin.extrafields.first указывает системе, что этот файл должен быть подключен на раннем этапе обработки дополнительных полей в админке, что позволяет администратору настроить дополнительные поля через интерфейс.
-
Подключение зависимостей: В файле подключаются другие модули, такие как forums, extrafields и users, что позволяет работать с базой данных форума, управлять полями сообщений и тем, а также работать с функциональностью пользователей.
Задачи и функции кода
- Управление дополнительными полями: Этот код позволяет зарегистрировать дополнительные поля для таблиц форума, которые могут быть использованы для расширения функционала и отображения дополнительной информации в форумах.
- Интеграция с админкой: Подключение модуля для администрирования и управление настройками полей через административный интерфейс Cotonti.
- Гибкость в шаблонизации: Предоставление возможности использовать различные теги в шаблонах форума для отображения данных дополнительных полей.
В общем, файл выполняет задачу настройки и интеграции дополнительных полей для форума в систему Cotonti, обеспечивая возможности для расширенной настройки форума через административный интерфейс и гибкое отображение данных на страницах форума.
/* ====================
[BEGIN_COT_EXT]
Hooks=admin.extrafields.first
[END_COT_EXT]
==================== */
/**
* Forums module extrafields
*
* @package Forums
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
defined('COT_CODE') or die('Wrong URL'); // Проверка, что файл вызывается через правильный канал. Если нет, скрипт завершится с ошибкой "Wrong URL".
require_once cot_incfile('forums', 'module'); // Подключение модуля forums для дальнейшего использования его функций.
$extra_whitelist[Cot::$db->forum_posts] = array( // Определение разрешенных дополнительных полей для таблицы forum_posts в базе данных.
'name' => Cot::$db->forum_posts, // Название поля, связанное с таблицей forum_posts.
'caption' => Cot::$L['Module'].' Forums', // Заголовок для поля - название модуля "Forums" на текущем языке.
'type' => 'module', // Указание типа поля как модуля.
'code' => 'forums', // Код модуля, связанного с полем.
'tags' => array( // Теги, которые могут быть использованы в различных шаблонах.
'forums.posts.tpl' => '{FORUMS_POSTS_ROW_XXXXX}, {FORUMS_POSTS_ROW_XXXXX_TITLE}, {FORUMS_POSTS_NEWPOST_XXXXX}, {FORUMS_POSTS_NEWPOST_XXXXX_TITLE}', // Теги для шаблона posts.tpl.
'forums.editpost.tpl' => '{FORUMS_EDITPOST_XXXXX}, {FORUMS_EDITPOST_XXXXX_TITLE}', // Теги для шаблона editpost.tpl.
'forums.newtopic.tpl' => '{FORUMS_NEWTOPIC_XXXXX}, {FORUMS_NEWTOPIC_XXXXX_TITLE}', // Теги для шаблона newtopic.tpl.
)
);
$extra_whitelist[Cot::$db->forum_topics] = array( // Определение разрешенных дополнительных полей для таблицы forum_topics в базе данных.
'name' => Cot::$db->forum_topics, // Название поля, связанное с таблицей forum_topics.
'caption' => Cot::$L['Module'].' Forums', // Заголовок для поля - название модуля "Forums" на текущем языке.
'type' => 'module', // Указание типа поля как модуля.
'code' => 'forums', // Код модуля, связанного с полем.
'tags' => array( // Теги, которые могут быть использованы в различных шаблонах.
'forums.posts.tpl' => '{FORUMS_POSTS_TOPIC_XXXXX}, {FORUMS_POSTS_TOPIC_XXXXX_TITLE}', // Теги для шаблона posts.tpl.
'forums.editpost.tpl' => '{FORUMS_EDITPOST_TOPIC_XXXXX}, {FORUMS_EDITPOST_TOPIC_XXXXX_TITLE}', // Теги для шаблона editpost.tpl.
'forums.newtopic.tpl' => '{FORUMS_NEWTOPIC_TOPIC_XXXXX}, {FORUMS_NEWTOPIC_TOPIC_XXXXX_TITLE}', // Теги для шаблона newtopic.tpl.
'forums.topics.tpl' => '{FORUMS_TOPICS_ROW_XXXXX}, {FORUMS_TOPICS_ROW_XXXXX_TITLE}', // Теги для шаблона topics.tpl.
)
);