В продолжение предыдущего поста. Только теперь делаем хук для добавления выбора пользователей сразу во все типы контента. Я вчера не обнаружил нужный хук, а сегодня его подсказал Fuze — спасибо!
Файлы ядра также не изменяются.
Если вы уже создавали хуки для отдельных типов контента из предыдущего поста, то их нужно удалить, чтобы не было по два одинаковых поля выбора пользователей. Если не делали, пропустите этот блок.
1. В файле манифеста удалите строки по шаблону:
2. Удалите все файлы вашего контроллера с именами типа \system\controllers\вашконтроллер\hooks\content_типконтента_form.php
Теперь делаем один общий хук.
1. Создаём свой контроллер, если у вас ещё нет своего подходящего. Если есть, то будем использовать его и этот шаг пропускаем.
Использовать стандартные контроллеры не стоит, так как при обновлении перезапишется манифест.
Читаем про "Контроллеры".
Придумываем вашему контроллеру уникальное имя латинскими буквами. Имя "вашконтроллер" приведено для примера и везде должно быть заменено именем вашего контроллера С УЧЁТОМ РЕГИСТРА!
В \system\controllers\ создаём папку с именем контроллера: \system\controllers\вашконтроллер
А в ней фронтенд контроллера \system\controllers\вашконтроллер\frontend.php
2. Создаём манифест, чтобы сказать системе, какой хук вы будете перехватывать.
Читаем про "Обработку событий".
В \system\controllers\ создаём файл \system\controllers\вашконтроллер\manifest.php
Либо добавляем строку с "'content_item_form'," в существующий манифест вашего контроллера.
3. Создаём хук.
Сначала создаём папку \system\controllers\вашконтроллер\hooks\
А в ней — файл \system\controllers\вашконтроллер\hooks\content_item_form.php
Обратите внимание на заглавную первую букву имени контроллера в onВашконтроллерContentItemForm
Теперь при редактировании записей любого типа контента внизу появится поле "Пользователь" с выпадающим списком.
Файлы ядра также не изменяются.
Если вы уже создавали хуки для отдельных типов контента из предыдущего поста, то их нужно удалить, чтобы не было по два одинаковых поля выбора пользователей. Если не делали, пропустите этот блок.
1. В файле манифеста удалите строки по шаблону:
'content_типконтента_form',
Теперь делаем один общий хук.
1. Создаём свой контроллер, если у вас ещё нет своего подходящего. Если есть, то будем использовать его и этот шаг пропускаем.
Использовать стандартные контроллеры не стоит, так как при обновлении перезапишется манифест.
Читаем про "Контроллеры".
Придумываем вашему контроллеру уникальное имя латинскими буквами. Имя "вашконтроллер" приведено для примера и везде должно быть заменено именем вашего контроллера С УЧЁТОМ РЕГИСТРА!
В \system\controllers\ создаём папку с именем контроллера: \system\controllers\вашконтроллер
А в ней фронтенд контроллера \system\controllers\вашконтроллер\frontend.php
<?php class вашконтроллер extends cmsFrontend { }
Читаем про "Обработку событий".
В \system\controllers\ создаём файл \system\controllers\вашконтроллер\manifest.php
Либо добавляем строку с "'content_item_form'," в существующий манифест вашего контроллера.
3. Создаём хук.
Сначала создаём папку \system\controllers\вашконтроллер\hooks\
А в ней — файл \system\controllers\вашконтроллер\hooks\content_item_form.php
<?php class onВашконтроллерContentItemForm extends cmsAction { public function run($form){ if (cmsUser::isAdmin()) { $fs = $form->addFieldset(); $form->addField($fs, 'title' => LANG_USER, 'default' => 1, ), 'generator' => function($item) { $authors = cmsCore::getModel('users')->getUsers(); if($authors) { foreach ($authors as $author) { $items[$author['id']] = $author['nickname'] . ' (' . $author['email'] . ')'; } } } )) ); } return $form; } }
Теперь при редактировании записей любого типа контента внизу появится поле "Пользователь" с выпадающим списком.
Реклама #
Pro AV 7 лет назад #
Если в "manifest.php" есть строчка
'content_item_form', // форма для всех типов контента
То вместо формы просто белый экран, отладка выдаёт вот это :
Parse error: syntax error, unexpected end of file, expecting function (T_FUNCTION) in /home/#####/site.ru/system/controllers/name_controller/hooks/content_item_form.php on line 36
Олег Васильевич я 7 лет назад #
Pro AV 7 лет назад #
WebMan 7 лет назад #
Проверьте наличие всех фигурных скобок в файле /home/#####/site.ru/system/controllers/name_controller/hooks/content_item_form.php и вообще правильность копирования кода в него.
Pro AV 7 лет назад #
WebMan 7 лет назад #
Приведите полное содержимое Вашего файла /home/#####/site.ru/system/controllers/name_controller/hooks/content_item_form.php, только спрячьте его под спойлер.
Pro AV 7 лет назад #
предлагаю придать название полю, и всё таки сделать что то с лимитом 1000.
WebMan 7 лет назад #
Лимит 1000 для меня сейчас пока не актуален. Как вариант, могу предложить создать новую группу только с теми пользователями, которые должны быть в списке, а потом фильтровать в список только эту группу.
Заменить строку
Clear 7 лет назад #
WebMan 7 лет назад #
WebMan 7 лет назад #
При подстановке другого пользователя (не себя) не меняется время последнего визита для этого пользователя. Поэтому может получиться, что "автор" был месяц назад, а статью разместил только что.
Решается заходом под именем этого пользователя (например, через "Реавторизатор" или подобный виджет) или дописыванием ещё пары хуков "content_after_add" и 'content_after_update', в которых можно обновлять время последнего визита "автора". Мне они не нужны. Если вам нужны, сделайте сами по этому примеру.
Clear 7 лет назад #
WebMan 7 лет назад #
nmsk 6 лет назад #
Loadырь 6 лет назад #