Интегрируйте ваши расширения в Cobalt через систему событий.
Вы должны создать плагин Joomla в группе mint.
Пример XML файла
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.0" type="plugin" group="mint" method="upgrade">
<name>Cobalt - Plugin - My Plugin</name>
<author>Author</author>
<creationDate>February 17 2009</creationDate>
<copyright>Author</copyright>
<license>GNU/GPL http://www.gnu.org/copyleft/gpl.html</license>
<authorEmail>email@domain.com</authorEmail>
<authorUrl>http://www.site.com</authorUrl>
<version>8.0</version>
<description>
<![CDATA[ This is description]]>
</description>
<files>
<filename plugin="myplugin">myplugin.php</filename>
</files>
</extension>
Параметр <version> должен начинаться с 8.* для Cobalt 8 и с 7.* для Cobalt 7.
Плагин создается как обычный плагин Joomla.
Пример php файла
<?php
defined('_JEXEC') or die('Restricted access');
require_once JPATH_ROOT . '/components/com_cobalt/api.php';
class plgMintPluginname extends JPlugin
{
}
Событие onAfterArticleSaved (после сохранения статьи) возникает после удачного сохранения статьи.
Пример
<?php
defined('_JEXEC') or die('Restricted access');
require_once JPATH_ROOT . '/components/com_cobalt/api.php';
class plgMintPluginname extends JPlugin
{
public function onAfterArticleSaved($isnew, $record, $fields, $section, $type)
{
if($isnew)
{
// Expire in 30 days
$record->extime = date('Y-m-d h:i:s', time() + (86400 * 30));
$record->store();
}
foreach($fields AS $field)
{
if($field->type == 'myfield')
{
$value = $field->value;
}
}
}
}
$isnew - boolean - если это новая статья или Вы редактируете статью.$record - JTable - объект JTable.$fields - array - массив объектов полей. Если у Вас есть собственное поле, Вы можете вызвать специальный метод поля.$section - object - объект, содержащий параметры раздела. Включает в себя параметр $section->params, в котором Вы можете получить все параметры раздела.$type - object - объект, содержащий параметры типа контента. Включает в себя параметр $type->params, в котором Вы можете получить все параметры типа контента.Событие onActivity возникает при каждом действии в Cobalt.
Пример
<?php
defined('_JEXEC') or die('Restricted access');
require_once JPATH_ROOT . '/components/com_cobalt/api.php';
class plgMintPluginname extends JPlugin
{
public function onActivity($actor, $target, $options, $record)
{
if($options['type'] == CEventsHelper::_RECORD_NEW)
{
// do actions...
}
}
}
$actor - int - пользователь, производящий действие.$target - int - пользователь, над чьим объектом производится действие.$options - array - опции события. С помощью этого параметра Вы можете узнать, какой тип события произошел. Смотрите таблицу ниже.$record - объект статьи. Содержит статью, к которой относится это событие.Например, кто-то проголосовал за статью. Тот, кто проголосовал есть $actor, автор статьи есть $target, а сама статья есть $record.
Список параметров $options. Например $options['type'].
| Параметр | Описание |
|---|---|
type |
Тип события. Список всех типов событий приведен ниже. |
record_id |
Id статьи |
section_id |
Id раздела |
cat_id |
Id категории |
comment_id |
Id комментария если событие связано с комментарием и type будет CEventsHelper::_COMMENT_* |
field_id |
Id поля если событие связано с полем и type будет CEventsHelper::_FIELD_* |
new_vote |
Число от 0 до 100 если событие связано с голосованием и type будет CEventsHelper::_RECORD_RATED |
status |
Новый статус события будет CEventsHelper::_FIELDS_STATUS_CHANGED |
Список типов событий параметра type.
События записи:
События комментария:
События поля: