Создание основы компонента

Установочный файл для создания таблицы в базе данных

Создание установочного файла компонента

Создание установочного пакета (.zip)

Установка заготовки компонента на сайт

Проверка установки

 

Из предыдущей главы вы узнали общий принцип работы компонента. Более подробно об этом будет рассказано в последующих главах, а пока нужно создать заготовку и загрузить её на сайт.

 Вы можете не заниматься созданием самостоятельно, а просто скачать готовую заготовку, перейдя по ссылкам в конце данной страницы (перед разделом "Установка заготовки компонента на сайт"), но если вы хотите понять, как всё это работает, то обязательно прочитайте всё от начала и до конца, иначе в дальнейшем могут возникнуть определённые трудности и проблемы.

 

Создание основы компонента

Для начала нужно создать папку, в которой будет всё размещено; назовём её  my_component . Откроем папку и создадим внутри ещё две папки, которые были описаны в предыдущей главе -  administrator  и  site . Далее в каждой из этих папок создадим по пустому файлу index.html, файлу my_component.php, файлу controller.php и папке  views .

Далее в папке  views  необходимо создать ещё одну папку, совпадающую по названию с названием компонента:  my_component . В этой папку нужно вложить ещё одну -  tmpl .

  • 1   views
  •       1   my_component
  •            1    tmpl

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

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

   1     <?xml version="1.0" encoding="utf-8"?>
   2         <metadata>
   3                <layout title="Мой_компонент">
   4                         <message></message>
   5                </layout>
   6                <fields name="request">
   7                       <fieldset name="request">
   8                              <field name="task" default="value"/>
   9                       </fieldset>
  10               </fields>
  11        </metadata>

Благодаря данному файлу в раскрывающемся списке выбора типа меню появится новый пункт с названием вашего компонента, при клике на который появится подпункт Мой компонент (данное значение прописано в строке 3). Обратите внимание на то, что вся эта конструкция находится в папке  site , хотя и работает только в административной панели.

В строке 8 слово value выделено не просто так. Слово, указанное вместо value, будет использовано контроллером для определения запрашиваемой страницы, поэтому вставляйте слово, которое коротко и чётко определяет суть содержимого. Например, для формы обратной связи основную страницу можно обозначить как "feedback" ("Обратная связь"), страницу для просмотра обращений администратором "adm_view_feedback" ("Администратор просмотра обратной связи"), страницу для просмотра обращения пользователя администратором "feedback_view" и так далее. В адресе страницы это слово появится в переменной task.

Позже, в процессе создания других страниц, вы сможете в папку  tmpl  добавлять другие похожие файлы .xml, которые позволят создать соответствующие пункты меню для открытия других страниц компонента.

 Создание файлов осуществляется при помощи текстового редактора Notepad (см. Часть 1, глава 2, "Редактор кода").

В результате проделанной работы вы получите вот такую структуру:

 

  • 1   my_component
  •   1  administrator
  •     2    my_component.php
  •     2   controller.php
  •        1  views
  •               2   index.html
  •     2   index.html
  •    1  site
  •       2   my_component.php
  •       2   controller.php
  •           1  views
  •          2    index.html
  •                   1  my_component
  •                          2    index.html
  •          1   tmpl
  •              2    default.xml
  •                           2    index.html
  •       2   index.html

 

Если вы решили одновременно с установкой заготовки компонента автоматически создать таблицу (или таблицы) в базе данных, то вам необходимо создать в папке  administrator  дополнительную папку и файлы; если вы не собираетесь создавать таблицу, просто пропустите следующий пункт и продолжайте дальше.

 

Установочный файл для создания таблицы в базе данных

Для начала нужно в папке  administrator  создать папку  sql  и уже в неё вложить сначала пустой файл  index.html, а затем файл   install.mysql.utf8.sql ( с расширением .sql). В результате вы получите вот такую структуру:

 

  • 1   my_component
  •   1  administrator
  •      2    my_component.php
  •      2    controller.php
  •           1  views
  •                 2   index.html
  •           1  sql
  •                 2  install.mysql.utf8.sql
  •                 2  index.html
  •      2   index.html
  •    1  site
  •        2   my_component.php
  •        2   controller.php
  •           1  views
  •          2    index.html
  •                   1  my_component
  •                         2    index.html
  •            1   tmpl
  •               2    default.xml
  •                                2    index.html
  •        2   index.html

 

Теперь нужно внести соответствующий код в файл  install.mysql.utf8.sql. Данный файл содержит команды, которые будут выполнены базой данных в случае успешной установки компонента на сайт.

Для начала база данных должна удалить определённые уже имеющиеся таблицы (если таковые существуют). Это делается при помощи команды DROP TABLE IF EXISTS:

   1     DROP TABLE IF EXISTS      #__component_configuration,
   2                                                   #__component_users,
   3                                                   #__component_comments;

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

