Итак, разрешим гостям публиковать материал.
Не буду заимствовать сторонние модули, а поправлю пару строчек (в двух файлах) чтобы гости смогли публиковаться.
Правки делались на "коленке" но работают.
Вся это делается для Instant Cms 2.
Открываем /system/controllers/content/actions/item_add.php и заменяем строчку номер 13 на
Тут же после страницы 213:
вставляем строчку:
и тут мы системе объясняем, что если мы работаем с контентом "pages" и пользователя определить не возможно то после опубликования переси нас на страницу "stranica.html", потому, что мы не авторизованный пользователь, и если перенести нас на опубликованную страницу то нам покажет "404" (если в настройках стоит премодерация).
Потом открываем файл: /system/controllers/content/model.php и заменяем строчку номер 1140 на:
где говорится, что если пользователя определить нельзя, то пусть это будет пользователь с id=13 которого мы заранее зарегистрировали в нужной группе с нужными правами.
и тут же стройку 1158
меняем на
Дальше, если не зарегистрированный пользователь захочет добавить контент "pages" то по ссылке /pages/add ему не будет показываться страница 404 а будет показываться полноценная страница, а после добавления будет перебрасывать на страницу /pages/stranica.html (это можно тут же поменять), которую надо создать и написать на ней например "Материал добавлен, и после проверки будет опубликован."
Тут две главных переменных, от кого публковать материал и в каком типе материала использовать.
Тестирова на стандартных типах контента — работает. Если что отпишитесь.
Думаю 3 правки это не страшно для работы.
Долго искал решение пришлось придумать самому.
Если кому помог вот контейнер для любых количеств спасибок: photostake.ru/shop/14.html
Не буду заимствовать сторонние модули, а поправлю пару строчек (в двух файлах) чтобы гости смогли публиковаться.
Правки делались на "коленке" но работают.
Вся это делается для Instant Cms 2.
Открываем /system/controllers/content/actions/item_add.php и заменяем строчку номер 13 на
if (!cmsUser::isAllowed($ctype_name, 'add') && $ctype_name != 'pages') { cmsCore::error404(); }
тем самым мы указываем что если в компоненте "pages" незарегистрированный пользователь захочет зайти на страницу добавления материала как незарегистрированный пользователь, то система ему не откажет и пропустит дальше незарегистрированного пользователя
Тут же после страницы 213:
if ($back_url){ $this->redirect($back_url); } else {
if ($ctype_name == 'pages' && !$user->id) { $ctype_name = 'pages'; $item['slug'] = 'stranica'; }
Потом открываем файл: /system/controllers/content/model.php и заменяем строчку номер 1140 на:
if ($user->id) { $item['user_id'] = $user->id; } else { $item['user_id'] = 13; }
и тут же стройку 1158
$folder_id = $this->addContentFolder($ctype['id'], $user->id, $item['new_folder']);
$folder_id = $this->addContentFolder($ctype['id'], $item['user_id'], $item['new_folder']);
Тут две главных переменных, от кого публковать материал и в каком типе материала использовать.
Тестирова на стандартных типах контента — работает. Если что отпишитесь.
Думаю 3 правки это не страшно для работы.
Долго искал решение пришлось придумать самому.
Если кому помог вот контейнер для любых количеств спасибок: photostake.ru/shop/14.html
Не проверял, должно работать. Нужно больше перечисляйте дальше через ||
Я создал пользователя с логином "Гость" и указал его id
Но только начал, буду дальше тестировать
Все правки делаем так как описал автор кроме:
Всё.
Ещё сильно не тестил, но вроде работает. Если у кого время будет потестить посмотрите пожалуйста у меня. Если увидите что что-то не так работаете напишите самому интересно.
Удалось ли кому то реализовать данную функцию для объявлений?
как видно на скрине, оно есть но, для модерации оно не открывается.
Как решить данную проблему?
Если по беспределу гостям руки развязывать, и разрешить еще и фото загружать, то правил файл - system/controllers/images/frontend.php, функция - actionUpload