Наследование свойств от родительского элемента

Материал из Umicms
Версия от 14:49, 27 мая 2019; Alelekov (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Актуально для версии 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 он будет работать для всех пользователей, которые имеют доступ к панели администрирования.