Опыт показал, что редактировать код напрямую создает большие сложности с последующими обновлениями и другие проблемы. Гораздо более эффективно создать пакет модификаций, который легко установить, убрать, поделиться с другими пользователями 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>
Можно взять целый файл и изменить выделенное с данными для другого мода.
Этого достаточно, мод сможет устанавливаться и убираться из админки.
Цитата: RawonaM от июля 5, 2022, 16:11И для каждой операции нужен блок operation, в котором есть search и add.
Есть, наверно, и replace, не только add?
Где можно посмотреть полное описание синтаксиса модов для смф со всеми инструкциями?
@RawonaM Здравствуйте! Не будет ли Вам и интересным заглянуть в "псевду"?
Я открыл день тому назад тему в
псевдо.
Сегодня ее модератор Тибарен закрыл.
Вам это не покажется странным?