|
SMF - XML стандарт в модификациях
Не обнаружив никаких данных по созданию модов для смф, решил написать эту "статью"(она маленькая, ибо только начал копаться).
Посвящено это нечто, как написано в названии, XML стандарту в модификациях
Сам по себе мод - код, вносящий изменения в работу ядра SMF и изменения template'ов.
Первое - основной код движка, второе - оболочка, в которую выводятся данные.
Примеры Source'ов:
- Admin.php
- ManageCalendar.php
- Display.php
Примеры Template'ов:
- Admin.template.php
- ManageCalendar.template.php
- Display.template.php
Как видно при создании template'ов стоит следовать негласному совету разработчиков: ваши собственные шаблоны должны меть вид <название>.template.php, где
<название> - понятно слово(сочетание).
Каждая тема имеет свои template'ы. Но большинство модов предназначены для изменения только стандартных тем, как изменить кастом тему авторы описывают обычно
отдельно.
Все исходники движка лежат в папке Sources, шаблоны в папке темы(Themes/<Theme_name>/).
Далее стоит упомянуть про языковые стринги(от string). Это массив с именем $txt, в котором храниться все используемые в движке строки. При добавлении
обширных, больших модификаций без языковых стрингов обычно не обходится. Языковые стринги лежат в папке default/languages.
Модификации сами по себе могут использовать как стандартные тексты, так и добавленные. При добавлении текстовых стрингов обычно используется файл вида:
Modifications.<language>.php, где <language> - язык, для которого дополняются стринги, или же создается свой.
Вроде самое важное сказали, теперь приступим к структуре пакетов модификаций.
Архив, в котором содержится мод, должен иметь расширения: zip gz, tar, tar.gz .
Внутри архива обязательно должен быть файл: package-info.xml . Файл package-info.xml представляет собой инструкцию к действиям. В нем хранится основная
информация о моде(id, версия мода, автор, readme текст(как вариант), устанавливаемые файлы, удаляемые файлы).
Кроме этого xml-файла в пакете модификации также могут быть: PHP, MOD, XML, IMGS и т.д. т.е. любые файлы, необходимые для работы модификации.
Существую два способа описания модификаций. В данной статье будет рассматриваться xml, а НЕ mod.
Mavn: синтаксис двух систем немного отличается друг от друга, но новичкам будет легче использовать mod, т.к. он легче и понятней.
Рассмотрим структуру файла package-info.xml на примере EasyEditMeta.
В пакете содержатся файлы:
package-info.xml
install.xml
readme.txt
install.php
Файл 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/">
<name>Easy Edit Meta Data</name>
<id>karlbenson:EasyEditMetaData</id>
<type>modification</type>
<version>1.0</version>
<install>
<readme type="file">readme.txt</readme>
<code>install.php</code>
<modification>install.xml</modification>
</install>
<uninstall>
<modification reverse="true">install.xml</modification>
</uninstall>
</package-info>
Первые 3 тэга:
<?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/">
это описание, в каком стандарте сделан сам пакет мода.
Аналог в HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional
//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<name></name> - Название модификации
<id></id> - id? уникальное название(нужно проверить,хз)
<type></type> - тип пакета(т.к. в данном формате распространяются не только модификации)
<version></version> - версия модификации
<install></install> - инструкции по установке
<uninstall></uninstall> - инструкции по удалению
<readme type="file"></readme> - ссылка на файл с описанием (возможно прямое использвование, т.е. через CDATA).
<code></code> - Фрагмент кода, который необходимо выполнить
<modification></modification> - ссылка на файл, в котором хранится описание изменений, при reverse="true" - удаление последствий изменений
<file name="<filename>"></file> - тут заключены изменения одного конкретного файла
<operation></operation> - тут заключены действия, изменения
<search position="before || after"><![CDATA[<критерии поиска>]]></search> - поиск текста в заданном файле, поиск, где before || after - одно из двух
<add><![CDATA[<код для добавления>]]></add> - добавление фрагмента, где <код для добавления> - ваш код
<require-file name="<имя файла>" destination="<куда копировать>" /> - копирует необходимые файлы в кутузку куда следует
<remove-file name="<что удаляем?>" /> - удаляет необходимый файл
Собственно, это все самое основное, что, как мне кажется, необходимо знать для начала.
Дальше-больше(с)
Огромное спасибо Mavn'у.
C уважением, DeT! |
|