Где находится файл которой формирует этот список сайт / users
Сработает.такая строчка $ Model-> filterNotNull ( 'avatar'); сработает?
Сделайте хук profiles_list_filter и в нем эту строчку используйте. Тогда не придется каждый раз при обновлении править код.
Он не находится, а создается заново.Укажите где тот файл находится?
Напишите мне в личку, расскажу как создать хук.
-----------------------------------------------------------------------------
Как выяснилось, многим нужно это "тайное знание".
Расскажу прямо здесь, на примере скрытия юзеров без аватар.
Итак: Создаем мини-компонент с произвольным, но человекопонятным именем. Допустим usersfilter.
Создаем папку usersfilter в папке /system/controllers/. В ней создаем два файла fronend.php, manifest.php и папку hooks.
Файл frontend.php нужен только для того, чтобы движок сайта увидел наш хук. Никакой логики в нем нет:
<?php class usersfilter extends cmsFrontend { }
В папке hooks создаем собственно сам хук. Файл profiles_list_filter.php
Чтобы создать файл хука, нам нужно понять, что отправляется в хук и что оттуда, соответственно, должно прилететь. Смотрим строку 246 в файле \system\controllers\users\frontend.php, откуда производится запрос хука.
Пишем сам хук:
<?php class onUsersfilterProfilesListFilter extends cmsAction { public function run($data){ // Распаковываем входящий массив // Добавляем нужный фильтр в модель $model->filterNotNull('avatar'); // Отправляем данные обратно в компонент users } }
onИмякомпонентаИмяХукаВкемелстайле
Если неправильно напишете — ничего страшного. При включенной отладке, система потребует правильное имя компонента. Его можно скопировать и вставить в имя класса.
Fatal error: Uncaught Error: Class 'onUsersfilterProfilesListFilter' not found in...
После всех этих действий нужно пройти в Панель управления — Компоненты — Управление событиями и увидеть, что доступно новое событие profiles_list_filter. Жмем "Обновить события в базе данных".
После этого идем в просмотр юзеров и видим, что видны только юзеры с аватарами.
Немного не понял как название класса class onUsersfilterProfilesListFilter формируется. ProfilesListFilter взято с hook ( 'profiles_list_filter ?
Хочу сам сделать хук, которой удалять по крону (раз в день) людей которые, удалили свою страницу.
КАК мне найти куда его вставлять?
Далее добавлю массив в manifest.php 'hooks' => array ( 'название хука')
В папке hooks создаст файл назва_хука.php В нем Распаковываем $ model-> filterEqual ('?',?);
Удаляем (не знаю как).
Я не понял что в $ fields?
В любую папку hooks любого компонента. Лучше в наш, новосозданный компонент.Хочу сам сделать хук, которой удалять по крону (раз в день) людей которые, удалили свою страницу.
КАК мне найти куда его вставлять?
Имя хука должно начинаться с cron, например cron_usersdelete.
<?php class onUsersfilterUsersdelete extends cmsAction { public function run(){ // Получаем всех пользователей $users = $this->model_users->getUsers(); // Перебираем массив пользователей foreach($users as $user){ // Если профайл удален - удаляем юзера if ($user['is_deleted'] == 1){ $this->model_users->deleteUser($user); } } } }
В случае с хуком, который срабатывает по хрону в манифест ничего добавлять не надо.Далее добавлю массив в manifest.php 'hooks' => array ( 'название хука')
Теперь нужно пройти в Панель управления — Настройки — Планировщик и там создать новое задание.
Компонент указать usersfilter хук usersdelete. Назначить период срабатывания 1440 минут например (сутки).