ресурсы-управление ресурсами-плагины-новый плагин
"Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."
Не используйте Revo для "просто сайтов". Используйте Evo
Who can defeat
the Russian bear?
А дальше по примеру любого плагина, проверяешь какое событие произошло (хороший стиль) и если твое, то делаешь свои грязные дела. Ну и не забудь нужную тебе галочку поставить на вкладке «системные события».
Вот, на всякий случай представляю Вам пример.
Добавление дочернего подраздела в свежедобавленный раздел
require_once($modx->config[’base_path’]."assets/libs/docapi/docmanager.class.inc.php");
require_once($modx->config[’base_path’]."assets/libs/mylib.php");
$e = &$modx->Event;
switch ($e->name)
{
case "OnDocFormSave":
$id=$params[’id’];
$doc=&$modx->getDocument($id,’*’);
$tvars=&$modx->getTemplateVarOutput(’*’,$id, 1);
$tpl=$doc[’template’];
// Все эти действия выполнять только для новых документов
if ($doc[’id’]==GetMaxContentId())
{
// Если вводим новый год , то добавляем 12 записей с месяцами
if ($tpl==10)
{
// Добавить 12 записей - месяцев
for ($ii=1;$ii<13;$ii++)
{
$strm=$ii;
if ($ii<10)
$strm=’0’.$strm;
$dd=new Document();
$dd->Set(’parent’,$doc[’id’]);
$dd->Set(’template’,11);
$dd->Set(’alias’,$strm);
$dd->Set(’pagetitle’,$strm);
$dd->Set(’type’,’document’);
$dd->Set(’hidemenu’,0);
$dd->Set(’menuindex’,$ii);
$dd->Save();
};
// Указать, что текущий документ - папка
$ddp=new Document($doc[’id’]);
$ddp->Set(’isfolder’,1);
$ddp->Save();
}
};
break;
default :
return; // stop here - this is very important.
break;
};
Данный пример добавляет для нового раздела типа "год" (код шаблона = 10) 12 подразделов типа "месяц" (код шаблона = 11)
Для работы с новыми документами используется класс известный класс Document
Выражение if ($doc[’id’]==GetMaxContentId()) определяет, является ли вводимая запись новой
Функция GetMaxContentId() написана мной и определяет ID последнего введенного раздела и
в данном случае описана в файле assets/libs/mylib.php
ее код:
// Получить максимальное значение числового поля в определенной таблице
function GetMaxFieldValue($tablename, $fieldname)
{
global $modx;
$strSQL=’select max(’.$fieldname.’) as max_value from ’.$tablename;
if ($result=$modx->dbQuery($strSQL))
{
while( $row = $modx->db->getRow( $result ))
{
return $row[’max_value’];
};
};
return 0;
};
// Получить максимальное значение в таблице содержимого
function GetMaxContentId()
{
return GetMaxFieldValue(’modx_site_content’,’id’);
};