Автоматическое формирование даты при создании страницы на примере работы с каталогом.
Материал из Umicms
Версия от 21:47, 31 октября 2013; Williwaw (обсуждение | вклад) (Новая страница: «'''Актуально для версии 2.9.1''' == Задача == Предположим, в Каталог периодически добавляются т…»)
Актуально для версии 2.9.1
Задача
Предположим, в Каталог периодически добавляются товары, и для учета, необходимо, чтобы при создании каждого объекта у него сразу выставлялась текущая дата.
Решение
Создадим для в модуле "Шаблоны данных" для типа "Объект каталога" поле "дата поступления" с идентификатором data_postupleniya
Разместим кастомный макрос, перехватывающий событие создания страницы, в директорию ~/classes/modules/catalog/
__custom_adm.php:
<?php
abstract class __custom_adm_catalog {
public function onCreateObj(iUmiEventPoint $event)
{if( $event->getMode()==="after")
{$obj=$event->getRef("element");
$time=time();
$obj->setValue('data_postupleniya',$time);
$obj->commit();
return true;}
}
};
?>
custom_events.php:
<?php
new umiEventListener('systemCreateElement', 'catalog', 'onCreateObj');
?>
permissions.custom.php:
<?php
$permissions = array(
'tree' => array('onCreateObj'),
'view' => array('onCreateObj')
);
?>
Теперь для каждого нового созданного объекта каталога в специальное поле будет записываться текущая дата.