Интегрируйте ваши расширения в 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
.
События записи:
События комментария:
События поля: