Разработчикам плагинов: новое в 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, при установке плагина из админки, именно это название директории и будет браться при распаковывании архива плагина, независимо от того, как называется сам архив и корневая папка в нем.

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

  • Новый функционал
    Нашел в комментариях разговор(2014 года) про расширение, написали прям в точку чего не хватает: Слишком размытый вопрос, чтоб на него можно было конкретно ответить. Возможности админа нужно расширять не для того,...
  • Не включаются плагины
    Привет всем.Загрузил в папку /common/plugins с десяток плагинов из них включились парочка, остальные или вообще ни каких ошибок не выдают или требуют файл Plugin_xxxx.class.php который присутствует в архиве. С чем...
  • Ищу Исполнителя на проект(бюджетный), долгосрочное сотрудничество.
    Планирую использовать Альто(огромное спасибо за данный форк!) в замен жуумлы, отсюда ищется исполнитель по настройке хостинг-сервера(firstvps, fastvps) под альто, настройка движка и установка необходимых модулей плюс ...
  • Плагины Компании и Работа, теперь на Альто
    Добрый день, меня зовут Антон, я занимаюсь разработкой плагинов и доработок под Livestreet с 2009 года. Тогда же были написаны плагины Компании и Работа для livestreet, некий аналог разделам хабрахабр. Недавно стали...

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
Понял. Спасибо.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.