Добавление полей для ввода пользователем в модуле FAQ — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Актуализация статьи)
Строка 1: Строка 1:
'''Актуально для версии 2.9'''
+
'''Актуально для версии 20'''
  
 
В системе UMI.CMS для модуля FAQ предусмотрен ввод пользователем вопроса, ника, адреса его электронной почты и темы. Если требуется ввод дополнительных данных (возраст, профессия и т.д.) добавить поле в тип данных "Вопрос в FAQ" и создать одноимённое поле в форме недостаточно.
 
В системе UMI.CMS для модуля FAQ предусмотрен ввод пользователем вопроса, ника, адреса его электронной почты и темы. Если требуется ввод дополнительных данных (возраст, профессия и т.д.) добавить поле в тип данных "Вопрос в FAQ" и создать одноимённое поле в форме недостаточно.
Для того чтобы заполнить произвольное поле для вопроса в FAQ, нужно создать кастомный метод в файле _custom.php модуля "FAQ".
+
Для того чтобы заполнить произвольное поле для вопроса в FAQ, нужно создать кастомный метод в файле customMacros.php модуля "FAQ".
 
Содержимое метода должно быть примерно следующее:
 
Содержимое метода должно быть примерно следующее:
 
<source lang="php">
 
<source lang="php">
 
public function onQuestionPostDopPolja(iUmiEventPoint $event) {
 
public function onQuestionPostDopPolja(iUmiEventPoint $event) {
         if($event->getMode() == 'after') {
+
         if ($event->getMode() == 'after') {
 
             $questionId = $event->getParam('element_id');
 
             $questionId = $event->getParam('element_id');
             $string=getRequest('p');
+
             $string = getRequest('new_pole');
 
             $hierarchy = umiHierarchy::getInstance();
 
             $hierarchy = umiHierarchy::getInstance();
 
             $faq = $hierarchy->getElement($questionId);
 
             $faq = $hierarchy->getElement($questionId);
             $faq->setValue('pole',$string);
+
             $faq->setValue('new_pole',$string);
 
             $faq->commit();
 
             $faq->commit();
 
         }
 
         }
 
}
 
}
 
</source>
 
</source>
где pole - идентификатор поля, которое нужно записать.
+
где new_pole - идентификатор поля, которое нужно записать.
  
 
Этот метод должен запускаться обработчиком событий, который нужно поместить в файл custom_events.php
 
Этот метод должен запускаться обработчиком событий, который нужно поместить в файл custom_events.php
Строка 22: Строка 22:
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
new umiEventListener('faq_post_question', 'faq', 'onQuestionPostDopPolja');
+
new umiEventListener('faq_post_question', 'faq', 'onQuestionPostDopPolja');
?>
 
 
</source>
 
</source>
 
[[Категория:Написание кастомных макросов]][[Категория:Модуль FAQ]]
 
[[Категория:Написание кастомных макросов]][[Категория:Модуль FAQ]]

Версия 09:00, 31 октября 2019

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

В системе UMI.CMS для модуля FAQ предусмотрен ввод пользователем вопроса, ника, адреса его электронной почты и темы. Если требуется ввод дополнительных данных (возраст, профессия и т.д.) добавить поле в тип данных "Вопрос в FAQ" и создать одноимённое поле в форме недостаточно. Для того чтобы заполнить произвольное поле для вопроса в FAQ, нужно создать кастомный метод в файле customMacros.php модуля "FAQ". Содержимое метода должно быть примерно следующее:

public function onQuestionPostDopPolja(iUmiEventPoint $event) {
        if ($event->getMode() == 'after') {
            $questionId = $event->getParam('element_id');
            $string = getRequest('new_pole');
            $hierarchy = umiHierarchy::getInstance();
            $faq = $hierarchy->getElement($questionId);
            $faq->setValue('new_pole',$string);
            $faq->commit();
        }
}

где new_pole - идентификатор поля, которое нужно записать.

Этот метод должен запускаться обработчиком событий, который нужно поместить в файл custom_events.php обработчик должен иметь следующий вид:

<?php
	new umiEventListener('faq_post_question', 'faq', 'onQuestionPostDopPolja');