Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Как создавать МОДы для SMF

Автор RawonaM, июля 5, 2022, 16:11

0 Пользователи и 1 гость просматривают эту тему.

RawonaM

Опыт показал, что редактировать код напрямую создает большие сложности с последующими обновлениями и другие проблемы. Гораздо более эффективно создать пакет модификаций, который легко установить, убрать, поделиться с другими пользователями SMF.
Сами разработчки тоже пришли к выводу, что модификации кода даже с помощью пакета модификаций не решают все, а гораздо лучше, если функциональность можно добавить/изменить не редактируя сам код. Об этом я расскажу позже, сначала рассмотрим классический MOD, который добавляет/заменяет что-то в коде.

Допустим нам нужно добавить строку echo 'test'; после строки $а = b;. Создаем такой файл:

Цитата: modifications.xml от <?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://www.simplemachines.org/xml/modification">
<modification xmlns="http://www.simplemachines.org/xml/modification" xmlns:smf="http://www.simplemachines.org/">
    <id>Rawonam:AttachmentsNoExt</id>
    <version>0.1</version>
    <file name="$sourcedir/Profile-Modify.php">
        <operation>
            <search position="before"><![CDATA[

$а = b;
]]></search>
            <add><![CDATA[
echo 'test';

]]></add>
        </operation>
    </file>
</modification>

Первые пять строк будут одинаковые для всех модов (естественно имя мода, автора и версию нужно заменить), последняя тоже.

Внутри будут идти блоки file для каждого файла, где мы хотим сделать изменения.

И для каждой операции нужен блок operation, в котором есть search и add.


Так мы декларируем все нужные изменения.

Чтобы создать полноценный пакет, нужно добавить файл декларации:

Цитата: package-info.xml от <?xml version="1.0"?>
<!DOCTYPE package-info SYSTEM "http://www.simplemachines.org/xml/package-info">
<package-info xmlns="http://www.simplemachines.org/xml/package-info" xmlns:smf="http://www.simplemachines.org/">
    <id>Rawonam:AttachmentsNoExt</id>
    <name>Attachment files without extension</name>
    <version>0.1</version>
    <type>modification</type>
    <install for="2.1 - 2.1.99">
        <modification>modifications.xml</modification>
    </install>
    <uninstall for="2.1 - 2.1.99">
        <modification reverse="true">modifications.xml</modification>
    </uninstall>
</package-info>

Можно взять целый файл и изменить выделенное с данными для другого мода.

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

mnashe

Цитата: RawonaM от июля  5, 2022, 16:11И для каждой операции нужен блок operation, в котором есть search и add.
Есть, наверно, и replace, не только add?
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

RawonaM

Цитата: mnashe от июля  5, 2022, 22:49
Цитата: RawonaM от июля  5, 2022, 16:11И для каждой операции нужен блок operation, в котором есть search и add.
Есть, наверно, и replace, не только add?

Тогда надо написать:

<search position="replace">

А add так и будет.

Python

Где можно посмотреть полное описание синтаксиса модов для смф со всеми инструкциями?
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

RawonaM

Рад, что пробудил интерес  :UU:
https://wiki.simplemachines.org/smf/Modification отсюда есть ссылка сюда:
https://simplemachines.org/community/index.php?topic=20319.0
Затем две темы про эти два файла. Такая скромная документация потому что это такой любительский проект, либо я просто не нашел полного формального описания. Но там на самом деле очень мало опций, я жалею, что не ознакомился с этим надцать лет назад. На днях я скачал мод https://custom.simplemachines.org/index.php?mod=4218 и он демонстрирует почти все.


RawonaM

Забегая впреред: https://wiki.simplemachines.org/smf/Integration_hooks

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

AVIXA

@RawonaM Здравствуйте! Не будет ли Вам и интересным заглянуть в "псевду"?
Я открыл день тому назад тему в псевдо.
Сегодня ее модератор Тибарен закрыл.
Вам это не покажется странным?
Нет у меня авторитетов.
И не было никогда.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр