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');
Виза в канаду
evis.uz
Набор косметики для женщин
Набор косметики для женщин - всё для идеального макияжа!
s-parfum-shop.ru