Наследование свойств от родительского элемента — различия между версиями
Davidov (обсуждение | вклад) (Новая страница: «При наполнении сайта, может возникнуть необходимость в автоматическом наследовании свой…») |
Alelekov (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | При | + | '''Актуально для версии 20''' |
− | Для начала, напишем вызов обработчика по событию создания элемента в файле ~/classes/ | + | |
+ | == Задача == | ||
+ | При создании страниц сайта автоматически наследовать какие-либо свойства родительской страницы. | ||
+ | == Решение == | ||
+ | |||
+ | Для реализации наследования свойств родительского элемента напишем кастомный обработчик события, который будет наследовать свойство "Исключить из поиска". | ||
+ | Для начала, напишем вызов обработчика по событию создания элемента в файле '''~/classes/components/content/custom_events.php''' | ||
<source lang="php"> | <source lang="php"> | ||
<?php | <?php | ||
Строка 6: | Строка 12: | ||
?> | ?> | ||
</source> | </source> | ||
− | А вот и сам код обработчика, который нужно поместить в файл ~/classes/ | + | А вот и сам код обработчика, который нужно поместить в файл ~/classes/components/content/customAdmin.php <source lang="php"> |
− | <source lang="php"> | + | public function inheritance_properties(iUmiEventPoint $oEventPoint) { |
− | + | if ($oEventPoint->getMode() != "after"){ | |
− | + | return; | |
− | + | } | |
− | + | ||
− | + | $object = $oEventPoint->getRef("element"); | |
− | + | ||
− | + | $id = $object->id; | |
− | + | $parentId = $object->getParentId(); | |
− | + | ||
− | + | $hierarchy = umiHierarchy::getInstance(); | |
− | + | $parent=$hierarchy->getElement($parentId); | |
− | + | $object=$hierarchy->getElement($id); | |
− | + | ||
− | + | $value=$parent->getValue('is_unindexed'); | |
− | + | ||
− | + | $object->setValue('is_unindexed',$value); | |
+ | $object->commit(); | ||
+ | return true; | ||
+ | } | ||
</source> | </source> | ||
− | + | ||
− | После занесения записи об этом методе в файл ~/classes/ | + | Здесь is_unindexed - идентификатор поля "Исключить из поиска". |
+ | После занесения записи об этом методе в файл '''~/classes/components/content/permissions.custom.php''' он будет работать для всех пользователей, которые имеют доступ к панели администрирования. | ||
+ | |||
[[Категория: API]] | [[Категория: API]] |
Текущая версия на 14:49, 27 мая 2019
Актуально для версии 20
Задача
При создании страниц сайта автоматически наследовать какие-либо свойства родительской страницы.
Решение
Для реализации наследования свойств родительского элемента напишем кастомный обработчик события, который будет наследовать свойство "Исключить из поиска". Для начала, напишем вызов обработчика по событию создания элемента в файле ~/classes/components/content/custom_events.php
<?php
new umiEventListener('systemCreateElement', 'content', 'inheritance_properties');
?>
А вот и сам код обработчика, который нужно поместить в файл ~/classes/components/content/customAdmin.php
public function inheritance_properties(iUmiEventPoint $oEventPoint) {
if ($oEventPoint->getMode() != "after"){
return;
}
$object = $oEventPoint->getRef("element");
$id = $object->id;
$parentId = $object->getParentId();
$hierarchy = umiHierarchy::getInstance();
$parent=$hierarchy->getElement($parentId);
$object=$hierarchy->getElement($id);
$value=$parent->getValue('is_unindexed');
$object->setValue('is_unindexed',$value);
$object->commit();
return true;
}
Здесь is_unindexed - идентификатор поля "Исключить из поиска". После занесения записи об этом методе в файл ~/classes/components/content/permissions.custom.php он будет работать для всех пользователей, которые имеют доступ к панели администрирования.