Автоматическое заполнение поля title при создании раздела/объекта каталога — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально 18 85081''' Для того чтобы при создании раздела/объекта каталога автоматически за…»)
 
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
'''Актуально 18 85081'''
+
'''Актуально для версии 18.'''
  
Для того чтобы при создании раздела/объекта каталога автоматически заполнялось поле title можно написать обработчик событий.
+
Для того, чтобы при создании раздела/объекта каталога автоматически заполнялось поле title, можно написать обработчик событий.
  
 
Для этого создадим файл '''custom_events.php''' в папке /classes/components/catalog/
 
Для этого создадим файл '''custom_events.php''' в папке /classes/components/catalog/
Строка 20: Строка 20:
 
public function onCreateCatalogObject(iUmiEventPoint $event) {
 
public function onCreateCatalogObject(iUmiEventPoint $event) {
 
if ($event->getMode() != 'after') {
 
if ($event->getMode() != 'after') {
          return;
+
            return;
 
         }
 
         }
 
 
Строка 26: Строка 26:
 
 
 
if (!$this->module->isCatalogObject($page)) {
 
if (!$this->module->isCatalogObject($page)) {
return false;
+
    return false;
 
}
 
}
  
Строка 34: Строка 34:
 
         $data = getRequest('data');
 
         $data = getRequest('data');
 
$name = $data['new']['h1'];
 
$name = $data['new']['h1'];
 +
        $title = $catalogObject->getValue('title');
  
if ($catalogObject->getValue('title') == '') {
+
if (empty($title)) {
$catalogObject->setValue('title', $name);
+
    $catalogObject->setValue('title', $name);
 
}
 
}
 
}
 
}
Строка 45: Строка 46:
 
   
 
   
  
[[category:Модуль Каталог]][[Категория:Написание кастомных макросов]]
+
[[category:Модуль Каталог]][[category:Написание кастомных макросов]]

Текущая версия на 10:51, 7 августа 2018

Актуально для версии 18.

Для того, чтобы при создании раздела/объекта каталога автоматически заполнялось поле title, можно написать обработчик событий.

Для этого создадим файл custom_events.php в папке /classes/components/catalog/

и добавим в него следующий код:

<?php

    new umiEventListener("systemCreateElement", "catalog", "onCreateCatalogObject");

Теперь добавим код обработчика в файл /public_html/classes/components/catalog/customAdmin.php (после строки public $module;)

public function onCreateCatalogObject(iUmiEventPoint $event) {
	if ($event->getMode() != 'after') {
             return;
        }
				
	$page = $event->getRef('element');
				
	if (!$this->module->isCatalogObject($page)) {
	    return false;
	}

	$umiHierarchy = umiHierarchy::getInstance();
	$catalogObject = $umiHierarchy->getElement($page->getId(), true, true);

        $data = getRequest('data');
	$name = $data['new']['h1'];
        $title = $catalogObject->getValue('title');

	if (empty($title)) {
	    $catalogObject->setValue('title', $name);
	}
}

Теперь при сохранении созданной страницы каталога, автоматически заполнится поле title.