| Как сделать плагин "Привет мир" |
| Написал Kotofeich | |
| 24.08.2007 | |
|
Самая популярная статья всех начинающих программистов. Как обычно, разбираем проект "Привет мир".
Многие пользователи задумываются над тем, как написать простейший плагин для CommunityBuilder. В качестве примера, я решил рассмотреть плагин "Привет мир" и на нем показать структуру кода CB. Исходник находится здесь: http://communitybuilder.ru/index.php?option=com_remository&Itemid=5&func=fileinfo&id=13
Фактически, файл helloworld.xml содержит инструкции по установке плагина. Рассмотрим его построчно:
<?xml version="1.0" encoding="windows-1251"?>
Указываем версию xml и используемую кодировку.
<cbinstall version="1.0.0" type="plugin" group="user">
Указывается, какая версия сборки плагина и к какой группе принадлежит плагин (помимо пользовательского плагина user, бывают еще: языковой плагин (language) и плагин-шаблон (template)).
<name>CB Hello World</name>
<author>Kotofeich</author> <creationDate>23.08.2007</creationDate> <copyright>communitybuilder.ru</copyright> <license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license> <authorEmail> Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script </authorEmail> <authorUrl>www.communitybuilder.ru</authorUrl> Это различная информация об авторе и об авторских правах.
<version>1.0</version>
Этот тег сообщает CommunityBuilder какая минимальная версия CB нужна для установки плагина
<description>
Это простейший пример плагина, который создает вкладку с надписью "привет мир" </description> Здесь задаем описание плагина, которое будет выводиться после его установки
<files>
<filename plugin="helloworld">helloworld.php</filename> <filename>index.html</filename> </files> Плагин содержит 2 файла в папке plug_helloworld (которые будут скопированы в components\com_comprofiler\plugin\user). Также тут мы присваиваем имя плагину -helloworld. Пожалуйста, запомните, что сам xml файл не включается в этот список, но программа установки его все равно скопирует.
<params>
<param name="hwPlugEnabled" type="radio" label="Надпись включена" default="1" description="Выберите да, чтобы показать надпись Привет мир"> <option value="0">Нет</option> <option value="1">Да</option> </param> </params> Далее, мы описываем параметры плагина. У нас всего лишь один параметр, который представляет собой поле выбора из двух значений. В результате выбора плагин будет включен или нет.
<tabs>
<tab name="Hello World" description="Это простейщий проект демонстрирующий структурный код плагина" class="gethelloworldTab" fields="0" position="cb_tabmain" displaytype="tab"> <params> <param name="hwTabMessage" type="text" label="Текст во вкладке" default="Добро пожаловать в русскую дружину CommunityBuilder" description="Надпись во вкладке" /> </params> <fields> </fields> </tab> </tabs> Тут создаем вкладку, которая будет управляться через класс gethelloworldTab (этот обьект будет обьявлен в файле helloworld.php). Эта вкладка содержит всего один параметр - какой текст выводить во вкладке.
<install>
<queries> </queries> </install> <uninstall> </uninstall> </cbinstall>
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); Как и во всех php-файлах Joomla, здесь проверяется, что файл helloworld.php не вызывается напрямую, а через Joomla.
class gethelloworldTab extends cbTabHandler {
Теперь плагин будет взаимодействовать с ядром CommunityBuilder через объекты, и главный объект основан на классе cbTabHandler. Таким образом, следующее, что делает php-файл - это создает новый класс getHelloWorldTab для нашей вкладки, который является расширенным объектом cbTabHandler.
function gethelloworldTab() {
$this->cbTabHandler(); } Функция getDisplayTab - это главная функция, которую выполняет CommunityBuilder, чтобы показать нашу вкладку. В начале этой функции мы видим, что во-первых, мы должны получить все входные параметры вкладки.
function getDisplayTab($tab,$user,$ui) {
$return = null; $params = $this->params; Обратите далее, что мы получаем 2 параметра с помошью функции $params->get() по имени параметров, описанных в xml файле. Т.е. первый параметр функции - это имя параметра из xml-файла, а второй - это значение по-умолчанию (которое обычно совпадает с описанным по-умолчанию в xml).
$is_helloworld_plug_enabled = $params->get('hwPlugEnabled', "1");
$helloworld_tab_message = $params->get('hwTabMessage', "Hello Joomlapolitans!"); Как только параметры получены, мы уже можем вывести их в содержании вкладки. В конце, весь html-код владки содержится в переменной $return, которую мы и выводим на экран.
if ($is_helloworld_plug_enabled != "0") {
if($tab->description != null) { $return .= "\t\t<div class=\"tab_Description\">" . $tab->description . "</div>\n"; } $return .= "\t\t<div>\n" . "<p>" . htmlspecialchars($helloworld_tab_message) . "</p>" . "</div>\n"; } return $return; } } ?>
Заметьте, что желательно обьявить div с классом "описание", чтобы вкладку можно было настроить через css-стили. |
| < Пред. | След. > |
|---|