Далее необходимо создать новые таблицы. Для этого воспользуйтесь командой CREATE TABLE:

   4     CREATE TABLE #__component_configuration (
   5                                                  `id` INT(11) NOT NULL PRIMARY KEY ,
   6                                                  `img_header` MEDIUMBLOB NOT NULL ,
   7                                                 `color_background` VARCHAR(20) NOT NULL DEFAULT '' 
   8                                               ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Эта команда создаёт новую таблицу с именем component_configuration; при этом за счёт вставки #__ автоматически добавляется префикс, указанный в настройках сайта для всех таблиц баз данных. Строки 5-7 создают соответствующие колонки таблицы. Например, строка 5 создаёт колонку с именем id (название взято в обратные скобки!), в которой могут хранится только цельночисленные значения длиной не более 11 символов (цифр); на это указывает INT(11). В строке 6 создаётся колонка с именем img_header, которой присваивается тип MEDIUMBLOB (позволяет хранить большие объёмы данных, например, изображения), а так же значение по умолчанию. В строке 7 устанавливается пустая строка (DEFAULT ''). Каждая колонка отделена от другой при помощи запятой, а для удобства восприятия пишется в коде на отдельной строке; при этом в конце последней записи запятая не ставится. Часть кода, создающего колонки, заключается в круглые скобки, после чего следует строка, устанавливающие остальные характеристики для всей таблицы:

  • ENGINE - тип ("движок") базы данных, в данном случае установлен InnoDB;
  • AUTO_INCREMENT - этот атрибут используется для генерации уникального идентификатора для новых строк; 
  • CHARSET - установка кодировки для таблицы;
  • COLLATE - устанавливает сравнение (сортировку).

Точно так же создаются и все остальные таблицы, которые понадобятся для работы вашего компонента.

При необходимости вы можете внести значения в созданные таблицы. Для этого используется команда INSERT INTO:

   9      INSERT INTO   #__component_configuration (
  10                                                  `id` ,
  11                                                   `img_header` ,
  12                                                   `color_background` 
  13                                                   )
  14                                                   VALUES (1, "", "white")

В строке 9 содержится команда создать новую строку (после существующих) и внести данные в таблицу component_configuration; в первых скобках указываются столбцы, далее следует VALUES ("значения") и о вторых скобках перечисляются значения; при этом значение 1 будет записано в колонку id, значение "" в колонку img_header и т.д. Данные в обоих скобках разделяются запятой, но после последнего значения запятая не ставится (это важно!).

  Более подробную информацию смотрите в документации к базам данных MySQL.

 

Создание установочного файла компонента

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

Открываем редактор (Notepad), создаём новый файл и прописываем в него такие строки:

   1     <?xml version="1.0" encoding="utf-8"?>
   2     <extension type="component" version="1.0.0" method="upgrade">

Эти строки указывают на версию xml ("1.0") и указывают кодировку ("utf-8").

   3     <name>my_component</name>
   4     <creationDate>29.05.2020</creationDate>
   5     <author>S.D.A.</author>
   6     <authorEmail>Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.</authorEmail>
   7     <authorUrl>https://web-development-school.ru/</authorUrl>
   8     <copyright>Copyright 2020</copyright>
   9     <license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
  10    <version>2.5</version>
  11    <description></description>

В строках 3-11 укажите имя (тег <name>), дату создания (тег <creationDate>), автора (тег <author>), адрес электронной почты автора  (тег <authorEmail>), адрес сайта автора (если есть, тег <authorUrl>), копирайт (тег <copyright>), тип лицензии (указанная в примере - один из видов свободной лицензии, открытое программное обеспечение, тег <license>), версию (тег <version>) и описание (само описание вставлять не обязательно, достаточно указать только тег <description>).

  12    <install>
  13          <sql>
  14                <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
  15          </sql>
  16    </install> 

Строки 12-16 прописываются только при наличии установочного файла для таблиц базы данных (см. выше). Если автоматическая установка (создание) таблиц не предусмотрена, то эти строки нужно пропустить.


  17    <files folder="site">
  18          <filename>index.html</filename>
  19          <filename>my_component.php</filename>
  20          <filename>controller.php</filename> 
  21          <folder>views</folder>
  22   </files>

В строках 17-22 прописываются папки и файлы для сайта, на что указывает тег <files folder="site">. Обратите внимание на то, что файл index.html, находящийся в папке view, не прописывается.


  23    <administration>
  24          <menu>My_Component</menu>
  25          <files folder="administrator">
  26                 <filename>index.html</filename>
  27                 <filename>impg.php</filename>
  28                 <filename>controller.php</filename> 
  29                 <folder>sql</folder>
  30                 <folder>views</folder> 
  31          </files>
  32    </administration>

В строках 23-32 прописываются данные для административной части сайта (административной панели), на что указывает тег <administration>. В 24 строке находится тег <menu> с именем компонента; это необходимо для того, что бы компонент отражался в меню "Компоненты" административной панели. Далее в 25 строке идёт открывающий тег <files folder="administrator">, указывающий, что содержащиеся внутри паки и файлы должны быть установлены в одноимённую папку. Обратите внимание: если вы не используете автоматическую установку таблиц базы данных и, соответственно, не создавали папку sql, то строка 29 не должна прописываться.

  33    </extension>

