XML стандарт в модификациях

Автор DeT, 30 октября 2007, 22:59:44

« назад - далее »

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

DeT

Не обнаружив никаких данных по созданию модов для смф, решил написать эту "статью"(она маленькая, ибо только начал копаться).

Посвящено это нечто, как написано в названии, 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'у.
С уважением, DeT.