В Cotonti CMF дополнительные поля (extrafields) в модуле форума — это возможность добавить дополнительные данные к сущностям форума (темам и сообщениям). Эти поля используются для расширения функционала форума и могут быть отображены в шаблонах, предоставляя гибкость в кастомизации форума.
Что такое экстраполя (дополнительные поля)?
Экстраполя — это поля, которые можно добавить к таблицам базы данных форума для хранения дополнительной информации, такой как метки, теги, специальные флаги или другие данные, которые не входят в стандартную структуру таблиц (например, имя пользователя, дата, время и текст сообщения). Эти поля могут быть связаны как с темами, так и с сообщениями форума.
В системе Cotonti экстраполя хранятся в базе данных и привязываются к конкретным таблицам форума, таким как:
- forum_posts (для сообщений)
- forum_topics (для тем)
Дополнительные поля могут быть использованы как в админке, так и в шаблонах.
Как работают экстраполя в форуме Cotonti?
-
Регистрация экстраполя: Для того чтобы дополнительное поле было доступно, оно должно быть зарегистрировано в коде, обычно в файле forums.extrafields.php, как это показано в примере кода. Поля для таблиц форума (например, forum_posts и forum_topics) добавляются в массив $extra_whitelist. Этот массив указывает, какие поля допустимы для использования в данных таблицах.
-
Теги экстраполя: В коде, в частности, экстраполя содержат информацию о тегах, которые будут использоваться в шаблонах. Эти теги позволяют вставлять значения из экстраполя в определенные части шаблонов.
Например:
- Для сообщений форума:
{FORUMS_POSTS_ROW_XXXXX}
{FORUMS_POSTS_ROW_XXXXX_TITLE}
- Для редактирования сообщений:
{FORUMS_EDITPOST_XXXXX}
{FORUMS_EDITPOST_XXXXX_TITLE}
- Для новых тем:
{FORUMS_NEWTOPIC_XXXXX}
{FORUMS_NEWTOPIC_XXXXX_TITLE}
-
Где используются экстраполя? Экстраполя используются в разных шаблонах форума, чтобы добавить дополнительные данные:
- forums.posts.tpl — для отображения сообщений на форуме.
- forums.editpost.tpl — для отображения страницы редактирования сообщений.
- forums.newtopic.tpl — для создания новых тем.
- forums.topics.tpl — для отображения списка тем форума.
В этих шаблонах используются специальные теги (например, {FORUMS_POSTS_ROW_XXXXX}), которые будут заменяться на данные, привязанные к экстраполям.
-
Запись и использование значений экстраполя: Когда администратор добавляет экстраполя для сообщений или тем, значения этих полей могут быть записаны через админку. Например, можно создать пользовательское поле, которое будет хранить дополнительную информацию, такую как "Тег", "Категория" или другие метки, которые будут отображаться в шаблонах.
Чтобы использовать эти поля в шаблоне, необходимо:
- В шаблоне использовать теги, указанные в коде (например,
{FORUMS_POSTS_ROW_XXXXX}), чтобы отображать данные.
- В коде на серверной стороне использовать значения этих полей для работы с данными, например, с добавлением значений в базу данных или выводом значений из экстраполя в шаблон.
Как их использовать в шаблонах?
Дополнительные поля (экстраполя) могут быть использованы через теги в соответствующих шаблонах. Пример:
{FORUMS_POSTS_ROW_XXXXX} - отображает данные из дополнительного поля для строки сообщения форума.
{FORUMS_POSTS_ROW_XXXXX_TITLE} - отображает заголовок из дополнительного поля для строки сообщения форума.
{FORUMS_EDITPOST_XXXXX} - отображает данные из дополнительного поля при редактировании сообщения.
Когда сервер генерирует страницу, эти теги будут заменены на фактические значения из базы данных, соответствующие экстраполям для каждого сообщения или темы форума.
Где и как записывать экстраполя?
- В админке форума администратор может добавить и настроить дополнительные поля для таблиц forum_posts и forum_topics.
- Экстраполя записываются в базу данных как обычные поля для каждой записи (сообщения или темы).
- В шаблоне можно обращаться к этим полям с помощью тегов (например,
{FORUMS_POSTS_ROW_XXXXX}), и система автоматически заменяет их на соответствующие данные из базы данных.
Пример использования экстраполя
Допустим, мы добавляем дополнительное поле, которое будет содержать информацию о том, был ли пост помечен как важный. Мы создаем дополнительное поле в админке, связываем его с таблицей forum_posts, и используем в шаблоне:
- В админке добавляем экстраполя для сообщений форума, например, "is_important".
- В шаблоне forums.posts.tpl используем тег
{FORUMS_POSTS_ROW_IS_IMPORTANT}.
- Когда страница сообщений форума генерируется, тег будет заменен на значение из базы данных (например, "Да" или "Нет").
Заключение
Экстраполя в модуле форумов Cotonti позволяют добавлять кастомизированные данные к сообщениям и темам форума. Эти поля гибко используются в шаблонах форума и могут быть настроены через административную панель. Их использование дает возможность расширить стандартный функционал форума, добавляя дополнительные метки, теги и другую информацию для отображения на страницах форума.