В прошлой статье мы создали компонент. Создали XMl файл, в котором прописали название компонента. Если упаковать данный файл в zip архив (упаковывать нужно именно XML файл и все содержимое папки, а не саму папку) то такой компонент легко устанавливается  в Joomla. Однако он. очевидно, ничего не делает. Бизнес логику компонента выполняют php файлы. Минимум, это может быть всего один файл в корне компонента с названием компонента. К примеру, если наш компонент называется com_moy_component то название php файла должно быть таким moy_component.php

Упаковывает его в zip архив и устанавливать его заново. не обязательно. Если компонент с прошлого урока был у вас уже установлен, то просто добавляем к нему этот файл прямо не сервер и все работает. Работает это так примитивно, что по началу думаешь, а зачем же тогда нужна joomla. Если написать в файле

Hello World

 а затем войти на сайт по адресу http://sitename.ru/index.php?option=com_moy_component то вы сразу же увидите эту надпись. Вот и все, компонент работает. Теперь в нем можно прописывать любую необходимую логику. совсем не обязательно, что это будет связано с joomla. Вы вольны писать на обычном php, без какой либо привязки к API. В этом есть своя прелесть.

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

Ряд моментов. которые нужно уметь делать я перечислю. 

Чтобы подключить необходимые скрипты, можно написать прямо в файле 

<script src="/components/com_moy_component/jquery.js"></script>

А можно сделать это через API Joomla, чтобы файл был добавлен в head страницы. делается это так

$doc = JFactory::getDocument();
$doc->addScript('/components/com_moy_component/jquery.js');

CSS подключаются аналогично

$doc->addHeadLink ("/components/com_moy_component/style.css",'stylesheet');

Еще один момент. В joomla принято в каждом файле в самом начале прописывать такую конструкцию 

<?php
defined('_JEXEC') or die('Restricted access');
?>

это нужно для того, чтобы какой-нибудь предприимчивый программист, не сделал на своем сайте такое

<iframe src="http://sitename.ru/components/com_moy_component/moy_component.php"></iframe>

Ну я думаю вы догадались, что с этим делать.   

Оставлять комментарии могут только зарегистрированные пользователи

Комментарии  

МаксимMaxim
# МаксимMaxim 01.05.2016 17:30
Не работает ничего. Not found.
Mike240
# Mike240 04.12.2018 16:15
У меня тоже не работало. Здесь есть ошибка. По всей видимости в новых версиях Joomla в именах модулей и нельзя использовать нижн подчеркивание, поскольку уже идет перфикс com_

При попытке создать компонент с именем com_moy_component режет второе подчеркивание - com_moycomponent. А стало быть и имя файла нужно исправить на moycomponent.php

Так заработало