Разработчикам плагинов: новое в XML-манифесте

Манифест — это файл plugin.xml, который находится в корневой директории плагина и дает его описание. И недавно его формат был немного расширен. Вот образец XML-манифеста одного плагина:
<?xml version="1.0" encoding="UTF-8"?>
<plugin compatible="alto">
    <id>similartopics</id>
    <name>
        <lang name="default">Similar Topics</lang>
    </name>
    <author>
        <lang name="default">Alto CMS Team</lang>
    </author>
    <homepage>http://altocms.com</homepage>
    <version>1.0.3</version>
    <dirname>similartopics</dirname>
    <requires>
        <alto>
            <version>1.0</version>
        </alto>
        <system>
            <php>5.3.0</php>
        </system>
    </requires>
    <description>
        <lang name="default">Similar Topics (seeking by tags)</lang>
    </description>
</plugin>
Здесь можно обратить внимание на следующие нововведения:

1) Если плагин пишется непосредственно под Alto CMS, то рекомендуется в корневой узел добавить атрибут compatible="alto". Если это плагин под LS, но который может работать и под Alto, то этот атрибут указывать не нужно.

2) Добавлены элементы <id>...</id> и <dirname>...</dirname> — идентификатор плагина и название его директории. На сегодняшний день значения этих элементов совпадают, но, тем не менее, рекомендуется указывать их оба. Значения элементов id и dirname создаются от имени класса плагина. Чтоб не писать много букв о том, как эти значения формируются, лучше сразу приведу примеры:

  • Если класс плагина называется PluginSimilartopics, то id и dirname будут similartopics
  • А если класс плагина будет PluginSimilarTopics, то id и dirname будут similar_topics

Т.е. тут действует стандартное правило преобразования CamelCase -> underscore.

Как можно понять из названия, dirname — это название директории (папки) в /common/plugins/, куда должен быть размещен плагин. И, начиная с версии Альто 1.0.7, при установке плагина из админки, именно это название директории и будет браться при распаковывании архива плагина, независимо от того, как называется сам архив и корневая папка в нем.

Похожие статьи


3 комментария

0
Допустим, мне нужно указывать название класса «AH», а название каталога удобно назвать «ah». Получается, что я не могу такое себе позволить, т.к. при названии класса «AH» я должен дать название каталогу «a_h». Я правильно понимаю?

Если я правильно понял, то можно ли убрать эту взаимосвязь между названием класса и каталога? Для меня удобно так: если я задал id=«a_h» и dirname=«ah», значит могу позволить указать имя класса равное «AH» и дать имя директории равное «ah».
+2
Понял правильно — так оно и задумано, чтоб не было жесткой зависимости между id плагина и его каталогом. Более того, при таком подходе вообще можно группировать плагины, напр., так:
/common/plugins/novabuild/core/ — это сам плагин
/common/plugins/novabuild/robokassa/ — это дополнение к нему
/common/plugins/novabuild/latte/ — еще дополнение

А id формировать так:
novabuild.core
novabuild.robokassa
novabuild.latte

Но это пока в задумке, реализации окончательной еще нет. Поэтому пока либо называть папку «a_h», либо название класса плагина — «PluginAh»
0
Понял. Спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.