Структура исходных файлов SMF

В этом уроке мы вкратце познакомимся с основными папками и файлами SMF 2.1, чтобы знать, за что они отвечают.

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

Корневая директория

Директория Описание
attachments Файлы, загруженные пользователями (вложения)
avatars Наборы аватарок, установленные на форуме
cache Временные файлы (если включено файловое кэширование)
custom_avatar Аватарки, загруженные пользователями
exports Экспортированные данные профилей (когда пользователь делает экспорт данных профиля)
Packages Файлы загруженных модификаций
Smileys Наборы смайликов, установленные на форуме
Sources Исходные файлы движка (бизнес-логика)
Themes Установленные шаблоны (темы SMF, включая стандартную Curve)
Файл Описание
cron.php Файл, используемый для выполнения фоновых и запланированных задач форума
index.php Ключевой файл, точка входа — здесь регулируются все маршруты форума
Settings.php Файл базовых настроек форума (логин/пароль пользователя базы данных, текущий язык и пр.)
Settings_bak.php Резервный файл настроек
SSI.php Коллекция функций для доступа к информации форума через внешние файлы (скрипты, CMS и пр.)
ssi_examples.php Пример использования функций из файла SSI.php (перейдите в браузере по адресу https://ваш_форум/ssi_examples.php для просмотра)

Папка темы по умолчанию (Themes/default)

Если вы захотите поменять какой-то элемент интерфейса, обязательно загляните в эту папку — Themes/default. При использовании нестандартной темы оформления многие файлы (если они отсутствуют в директории используемой темы) загружаются из папки темы по умолчанию. Например, если вы используете тему Other, и в директории Themes/Other есть файл Admin.template.php, то при посещении админки будет использоваться именно он. Если же такого файла там нет, загрузится аналогичный файл из темы по умолчанию — Themes/default/Admin.template.php. Именно поэтому директорию Themes/default лучше не трогать, даже если вы не пользуетесь темой по умолчанию.

Однако не спешите менять файлы шаблонов — для начала создайте копию используемой темы (Конфигурация => Оформление => Создать копию используемой по умолчанию темы), выберите её как основную, скопируйте в папку этой копии файл, который решили поменять — и только потом открывайте его для редактирования. Таким образом вы защитите себя от возможной «поломки» форума, а также от потери сделанных изменений при очередном обновлении движка.

Директория Описание
css Файлы стилей темы оформления по умолчанию
fonts Шрифты темы оформления по умолчанию
images Изображения, используемые темой оформления по умолчанию
languages Языковые файлы
scripts Файлы скриптов JS/jQuery темы оформления по умолчанию

Файлы стилей (Themes/default/css)

По сути, это первая папка, с которой стоит начинать, если вы просто хотите изменить оформление некоторых деталей темы оформления. Главный файл для экспериментов — index.css.

Языковые файлы (Themes/default/languages)

Это первое место, откуда вам следует начинать поиски, если вы захотите поменять какой-либо текст, используемый темой оформления. Для добавления собственных переменных используйте файл Themes/default/languges/Modification.{ваш_язык}.php.

Кроме того, для быстрого редактирования этих файлов в админке доступен соответствующий редактор по адресу _Конфигурация => Настройка языков => Редактировать_ (отдельная кнопка для каждого языка).

Для внесения поправок в русскую локализацию разумнее всего присоединиться к проекту на Crowdin.

Файл Описание
Admin.template.php Основной шаблон для страниц админки
Agreement.template.php Шаблон регистрационного соглашения
BoardIndex.template.php Шаблон главной страницы форума (список разделов и т. п.)
Calendar.template.php Шаблон календаря
Display.template.php Шаблон страницы отдельной темы на форуме
Errors.template.php Шаблон страницы ошибок (404 и т. д.)
GenericControls.template.php Шаблон, отвечающий за вывод визуального редактора и кнопок под формой ввода
GenericList.template.php Шаблон, отвечающий за интерфейс таблиц в админке
GenericMenu.template.php Шаблон, отвечающий за вывод кнопок и выпадающих списков в различных менюшках админки
Help.template.php Шаблон справочной информации
index.template.php Основной макет текущей темы оформления
Likes.template.php Шаблон, отвечающий за отображение контейнера с лайками («Мне нравится» и т. п.) под сообщениями
Login.template.php Шаблон страницы авторизации
ManageAttachments.template.php Шаблон секции управления вложениями в админке
ManageBans.template.php Шаблон секции управления банами в админке
ManageBoards.template.php Шаблон секции управления категориями и разделами в админке
ManageCalendar.template.php Шаблон секции управления настройками календаря в админке
ManageLanguages.template.php Шаблон секции управления локализациями (языками) в админке
ManageMail.template.php Шаблон секции управления очередью сообщений в админке
ManageMantenance.template.php Шаблон секции управления обслуживанием форума в админке
ManageMembergroups.template.php Шаблон секции управления группами пользователей в админке
ManageMembers.template.php Шаблон секции управления пользователями в админке
ManageNews.template.php Шаблон секции управления новостями форума в админке
ManagePaid.template.php Шаблон секции управления платными подписками в админке
ManagePermissions.template.php Шаблон секции управления правами доступа в админке
ManageSchedulesTasks.template.php Шаблон секции управления запланированными задачами в админке
ManageSearch.template.php Шаблон секции управления настройками поиска в админке
ManageSmileys.template.php Шаблон секции управления наборами смайликов а админке
Memberlist.template.php Шаблон списка пользователей форума
MessageIndex.template.php Шаблон страницы со списком тем внутри просматриваемого раздела
ModerationCenter.template.php Шаблон центра модерации
MoveTopic.template.php Шаблон страницы перемещения темы из одного раздела в другой
Notify.template.php Шаблон страницы настроек уведомлений
Packages.template.php Шаблон страницы менеджера пакетов в админке
PersonalMessage.template.php Шаблон страницы со списком личных сообщений
Poll.template.php Шаблон страницы создания и редактирования опросов
Post.template.php Шаблон страницы создания и редактирования сообщений на форуме
Printpage.template.php Шаблон страницы печатной версии просматриваемой темы на форуме
Profile.template.php Шаблон страницы профиля
Recent.template.php Шаблон странц последних сообщений и непросмотренных тем
Register.template.php Шаблон страницы регистрации
Reminder.template.php Шаблон страницы напоминания пароля
ReportedContent.template.php Шаблон страницы просмотра всех присланных жалоб
Reports.template.php Шаблон страницы управления отчётами в админке
ReportToMod.template.php Шаблон страницы отправки жалобы на просматриваемый контент
Search.template.php Шаблон страницы поиска
Settings.template.php Шаблон страницы с настройками текущей темы оформления
SplitTopics.template.php Шаблон страницы разделения просматриваемой темы
Stats.template.php Шаблон страницы статистики форума
Themes.template.php Шаблон секции управления списком и настройками установленных тем оформления
Who.template.php Шаблон страницы «Кто онлайн»
Xml.template.php Этот файл содержит различные xml-шаблоны, используемые движком

Исходные файлы движка (Sources)

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

Инструментарий

Чтобы быстро найти нужный текст в языковых (и не только) файлах, воспользуйтесь соответствующими приложениями. Сгодится любой файловый менеджер (например, Unreal Commander или Total Commander), или текстовый редактор, который умеет открывать целые директории — к примеру, Visual Studio Code или Notepad++. А дальше просто с помощью встроенного поиска находите нужную вам строчку и изменяете её.