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