CB Авторизация

Ваш логин в:

Меню пользователя
Скачать
Статьи на сайте
 
Как сделать плагин "Привет мир"
Написал Kotofeich   
24.08.2007

Самая популярная статья всех начинающих программистов. Как обычно, разбираем проект "Привет мир".

Многие пользователи задумываются над тем, как написать простейший плагин для CommunityBuilder. В качестве примера, я решил рассмотреть плагин "Привет мир" и на нем показать структуру кода CB. Исходник находится здесь: http://communitybuilder.ru/index.php?option=com_remository&Itemid=5&func=fileinfo&id=13

Данный урок - превосходное описание очень мощного интерфейса кода api CommunityBuilder. Предполагается, что вы неплохо знаете PHP и его использование в среде Joomla. Если вы только хотите начать заниматься программированием для Joomla, то я бы порекомендовал вам сначала попробовать писать модули для Joomla, потом перейти к плагинам CB и только затем заняться разработкой компонентов. Где-то посреди этого списка можно поизучать и мамботы.

Как и любое расширение Joomla, плагин CommunityBuilder также состоит как минимум из xml файла, php файла и почти пустого index.html файла. Все файлы должны быть помещены в одну папку и сжаты zip-архиватором. Если все сделано верно, то CommunityBuilder сможет установить этот архив через раздел плагины в админке.  Плагин CB может содержать дополнительные файлы различных типов, в зависимости от потребностей программиста. Например, плагин CB Gallery имеет множество php-файлов, html-файлов и картинок.

Рассмотрим плагин "Привет мир" более подробно. Это простейший плагин, который создает 1 вкладку для профиля и показывает в ней некоторую информацию.  Для того, чтобы хоть немного усложнить пример, мы добавили в него параметры вкладки, которые  вы можете настраивать в админке, и которые будут влиять на выводимый во вкладке текст. 

Архив plug_helloworld.zip содержит каталог plug_helloworld и в нем вложено 3 файла:

  • index.html (этот файл необходим в каждом каталоге. По-другому, он называется "держатель места" place-holder)
  • helloworld.xml ( это файл содержит информацию об установке, sql-запросы, описание вкладок, полей, параметров и т.д)
  • helloworld.php ( это главный файл кода, который содержит все применяемые классы вкладок и поддерживающие ими функции)

Фактически, файл 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>


Далее могут идти sql-запросы и файлы установки/удаления, но они нам не нужны.

CB API содержит множество особенностей, большинство которых не используются в простейших плагинах. Некоторые из них вы можете посмотреть в плагинах ProfileBook (гостевая книга) CB Gallery (галерея).

Если вы установили плагин, то у вас появится картинка приветствия:

q1.jpg











У вас появится сообщение с заголовком, написанным в строке <filename plugin="helloworld"> в xml файле и описание, написанное в тегах <description></description>. Нажмите "Продолжить", чтобы перейти в окно со списком плагинов.

q2.jpg

Все, только что установленные плагины по умолчанию не опубликованы (красный X). Также, мы опять видим имя нашего плагины, заданное в строке <filename plugin="helloworld">

Далее, заходим в сам плагин и видим справа наш единственный параметр:

q3.jpg

















Можно видеть, что в параметре "Надпись включена" по-умолчанию  установлено "Да", так как мы ввели default="1" в строке параметра плагина в xml-файле. Также, справа от параметра, есть синяя подсказка, при наведении на которую всплывает то, что мы написали в параметре description.

Думаете на этом действия xml файла закончились? Нет! Также мы указали установщику CommunityBuilder, что нужно создать вкладку с параметром. Перейдя в нашу вкладк,у мы увидим, что у нас получилось:

q5.jpg





















Тут получилось аналогично тому, как мы создали параметр для настройки плагина.

На этом, xml-файл закончен. Теперь перейдем в основному php-коду.
Когда плагин опубликован и на экране выводится профиль пользователя, то CB знает, что должен использовать класс getHelloWorldTab (обьявленный в xml-файле), который будет выполнять все действия по выводу нашей вкладки. Сам класс описан в файле cb.helloworld.php, рассмотрим его подробнее.

<?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.
Для нашей цели, мы добавляем в наш класс две функции: одна - это конструкто gethelloworldTab() и другая - getDisplayTab() это функция для вывода вкладки на экран.

 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-стили.

Конечно, можно было бы написать еще много возможностей и различных функции CommunityBuilder по созданию плагинов, но цель этой маленькой статьи не в этом. Для получения более глубоких знаний, читайте раздел Api CommunityBuilder. Так же есть много готовых плагинов, на основе которых можно учиться и учиться.   

Теперь, если вы опубликуете вкладку и плагин, то в профиле увидете такую вкладку:

q6.jpg








Добро пожаловать, в чудесный мир разработок плагинов CB! Я могу продолжить серию этих статей, так что жду откликов на форуме.

Обсудить статью на форуме
 
< Пред.   След. >

 

© 2011 Русский сайт поддержки Community Builder
Все права принадлежат Sunshine studio, LLC
Партнерки
Модуль SunBlog
CB поиск пользователя

CB Online

Посетителей нет.
CB статистика
5039 зарегестрировано
0 сегодня
0 за неделю
0 за месяц
Последние: Denis85

Дружина
хостится тут

и отзывы о хостинге для Joomla от дружинников