В продолжение темы «Шаблон для создания модификации», а также как обзор программы Mod Builder — сборщика модификаций для SMF.
Что это?
Программа, разработанная неким Rick «Yoshi2889» Kerkhof для облегчения создания модов для Simple Machines Forum.
Где взять?
См. кнопку-ссылку внизу статьи.
Учебный пример
Создадим модификацию Funny Converter, выполняющую замену файлов collapse.gif и expand.gif аналогичными картинками в PNG формате. Запускаем Mod Builder, заходим в Tools => Options, устанавливаем имя пользователя (ник), которое будет использоваться в проектах в качестве имени автора модификаций. Затем на вкладке Debugging указываем путь к файлам SMF (нужно указать ту версию, для которой создаем модификацию), и на вкладке PHP Code Checking — путь к файлу php.exe (необязательно, но пригодится для тестирования). Затем сохраняем настройки и возвращаемся на главное окошко программы. Выбираем «Create a new project».
На вкладке Mod Details указываем основные параметры мода: название, версию, тип, линейку версий SMF, для которой разрабатываем модификацию. После этого выбираем в меню File => Save Project, указываем или создаем директорию для файлов мода и переходим к следующему шагу.
На вкладке Readme можно создать небольшое описание модификации, указать лицензию и пр. ББ-теги поддерживаются.
Вкладку Source Edits пропускаем, так как там прописываются изменения напрямую в файлах движка, а у нас мод целиком на хуках. Поэтому ставим внизу галочку «Skip this step on build». Теперь открываем папку с проектом, находим там папку Source и создаем в ней подпапки Sources
и Themes/default/images
. Создаем файл /Sources/Subs-Funny.php
со следующим содержимым:
<?php
if (!defined('SMF'))
die('Hacking attempt...');
function funny_buffer($buffer)
{
$replacements = array();
$collapse = 'collapse.gif';
$new_collapse = 'collapse.png';
$replacements[$collapse] = $new_collapse;
$expand = 'expand.gif';
$new_expand = 'expand.png';
$replacements[$expand] = $new_expand;
return (isset($_REQUEST['xml']) ? $buffer : str_replace(array_keys($replacements), array_values($replacements), $buffer));
}
Функция funny_buffer, вызываемая хуком integrate_buffer, на лету заменяет все вхождения collapse.gif и expand.gif в коде страницы на collapse.png и expand.gif.
В директорию /Themes/default/images
складываем подходящие вам картинки collapse.png
и expand.png
. После этого на вкладке Files to extract/delete в правом блоке (Extracting files to the forum) в раскрывающемся списке выбираем директорию Sources
и указываем путь распаковки (Destination) $boarddir
(корень форума). Затем нажимаем «Create a new instruction», чтобы подтвердить наш выбор. Повторяем процесс, выбрав в списке директорию Themes
и путь распаковки $boarddir
. См. скриншот для сравнения:
На вкладке Installation code в раскрывающихся списках внизу выбираем предустановленный шаблон Hooks и оформляем его, как на скрине ниже. При установке мода будет добавляться хук __funny_buffer__ из файла Subs-Funny.php
, а при удалении мода — соответственно, будет удаляться и хук.
Компиляция и проверка
Другие вкладки пропускаем (на вкладке Database altering code можно прописать код добавления необходимых таблиц в базу данных), они нам пока не нужны. Выбираем в меню Project — Compile, указываем имя файла архива и получаем готовый для загрузки мод. Тестируем:
На этом всё, пользуйтесь на здоровье :)