Создание сайтов в Челябинске. Продвижение. Оптимизация

Разработка сайтов, поисковая оптимизация, продвижение, техническая поддержка и обслуживание вебсайтов любой сложности. Быстро, качественно и по разумной цене.

Создание компонента "Каталог" для Joomla 3 (Часть 1)

Разработка компонента для Joomla 3 с нуляНе для кого не секрет, что сейчас рынок нуждается в сайтах, на которых можно что-то продавать, а не просто информировать. Но что делать когда интернет-магазин достаточно дорого, а визитка не интересно? Конечно заказать каталог! Эта статья все же для разработчиков поэтому хватит слов и приступаем к делу.

1. Шаг - установщик компонента.

Начнем с самого начала! Это файл установщик компонента, не стоит им пренебрегать, нужно чтобы все ваши разработки имели опрятный вид, да и к тому же в последствии это с экономит уйму времени, ну а если выкладывать свое ваяние на JED то установшик это уже не рекомендация, а требование!

Наш компонент будет называться catalogue поэтому название компонента в структуре Joomla будет соответственно com_catalogue. Создаем файл с названием com_catalogue.xml и пока просто копируем листинг ниже.

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
  <name>com_catalogue</name>
  <creationDate>20.02.2013</creationDate>
  <author>Buyanov Danila</author>
  <authorEmail>info[at]saity74.ru</authorEmail>
  <authorUrl>http://saity74.ru</authorUrl>
  <copyright>© Saity74 LLC, 2013</copyright>
  <license>GNU General Public License version 2 or later;</license>
  <version>1.0.0</version>
  <description>COM_CATALOGUE_MANAGER</description>
  <install>
    <sql>
      <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
    </sql>
  </install>
  <uninstall>
    <sql>
      <file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
    </sql>
  </uninstall>
  <administration>
    <menu>Catalogue</menu>
    <files folder="admin">
      <filename>index.html</filename>
      <filename>catalogue.php</filename>
      <filename>controller.php</filename>
      <filename>access.xml</filename>
      <filename>config.xml</filename>
      <folder>controllers</folder>
      <folder>helpers</folder>
      <folder>models</folder>
      <folder>views</folder>
      <folder>tables</folder>
      <folder>sql</folder>
    </files>
    <languages folder="admin">
      <language tag="ru-RU">language/ru-RU.com_catalogue.ini</language>
      <language tag="ru-RU">language/ru-RU.com_catalogue.sys.ini</language>
    </languages>
  </administration>
   <files>      
    <filename>index.html</filename>
    <filename>catalogue.php</filename>
    <filename>com_catalogue.xml</filename>
    <filename>controller.php</filename>
    <filename>helper.php</filename>
    <filename>thumbnail.php</filename>
    <filename>router.php</filename>
    <folder>models</folder>
    <folder>views</folder>
  </files>
</extension>

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

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

install.mysql.utf8.sql

DROP TABLE IF EXISTS `#__catalogue_categories`;
CREATE TABLE `#__catalogue_categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`alias` varchar(255) NOT NULL,
`state` tinyint(3) NOT NULL,
`published` tinyint(1) NOT NULL,
`ordering` int(11) NOT NULL,
`image` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS `#__catalogue_items`; CREATE TABLE `#__catalogue_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cat_id` int(11) NOT NULL, `name` varchar(255) NOT NULL, `intro` text NOT NULL, `desc` text NOT NULL, `state` tinyint(3) NOT NULL, `published` tinyint(1) NOT NULL, `sticker` tinyint(3) NOT NULL, `ishot` tinyint(1) NOT NULL, `ordering` int(11) NOT NULL, `price` varchar(30) NOT NULL, `image` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

uninstall.mysql.utf8.ini

DROP TABLE `#__catalogue_categories`, `#__catalogue_items`;

Те кто знает MySQL тому все понятно, кто не знает может просто скопировать, на самом деле ничего особенного тут не происходит. Создается две таблицы: таблица товаров и таблица категорий.

Внимание стоит уделить только тому, что названия таблиц должны иметь префикс т.е. записываются по правилам Joomla например #__catalogue_items.

Далее идут две очень похожие XML структуры: administrator и files первая отвечает за административную часть компонента - BackEnd, а вторая за пользовательскую - FrontEnd. И тут мы плавно переходим к следующему шагу.

2. Шаг - Файловая структура компонента

После того как сохраним все файлы должно получиться вот так:

Шаг первый создание структуры каталога Joomla

Структура каталога

Но это далеко не все. Вернемся немного назад и вспомним о XML структуре administrator - это ничто иное как описание административной части:

Путь в XML: extension -> administrator -> menu - это заголовок главного меню Joomla

Заголовок меню компонента Joomla

Заголовок меню (тут он уже переведен на русский см. далее)

Путь в XML: extension -> administrator -> files - этот блок отвечает за копирование файлов и папок компонента из установочного архива в систему. Начинается все с ключа folder="admin" он указывает что все что перечислено внутри блока нужно искать в этой папке (т.е. admin). Далее файлы заключаем в тег file, дериктории соответственно в folder.

Название файлаОписание
index.html Должен быть в каждой папке чтобы ограничить к ней доступ из браузера
catalogue.php Основной файл компонента, который осуществляет загрузку дополнительных модулей и функций, а также создает контроллер компонента.
controller.php Файл основного контроллера (бывают еще и дополнительные) создает экземпляр класса JControllerLegacy
access.xml Управление доступом пользоватей к компонету и отдельным его функциям
config.xml Файл глобальных настроек компонента
controllers Папка в которой будут храниться дополнительные контроллеры JControllerAdmin и JControllerForm, они отвечают за вывод списков, сохранение, публикацию, сортировку отдельных записей
helpers Папка содержащая вспомогательные классы компонента
models Папка с моделями JModelList и JModelForm в месте с контроллерами они выполняют операции над записями в таблице.
views В этой папке лежат виды т.е. шаблоны вывода информации в виде HTML (прим. не всегда HTML, бывает и PDF, и многое другое)
tables Папка содержащая классы таблиц, они необходимы чтобы модель могла оперировать записями в таблице базы данных
sql

Ну и наконец здесь лежат SQL-скрипты для создания/удаления таблиц при установке компонента

Путь в XML: extension -> administrator -> languages - языковые настройки или файлы локализации нашего компонента. Настоятельно рекомендую их использовать если вы хотите создать хорошее дополнение к Joomla, да и в конце концов потом будет проще вносить исправления.

Обращаю внимание на атрибут folder="admin" папка languages должна лежать внутри папки admin в структуре нашего компонента

Далее перейдем к FrontEnd части там все аналогично и даже проще, поэтому столь подробно описывать не будем, просто посмотрим на конечную структуру компонента.

Продолжение следует. Создание компонента "Каталог" для Joomla (Часть 2)

Понравилась статья? Возник вопрос? Вступайте в нашу группу и смело задавайте vk.com/saity74

А еще можно обсудить на нашем форуме