Разработка сайтов, поисковая оптимизация, продвижение, техническая поддержка и обслуживание вебсайтов любой сложности. Быстро, качественно и по разумной цене.
Не для кого не секрет, что сейчас рынок нуждается в сайтах, на которых можно что-то продавать, а не просто информировать. Но что делать когда интернет-магазин достаточно дорого, а визитка не интересно? Конечно заказать каталог! Эта статья все же для разработчиков поэтому хватит слов и приступаем к делу.
Начнем с самого начала! Это файл установщик компонента, не стоит им пренебрегать, нужно чтобы все ваши разработки имели опрятный вид, да и к тому же в последствии это с экономит уйму времени, ну а если выкладывать свое ваяние на 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. И тут мы плавно переходим к следующему шагу.
После того как сохраним все файлы должно получиться вот так:
Структура каталога
Но это далеко не все. Вернемся немного назад и вспомним о XML структуре administrator - это ничто иное как описание административной части:
Путь в XML: extension -> administrator -> menu - это заголовок главного меню 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)
Понравилась статья? Возник вопрос? Вступайте в нашу группу и смело задавайте
А еще можно обсудить на нашем форуме