Создание простейшего SPIP плагина

Создание простейшего SPIP плагина. Название плагина: voltaire.

Постановка задачи

Нужно создать плагин, который бы позволил в удобно изменять контактную информацию, и потом так же удобно выводить ее в нужном месте. Информация - это 4 текстовых поля (Контакты вверху, Контакты Внизу, Контакты в колонке, Бегущая строка). N/t/ фактически надо добавить 4 новых поля в базе CMS.

Доступ к заданию этой информации должен осуществляться через кнопку в меню "Редактор сайта".

Создаем файла plugin.xml

Создаем папку /plugins/voltaire в которой будет идти разработка.

Создаем файл plugin.xml - файл с информацией про плагин. Без него существование плагина невозможно.Вносим в этот файл минимальный набор данных для нашего плагина:

<plugin>       
        <nom>Voltaire</nom><!-- Имя плагина -->
        <auteur>Aleksey Yaroshchuk (a.yaroshuk@aloha.org.ua)</auteur><!-- Автор плагина -->
   <licence>GNU/GLP</licence><!-- Лицензия -->
        <version>1.0.0</version><!-- Версия плагина -->           
        <description> <!-- Описание на разных языках -->
        <multi>
        [en] This plugin provides simple adding of contact information
        [ru] Этот плагин позволяет легко добавлять контактную информацию
        </multi>
        </description>
        <etat>test</etat><!-- Состояние плагина. Может еще быть dev и stable -->
   <prefix>voltaire</prefix><!-- Префикс плагина. Желательно сделать таким же как и название папки, чтобы не было путаницы -->
   <icon>img/voltaire_128x128.png</icon><!-- Ссылка на иконку плагина, которую ложим в папку img плагина -->
        <bouton id='voltaire_button' parent='naviguer'><!-- Добавляем кнопку в раздел "Редактор сайта", ведущую на редактирование конфигурации плагина -->
<icone>img/voltaire_24x24.png</icone>
<titre>Контакты</titre>
<url>cfg&cfg=voltaire</url>
</bouton>
        <necessite id="cfg" version="[1.15.2;]" /><!-- Указываем что наш плагин не сможет работать без плагина cfg версии >= 1.15.2 -->
</plugin>

Настройка конфигурации нашего плагина с помощью плагина CFG

Так как наш плагин своих табличек в базе данных создавать не будет, а хранить информацию будет в мета табличке, и работать будет с ней через плагин CFG, то первым делом создаем папку fonds. В этой папке создаем файл cfg_voltaire.html. Название файла очень важно для правильной его подхватки плагином CFG. Как видите в его название участвует префикс нашего плагина. Содержимое этого файла будет приблизительно следующим:

<!-- Следующие коменты это не просто коменты, а служебная информация для плагина CFG -->
<!-- titre=Voltaire -->
<!-- autoriser=configurer -->
#CACHE{0}
<div class="ajax"> <!-- При желании можно убрать класс ajax и тогда форма не будет обрабатываться через ajax -->
#FORMULAIRE_CONFIGURER_VOLTAIRE
</div>

Как видите суть этого файла в том, чтобы вставить форму конфигурации плагина и прописать некоторую служебную информацию (которую как вы увидите можно вставлять и в самой форме).

После этого создаем папку formulaires, а в ней файл configurer_voltaire.html - для той самой формы конфигурации. В этом файле мы пропишем все поля, которые мы хотим хранить в мета таблице в БД, а плагин CFG позаботится о их сохранении. Содержимое этого файла будет таким:

<!-- Еще чуток служебной информации для плагина CFG -->
<!-- autoriser=configurer -->
<!-- refus=<:cfg:refus_configuration_administrateur:> -->
<!-- nom=voltaire -->
<div class='formulaire_spip formulaire_configurer formulaire_configurer_#FORM' id='formulaire_configurer_#FORM'>
<h3 class='titrem'>Конфигурация плагина Voltaire</h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
        <div>
#ACTION_FORMULAIRE{#ENV{action}}                
           <ul>
<li class="editer_header_contacts">
<label for="header_contacts">Контакты вверху</label>                                
<input type="text" name="header_contacts" class="text" id="header_contacts" size="60" value="#ENV{header_contacts}" />
</li>
               <li class="editer_footer_contacts">
<label for="footer_contacts">Контакты внизу</label>                                
<input type="text" name="footer_contacts" class="text" id="footer_contacts" size="60" value="#ENV{footer_contacts}" />
</li>
               <li class="editer_column_contacts">
<label for="column_contacts">Контакты в колонке</label>                                
<input type="text" name="column_contacts" class="text" id="column_contacts" size="60" value="#ENV{column_contacts}" />
</li>
               <li class="editer_creeping_line">
<label for="creeping_line">Бегущая строка</label>                                
<input type="text" name="creeping_line" class="text" id="creeping_line" size="60" value="#ENV{creeping_line}" />
</li>               
</ul>
<p class='boutons'><input class='submit' type="submit" name="_cfg_ok" value="<:bouton_enregistrer:>" /></p>
</div>
        </form>
</div>

Теперь самое время зайти в админпанель, установить плагин, и убедиться, что кнопка "Контакты" в разделе "Редактор сайта" ведет на страницу редактирования плагина, так как мы это прописали в файле plugin.xml. Также убедимся что введенные данные сохраняются в БД.

Вывод данных в шаблонах

В принципе я мог бы рассказать как создавать теги для вывода нужной информации. Но поскольку для этого плагина хватит стандартного тега #CONFIG, то чудить и создавать ненужного кода я не буду. А о создании тегов расскажу в какой то другой статье. Итак для вывода информации достаточно будет воспользоваться одной из следующих конструкций:

#CONFIG{voltaire/header_contacts}
#CONFIG{voltaire/footer_contacts}
#CONFIG{voltaire/column_contacts}
#CONFIG{voltaire/creeping_line}

Все! Теперь наш простой плагин готов к использованию.

наверх