Joomla 1.5: Создание плагина smilies - Создание плагина Joomla стр.2
| Индекс материала |
|---|
| Joomla 1.5: Создание плагина smilies |
| Создание плагина Joomla стр.2 |
| Создание плагина Joomla стр.3 |
| Все страницы |
Теперь мы будем работать с уже установленным плагином, в директории плагинов, в движке - так мы сможем контролировать процесс разработки, и что бы удостовериться, что мы всё еще понимаем, что делаем - открываем файл: ...\plugins\content\smilies.php И добавляем в него пару строчек, теперь он должен выглядеть так:
// Защита от прямого доступа:
defined('JPATH_BASE') or die ('Restricted access');
// Импортируем файл с классом, что бы JPlugin стал нам доступен:
jimport( 'joomla.plugin.plugin' );
class plgContentSmilies extends JPlugin
{
function onPrepareContent( &$article, &$params, $limitstart)
{
echo '<h1>РАБОТАЕТ!!!</h1>';
return true;
}
}
Затем откройте какую нибудь статью на своём сайте, и если вы до сих пор всё делали правильно, то вы должны увидеть надпись "РАБОТАЕТ!!!", в самом верху, там, где выводится контент. Если нет, то проверяем, что не забыли опубликовать плагин, и что он вообще установился.
Следующим нашим шагом будет разработка интерфейса админа. Где же нам взять такой чудо-элемент, картинку которого я привел выше. Как я уже говорил Joomla 1.5 ничего подобного не предоставляет, но мы можем создать свой элемент управления.
Здесь мне видится такой выход: мы создадим свой элемент управления - frame, он будет выводить html-элемент IFRAME, который будет отображать ещё один наш файл, в котором мы уже сможем создать любой функционал, не взирая на ограничения движка Joomla. Итак, нужно добавить следующие строчки в файл манифеста smilies.xml :
<params addPath="/plugins/content/smilies"> <param name="frame" type="smiliesframe" label="Сопоставление" description="Сопоставление" /> </params>
Теперь он должен выглядеть так:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="content" method="upgrade">
<name>Content - Smilies</name>
<author>Moskitos80</author>
<creationDate>07-10-2011</creationDate>
<copyright>Copyright (C) 2011 - 2012. All rights reserved.</copyright>
<license>GNU/GPL</license>
<authorEmail>moskitos80@gmail.com</authorEmail>
<authorUrl>/</authorUrl>
<version>1.0</version>
<description>Преобразует заданные символы в контенте в соответствующие смайлики</description>
<files>
<filename plugin="smilies">smilies.php</filename>
<folder>smilies</folder>
</files>
<params addPath="/plugins/content/smilies">
<param name="frame" type="smiliesframe" label="Сопоставление" description="Сопоставление" />
</params>
</install>
В теги params - заключаются . Если мы хотим добавить не стандартный элемент, то мы указываем в охватывающем теге params - атрибут addPath, а его значением станет путь в папку с файлом, где будет описан класс, реализующий нужный функционал. Далее указываем сам элемент param - все атрибуты соответствуют стандартным, но атрибут type - имеет значение - название файла (smiliesframe - без расширения), описывающего элемент класса.
Класс этот должен расширять класс JElement и иметь название JElement(имяФайлаЭлемента). Так, как в xml файле манифеста мы указали в атрибуте type параметра param значение smiliesframe, то файл нам нужно назвать smiliesframe.php , а класс который мы в нем опишем: JElementSmiliesFrame. Он должен иметь единственный метод:
fetchElement($name, $value, &$xmlElement, $control_name)
Где $name, $value - это значения одноимённых атрибутов xml - элемента <param /> в файле манифеста. $xmlElement - это объект JSimpleXMLElement, который содержит в себе дубликаты остальных параметров.
В принципе аргументы этого метода, в нашем случае, нам не интересны. Нам вообще нужно будет просто вернуть из метода нашего класса - html код элемента (это касается и всех остальных случаев) ниже листинг файла smiliesframe.php
<?php
defined('_JEXEC')or die('Restricted access');
class JElementSmiliesFrame extends JElement
{
public function fetchElement($name, $value, &$xmlElement, $control_name)
{
return '<iframe frameborder="0" src="/plugins/content/smilies/smiliestoolbar.php" width="400px" height="400" align="center">IFRAME не работает!</iframe>';
}
}
В листинге выше мы описали наш не стандарный элемент:
<param name="frame" type="smiliesframe" label="Сопоставление" description="Сопоставление" />
Который выведет в панели администратора html элемент IFRAME, который отоюражает результат работы файла /plugins/content/smilies/smiliestoolbar.php - создадим этот файл. Однако теперь нам нужно инициализировать систему, как бы с нуля, ведь фактически получается, что файл smiliestoolbar.php подключается у нас вне движка, а так хочется попользоваться его удобствами. Запустить систему "с толкача" можно следующим образом (пропишем этот код в самом начале файла smiliestoolbar.php) :
define('_JEXEC',1);
header('Content-type: text/html; charset=utf-8');
define('DS',DIRECTORY_SEPARATOR);
define('JPATH_BASE', realpath('..'.DS.'..'.DS.'..'.DS));
require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');
$mainframe = JFactory::getApplication('administrator');
Набор косметики для женщин
Набор косметики для женщин - всё для идеального макияжа!
s-parfum-shop.ru
Joomla 1.5: Создание плагина smilies - Создание плагина Joomla стр.2