Я так понимаю это проблема самого Instant и никто кроме Fuze, нам не поможет?
Как установить по умолчанию срок публикации записи
без возможности изменения пользователем
- Предыдущая
- 1
- 2
- Показаны 16-22 из 22
1. В папке system/controllers создать папку datepubend, в ней создать папку hooks и файл frontend.php с таким содержимым:
<?php class datepubend extends cmsFrontend{ }
2. В папке hooks создать файл content_after_add_approve.php с таким содержимым:
<?php class onDatepubendContentAfterAddApprove extends cmsAction { public function run($data){ $ctypes_names = ['board', 'news']; // перечисляем типы контента $model = cmsCore::getModel('content'); $table_name = 'con_'.$data['ctype_name']; $days = 45; // количество дней $model->update($table_name, $data['item']['id'], ['date_pub_end' => $date_pub_end]); return $data; } }
3. Панель управления -> Компоненты -> Управление событиями — обновить события.
4. Стилями скрыть поле выбора количества дней в форме.
4. Стилями скрыть поле выбора количества дней в форме.
Лучше добавить второй хук на форму добавления/редактирования записи и удалить поле совсем, чтобы «кул хацкеры» не вносили правки в исходный код на странице при редактировании.
Не знаю, сработает ли удаление записей, если вообще отключить управление сроком публикации. Если сработает, то всё ещё проще.
1. В папке system/controllers создать папку datepubend, в ней создать папку hooks и файл frontend.php с таким содержимым:
<?php class datepubend extends cmsFrontend{ }2. В папке hooks создать файл content_after_add_approve.php с таким содержимым:
<?php class onDatepubendContentAfterAddApprove extends cmsAction { public function run($data){ $ctypes_names = ['board', 'news']; // перечисляем типы контента $model = cmsCore::getModel('content'); $table_name = 'con_'.$data['ctype_name']; $days = 45; // количество дней $model->update($table_name, $data['item']['id'], ['date_pub_end' => $date_pub_end]); return $data; } }3. Панель управления -> Компоненты -> Управление событиями — обновить события.
4. Стилями скрыть поле выбора количества дней в форме.
Спасибо, хук работает)) Но есть одно «НО», и одна просьба))
«НО» заключается в том что нужно обязательно включить в ТК «Управление сроком публикации», без этого хук на удаление записи не срабатывает и запись не удаляется))
Во вкладке «Доступ» в ТК, можно отключить доступ к «Выбор срока окончания публикации», тогда этого поля у пользователей не будет, а у админа будет поэтому все нормально.
А что касательно просьбы, было бы отлично чтобы «Максимальный срок публикации дней» брался из вкладки «Доступ» для каждой группы свой. Это все находится в таблице cms_perms_users. ID правила всегда одинаковый 26, тип ТК у нас указан, ID группы есть, ну и значение для переменной тоже есть, осталось это все в хук добавить)) Сможете реализовать?) Но я думаю что это все равно на уровне бага, ведь максимальный срок публикации указан для каждой группы, мы им запрещаем самим выбирать и изменять этот срок, соответственно все должно работать нормально, но оно не работает.
реализовать
Попробуйте (не проверял, писал наугад):
<?php class onDatepubendContentAfterAddApprove extends cmsAction { public function run($data){ $model = cmsCore::getModel('content'); $perms = $model->filterEqual('rule_id', 26)->filterEqual('subject', $data['ctype_name'])->filterIn('group_id', $this->cms_user->groups)->get('perms_users'); if (!$perms) { return $data; } $days_arr = []; foreach ($perms as $perm) { $days_arr[] = $perm['value']; } if ($days == 0) { return $data; } $data['date_pub_end'] = $date_pub_end; $model->update('con_'.$data['ctype_name'], $data['item']['id'], ['date_pub_end' => $date_pub_end]); return $data; } }
реализовать
Попробуйте (не проверял, писал наугад):
<?php class onDatepubendContentAfterAddApprove extends cmsAction { public function run($data){ $model = cmsCore::getModel('content'); $perms = $model->filterEqual('rule_id', 26)->filterEqual('subject', $data['ctype_name'])->filterIn('group_id', $this->cms_user->groups)->get('perms_users'); if (!$perms) { return $data; } $days_arr = []; foreach ($perms as $perm) { $days_arr[] = $perm['value']; } if ($days == 0) { return $data; } $data['date_pub_end'] = $date_pub_end; $model->update('con_'.$data['ctype_name'], $data['item']['id'], ['date_pub_end' => $date_pub_end]); return $data; } }
Вооот теперь как надо, все работает)) Спасибо огромное))
- Предыдущая
- 1
- 2
- Показаны 16-22 из 22