Добавление полей для ввода пользователем в модуле FAQ — различия между версиями
Материал из Umicms
Mad grant (обсуждение | вклад) |
Vitaliks (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
− | '''Актуально для версии | + | '''Актуально для версии 20''' |
В системе UMI.CMS для модуля FAQ предусмотрен ввод пользователем вопроса, ника, адреса его электронной почты и темы. Если требуется ввод дополнительных данных (возраст, профессия и т.д.) добавить поле в тип данных "Вопрос в FAQ" и создать одноимённое поле в форме недостаточно. | В системе UMI.CMS для модуля FAQ предусмотрен ввод пользователем вопроса, ника, адреса его электронной почты и темы. Если требуется ввод дополнительных данных (возраст, профессия и т.д.) добавить поле в тип данных "Вопрос в FAQ" и создать одноимённое поле в форме недостаточно. | ||
− | Для того чтобы заполнить произвольное поле для вопроса в 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(' | + | $string = getRequest('new_pole'); |
$hierarchy = umiHierarchy::getInstance(); | $hierarchy = umiHierarchy::getInstance(); | ||
$faq = $hierarchy->getElement($questionId); | $faq = $hierarchy->getElement($questionId); | ||
− | $faq->setValue(' | + | $faq->setValue('new_pole', $string); |
$faq->commit(); | $faq->commit(); | ||
} | } | ||
} | } | ||
</source> | </source> | ||
− | где | + | где 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:01, 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');