К списку «Проектирование модуля для Joomla 3.x»
И так, пришло время одного из самых главных частей нашего модуля — базы данных. Joomla может работать со многими БД: MSQL, Oracle, Postgree и т.п. Для нас сейчас интересует БД MySQL, поэтому ориентрируем подачу материала именно на эту систему управления базами данных.
Файловая структура
Как и в предыдущем посте, на данном шаге структура файловой системы тоже претерпит ряд изменений по возрастающей. Добавим 2 файла c расширением *.sql, в которых будет структура и начальные тестовые данные для установки и удаления данных из БД. При установке модуля файл инсталляции будет создавать новую таблицу mod_table_portfolio для нашего модуля, а при удалении модуля файл деинсталляции удалит эту таблицу, что разрешит проблему сохранения системы Joomla в чистоте.
Ниже представлена новая файловая структура модуля, где в корень модуля добавлена новая папка sql, а в ней файлы с конструкциями языка SQL
Как видим, добавили 2 файла, mod_portfolio.install.mysql.utf8.sql и mod_portfolio.uninstall.mysql.utf8.sql, которые имеют следующий код в себе
CREATE TABLE IF NOT EXISTS `mod_table_portfolio` ( `id` int(10) NOT NULL AUTO_INCREMENT, `title` varchar(100) NOT NULL, `description` text NOT NULL, `icon` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1; INSERT INTO `mod_table_portfolio` (`title`, `description`, `icon`) VALUES ('Название проекта 1', 'Описание проекта 1', 'images/icon1.png'); INSERT INTO `mod_table_portfolio` (`title`, `description`, `icon`) VALUES ('Название проекта 2', 'Описание проекта 2', 'images/icon2.png'); INSERT INTO `mod_table_portfolio` (`title`, `description`, `icon`) VALUES ('Название проекта 3', 'Описание проекта 3', 'images/icon3.png');
DROP TABLE IF EXISTS `mod_table_portfolio`
Переопределение структуры установочного файла mod_portfolio.xml
Добавим новый теги install и uninstall, которые будут выполняться на этапе установки и удаления модуля, в этих тегах укажем пути к нашим SQL-файлам и дополнительно добавим папку sql в тег распознавания фалов и директорий в теге files
<?xml version="1.0" encoding="utf-8"?> <extension type="module" version="3.0" client="site"> <name>Module Portfolio. Stage 4</name> <author>David Amirkhanov</author> <creationDate>August 2016</creationDate> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>mail.websofter@gmail.com</authorEmail> <authorUrl>www.wsofter.com</authorUrl> <version>1.0.0</version> <description>Module Portfolio for Joomal CMS designed by David Amirkhanov</description> <files> <filename module="mod_portfolio">mod_portfolio.php</filename> <filename>index.html</filename> <filename>helper.php</filename> <folder>sql</folder> <folder>tmpl</folder> <folder>language</folder> </files> <media folder="tmpl" destination="mod_portfolio"> <folder>images</folder> <folder>css</folder> <folder>js</folder> </media> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.mod_portfolio.ini</language> <language tag="en-GB">en-GB/en-GB.mod_portfolio.sys.ini</language> <language tag="ru-RU">ru-RU/ru-RU.mod_portfolio.ini</language> <language tag="ru-RU">ru-RU/ru-RU.mod_portfolio.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic"> <field name="title" type="text" label="MOD_PORTFOLIO_TITLE" description="MOD_PORTFOLIO_TITLE_DESC" required="true" size="30" class="mod-portfolio-title" validate="" /> <field name="description" type="editor" default="" label="MOD_PORTFOLIO_DESCRIPTION" description="MOD_PORTFOLIO_DESCRIPTION_DESC"/> <field name="icon" type="file" label="MOD_PORTFOLIO_FILE" description="MOD_PORTFOLIO_FILE_DESC" accept="images/*"/> </fieldset> </fields> </config> <install> <sql> <file driver="mysql" charset="utf8">sql/mod_portfolio.install.mysql.utf8.sql</file> </sql> </install> <uninstall> <sql> <file driver="mysql" charset="utf8">sql/mod_portfolio.uninstall.mysql.utf8.sql</file> </sql> </uninstall> </extension>
Установка и демо
Теперь, при установке в БД данный модуль создаст отдельную таблицу mod_table_portfolio для модуля, в котором мы сможем сохранять, изменять и удалять данные портфолио
Данная таблица будет содержать структуры и первичные данные, которые были определены в файле инсталляции таблицы модуля mod_portfolio.install.mysql.utf8.sql
Скачать проект для данного шага создания модуля можно скачать по ссылке mod_portfolio_v1.0.0_stage_4.zip.