Действия

Самый простой компонент для Joomla 1.x

Материал из База знаний Joomla

Вступление

В данной небольшой статье я покажу как можно создать самый простой компонент для Joomla ветки 1.0. Просто костяк, на который потом можно "наращивать свое мясо".

Инсталляция любого компонента, модуля или мамбота как таковая это zip-файл, содержащий в себе несколько файлов и директорий в которых может находиться программный код, изображения или другие элементы, необходимые для работы вашего компонента. На самом деле не обязательно всегда сразу предусматривать что же у вас будет заложено в компоненте, что он будет использовать. Главное - выбрать для него имя и создать обязательные файлы.

Все остальное - можно вносить уже после установки, во время процесса разработки, всего лишь модифицируя xml-файл и добавляя в него новые, необходимые вам, элементы. А сборку производить простым копированием в одну директорию файлов из админ- и фронт-части компонента и архивируя это в zip-файл.

Поехали

Предположим вы создаете компонент по вводу данных о бабочках для продвинутых биологов-экологов. Я бы выбрал для него самое простое имя butterfly, и скорее всего бы не прогадал, потому что мало кому придет в голову называть так компоненты. Но вот называть компонент именем test или shop не правильно, потому что вполне может сложиться ситуация, когда другой разработчик создал одноименный компонент и при установке двух таких расширений на один сайт может возникнуть конфликт.

Итак. Создаем директорию com_butterfly и файл butterfly.php в ней. Первое имя для удобства, второе - по необходимости. Далее нам нужно описать наш инсталляционный пакет. Для этого используются специальным образом отформатированные xml-файлы. Например, такой:

<?xml version="1.0" encoding="windows-1251"?>
<mosinstall type="component">
  <name>butterfly</name>
  <author>Who am I</author>
  <authorUrl>google.com</authorUrl>
  <version>1.0</version>
  <description>Учет миграции бабочек</description>
  <files>
    <filename>butterfly.php</filename>
    <filename>images/index.html</filename>
  </files>
</mosinstall>

В файл butterfly.php напишем примерно следующее:

 
<?
 
    echo "Привет всем бабочкам";
 
?>
 

Вам наверняка стало интересно, а что это за папка images и зачем в ней создан файл index.html. Дело в том, что это такой трюк, который применяется, если нам надо, что бы установщик компонента создал какую-либо нужную нам директорию. В данном конкретном примере, мы можем хранить в ней фотографии добавляемых в каталог бабочек. Но. Фотографии добавляются уже после установки, а потому мы заранее должны определиться с местом их хранения. Пускай это будет именно эта папка. А файл index.html нам не повредит, даже если он будет совершенно пустой, потому что он всего лишь нужне для обозначения того, что папка будет создана.

Итак, полная сборка архива компонента включает:

  • butterfly.php
  • butterfly.xml
  • Папка images и файл index.html в ней

Установка и проверка

Полученный архив устанавливаем стандартным способом через админку. Но. Помните - в данном компоненте нет административной части, потому что мы ее не создали. Не обязательная она, а потому и в выпадающем меню компонентов его тоже не будет. И найти его можно лишь во фронт-части. Для этого заходим на сайт, где установлена Joomla и пишем в адресной строке:

index.php?option=com_butterfly

Административная часть

Если она все-таки нужна, то нам необходимо модифицировать xml-файл компонента, добавив сразу после закрытого тэга files следующий текст:

 
...
  </files>
 
<administration>
    <menu>Бабочки</menu>
    <submenu>
      <menu task="">Действие по умолчанию</menu>
      <menu task="view_catalog">Просмотр каталога</menu>
    </submenu>
    <files>
      <filename>admin.butterfly.html.php</filename>
      <filename>admin.butterfly.php</filename>
</administration>
 
</mosinstall>

И создать два (можно даже пустых) файла admin.butterfly.html.php и admin.butterfly.php. Описание создания админ-интерфейса - повод для большой и отдельной статьи и потому здесь рассматриваться не будет. Главное понять что в тэге menu содержится текст, который будет помещен в выпадающее меню. В submenu - следующие уровни выпадающих меню, когда к строке запроса будет приписываться заданная переменная task. Например:

index2.php?option=com_butterfly&task=view_catalog

А перечисленные в секции files файлы являются обязательными. В принципе можно в них включить xml-файл, но он должен скопироваться автоматически. Но лучше на это не надеяться. Возможно, в будущих версиях Joomla, такое поведение по умолчанию будет изменено.

Действия с базой данных

Если при установке компонента вам жизненно необходимо создать рабочие таблицы или изменить существующие, то для этого есть специальная секция xml-файла. Можно ее поместить сразу после закрытого тэга files и до administration.

 
...
</files>
 
 <queries>
      <query>
        CREATE TABLE IF NOT EXISTS `#__batt_list` (
          id BIGINT UNSIGNED NOT NULL auto_increment PRIMARY KEY,
          name VARCHAR(255)
        ) TYPE=MyISAM;
      </query>
</queries>
 
</mosinstall>

В данном случае мы создаем одну таблицу, в которой, по всей видимости и будем хранить данные о бабочках. Например, их имена.