В строке 33 прописан закрывающий тег </extension>.

Теперь осталось только сохранить созданный установочный файл с расширением .xml в главную папку my_component, в результате чего получится следующая структура:

 

  • 1   my_component
  •  1  administrator
  •    2    my_component.php
  •    2    controller.php
  •       1  views
  •             2   index.html
  •       1  sql
  •             2  install.mysql.utf8.sql
  •             2  index.html
  •    2   index.html
  •   1  site
  •       2   my_component.php
  •       2   controller.php
  •             1  views
  •         2    index.html
  •                 1  my_component
  •                      2    index.html
  •           1   tmpl
  •              2    default.xml
  •                           2    index.html
  •       2 my_component.xml

 

Создание установочного пакета (.zip)

Теперь осталось выполнить самое простое действие - сжать всё в архив. Архиву присваивается тоже название, что и компоненту.

Выделите все файлы, кликните правой кнопкой мыши, выберите 7-Zip > Добавить к "My_component.zip". В результате вы получите в папке my_component загрузочный файл заготовки компонента. Обратите внимание, что описанный процесс сжатия может отличаться в зависимости от используемого архиватора и операционной системы.

Всё! Загрузочный файл создан и можно переходить к его установке на сайт.

 Вы можете сделать заготовку самостоятельно, а можете скачать уже готовую. Так же вы можете просмотреть заготовку; для этого скачайте её и распакуйте в какую-либо папку.


 41 Скачать заготовку (версия без создания БД) вы можете  3

* Загрузка возможна только для зарегистрированных пользователей!


 41 Скачать заготовку (версия с созданием БД) вы можете  3

* Загрузка возможна только для зарегистрированных пользователей!


Версия с созданием БД создаёт в базе следующие таблицы:

  • #__component_configuration
  • #__component_users
  • #__component_comments
  • #__feedback_form

Так же в таблице #__component_configuration прописывается одна строка с данными.

 

Установка заготовки компонента на сайт

Если вы ещё не устанавливали на компьютер локальный сервер Open Server, редактор кода Notepad++,  если у вас нет редактора изображений хотя бы на уровне Paint.NET и программы для создания GIF-изображений, то всё это нужно установить. Для чего это нужно, подробно рассказано в Части 1 главе 2; скачивайте с интернета программы Notepad++, Paint.NET (если нет другого редактора), UnFREEz, а как установить и настроить локальный сервер Open Server описано в Части 1, главе 5.

Далее нужно создать сайт, загрузить туда CMS Joomla, создать базу данных и всё настроить. Как это сделать читайте в Части 1 главе 6 и Части 1 главе 7.

После всех установок и настройки необходимо установить шаблон и вставить изображение в "шапку" сайта. Этот процесс подробно описан в Части 1 главе 8.

Следующим пунктом будет установка модулей Главное меню (Main Menu) и Авторизация. Сделайте это так, как описано в Части 1 главе 9 (Установка модулей на позиции), но не изменяйте модуль Breadcrumbs; в результате вы получите на экране то, что изображено на рис.99 в этой же главе (но без навигации по сайту, синей полоски под главным меню).

И последнее, что осталось сделать - установить нашу заготовку для компонента. Для этого откройте Расширения > Менеджер расширений, кликните на кнопку   Или выберите файл  ; в открывшемся окне найдите файл установочного пакета и кликните на него. Через несколько секунд пакет будет установлен, о чём вверху появится сообщение.

 

Проверка установки

В принципе, если вы скачали пакет на сайте, проверять не требуется, однако всё равно это стоит сделать чисто с познавательной целью. Если вы создавали файл самостоятельно, то обязательно проверьте, всё ли правильно установилось.

Откройте папку с вашим сайтом (OSPanel > OpenServer > domains > ваш сайт).

Откройте папку administrator; в ней вы увидите созданную вами папку с названием вашего компонента (если вы скачивали установочный пакет с сайта, то wds_my_component) с префиксом com_, например, com_wds_my_component. В ней долны находится соответствующие файлы и папки, которые были в пакете.

Тоже самое сделайте с папкой components.

Войдите в административную панель, нажмите в главном меню "Компоненты"; в раскрывшемся списке вы увидите установленный компонент. 

Если вы устанавливали версию с созданием таблиц БД, проверьте правильность установки этих таблиц и наличие строк в них (если создавались). откройте базу данных (Дополнительно > PhpMyAdmin в меню локального сервера), выберите нужную базу данных, которую вы создали при установке Joomla, и просмотрите список таблиц. Не забудьте, что созданные вами таблицы теперь имеют соответствующий префикс, указанный в настройках сайта.

Если всё в порядке, всё установлено на свои места, переходите к следующей главе.

Добавлять комментарии и ответы могут только пользователи, прошедшие регистрацию!
Зарегистрируйтесь и напишите своё мнение или ответ!