
В ходе работ над одним проектом на Joomla, потребовалась функциональность, позволяющая добавлять ссылки на материал в разлимные социальные сети. В том числе - во "вконтакте". Поиск дал множество готовых подобных решений. К сожалению, нигде не видел такого, которе мне нужно. А именно чтобы наряду с facebook, twitter был еще и "вконтакте". Решение этого вопроса было получено в виде модуля для Joomla 1.5.
Как вообще организованы социальные закладкиСпособ добавления ссылки на вашу страницу/статью twitter, facebook и "вконтакте" по сути одинаков. В самом простом случае социальная закладка может буть реализована просто ссылкой на соответствующую страницу нужного сервиса, на которой и выполняются все действия социализации нашего контента. Более подробно об этом написано в соответствующих руководствах:
По сути дела требуется сделать немногое: сделать ссылку, в параметрах которой мы укажем что за материал мы хотим добавить в соц. сеть. Способ задания этих параметров описан в руководсвах.
Что надо знать о плагинах JoomlaОсновная статья о построении плагинов для Joomla находится по адресу:
http://docs.joomla.org/Creating_a_content_plugin.
В простейшем случае плагин состоит из одного php файла, в котором находится реализация класса самого плагина. Класс плагина должен быть унаследован от JPlugin. В нашем случае мы строим плагин для содержимого - т.е. вид статей и их "обвязка" на сайте будет меняться с нашей помощью. Для реализации этого нам нужно определить методы нашего класса:
onBeforeDisplayContent( &$article, &$params, $limitstart ) - метод, который
позволяет что-то добавить над текстом самой статьи.
onAfterDisplayContent( &$article, &$params, $limitstart ) - метод, который
вызывается для добавления нового после текста статьи.
Для настройки параметров плагина используется xml-файл. В этом файле хранится информация о плагине и спосок параметров с возможными значениями.
Проектирование плагинаМы будем строить плагин, который показывает кнопки социальных закладок для twitter, facebook и "вконтакте". При этом, нам потребуется возможность менять внешний вид каждой из кнопок в соответствии с тем, как предлагают сами источники - со счетчиком количества закладок или без, положение счетчика и т.д. Кроме того, было бы неплохо разделять где будет появляться нужный функционал - до текста, после него или одновременно. Для реализации всего этого нам потребуется список возможных настроек для каждой из кнопок. На основе этого списка будем строить xml файл настроек.
Кроме того, предусмотрим возможность использования простых кнопок, вместо тех, что предлагают нам разработчики - т.е. просто ссылки-картинки без счетчиков и без javascript.
Имена параметров и их расшифровку будем хранить в языковых ini-файлах. Сделаем их по крайней мере пару - для русской и английской версий.
Схема работы плагина такая: в админке настраиваются параметры плагина. На сайте для статей показывается строка с кнопками социальных закладок, оформленных в соответствии с настройками из админки.
Xml-файл настроек
В свете вышесказанного примерное содержание файла настроек будет похожим на следующий листинг:
< install version="1.5" type="plugin" group="content" method="upgrade">
< name>NAME_OF_PLUGIN
<creationdate>February 2011</creationdate>
<languages folder="language">
<language tag="en-GB">en-GB.plg_content_NAME_OF_PLUGIN.ini</language>
<language tag="ru-RU">ru-RU.plg_content_NAME_OF_PLUGIN.ini</language>
</languages>
<files>
</files>
<param type="list" default="1" label="GLOBALSTYLE" description="GLOBALSTYLEDESC">
<option value="0">BELOWCONTENT</option>
<option value="1">ABOVECONTENT</option>
<option value="2">BOTHCONTENT</option>
</param>
<param name="whereview" type="list" default="1" label="WHERETOSHOW" description="WHERETOSHOWDESC">
<option value="1">ALLVIEWS</option>
<option value="0">ONLYARTICLEVIEWS</option>
</param>
<params group="advanced">
< param name="cache" type="list" default="1" label="CACHING" description="PARAMENABLECACHE">
<option value="1">GLOBAL</option>
<option value="0">NOCACHING</option>
<param name="cache_time" type="text" default="900" label="CACHETIME" description="CACHETIME_DESC"/>
</params>
</install>
Сюда требуется добавить еще набор параметров для настройки каждой кнопки.
Реализация плагина
В данном случае, в силу того, что кнопки социальных закладок выглядят одинаково до и после статьи, имеет смысл организовать класс следующим образом:
defined( '_JEXEC' ) or die('Restricted access');
jimport( 'joomla.plugin.plugin' );
class plgContentNAME_OF_PLUGIN extends JPlugin {
function plgContentNAME_OF_PLUGIN( &$subject, $params )
{
// инициализация всяких параметров настройки
// если они есть, то их значения берем
}
private function createPluginHTML( &$article, &$params )
{
// построение html для социальных закладок
return $html;
}
function onBeforeDisplayContent( &$article, &$params, $limitstart ) {
return $this->createPluginHTML( $article, $params );
}
function onAfterDisplayContent( &$article, &$params, $limitstart ) {
return $this->createPluginHTML( $article, $params );
}
}
Здесь NAME_OF_PLUGIN есть название плагина, совпадающее с названием php файла плагина.
ЗаключениеРабочий плагин с полной возможностью настройки:
cyberdensocial.rar