[КОСТЫЛИ] Динамическая смена шаблона в Tickets
Приветствую, у меня есть два раздела с тикетами, в каждом из которых свой шаблон должен быть у тикета. Соответственно написал вот такой вызов формы
В $field есть template с нужным значением, и в resource/update на 215 строке в $scriptProperties['template'], но всё равно шаблон не меняется.
Ладно подумал я, напишу плагин на событие OnBeforeDocFormSave
{'!TicketForm' | snippet: [
'allowedFields' => 'parent,pagetitle,content,longtitle,conf_logo,startdate,enddate,template,place',
'requiredFields' => 'parent,pagetitle,content,longtitle,conf_logo,place,startdate,enddate,template',
'validate'=>'
longtitle:required:maxLength=^100^,
place:required:maxLength=^300^,
conf_logo:required,
startdate:required,
enddate:required,
content:required:minLength=^120^',
'conf_logo.vTextRequired' => 'Выберите логотип',
'longtitle.vTextRequired' => 'Вы не указали название',
'place.vTextRequired' => 'Вы не указали место проведения',
'content.vTextRequired' => 'Нельзя оставлять это поле пустым',
'enddate.vTextRequired' => 'Укажите дату окончания мероприятия',
'startdate.vTextRequired' => 'Укажите дату начала мероприятия',
'tplFormCreate'=>'@FILE chunks/forms/createConfForm.html',
'tplFiles' => '@FILE chunks/forms/ticketFileForm.html',
'tplImage' => '@FILE chunks/tickets/imgPreview.html',
'redirectUnpublished' => 27,
'tid' => ($.get['ticket'] ?: 0)
]}
Добавил поле template в саму форму, НО шаблон всё равно берется из настройки tickets.default_template. Я полез в core/components/tickets/model/tickets/tickets.class.php там примерно на 322 строке вот это$response = $this->modx->runProcessor('resource/update', $fields);
В $field есть template с нужным значением, и в resource/update на 215 строке в $scriptProperties['template'], но всё равно шаблон не меняется.
Ладно подумал я, напишу плагин на событие OnBeforeDocFormSave
<?php
switch ($modx->event->name) {
case 'OnBeforeDocFormSave':
//$modx->log(1, print_r($_POST,1));
if($_POST['template']){
$resource->set('template', $_POST['template']);
}
break;
}
шаблон меняется, но ТВшки не устанавливаются. Ладно, подумал я снова попробую так<?php
switch ($modx->event->name) {
case 'OnDocFormSave':
if($resource->get('template') == 9 && $_POST['conf_logo']){
foreach($_POST as $k => $v){
$resource->setTVvalue($k, $v);
}
}
И получилось, но как по мне это немного костыль. Может быть кто-то знает более правильный способ сделать тоже самое?
Поблагодарить автора
Отправить деньги