Ris

Ris

+657
Репутация
3771
Рейтинг
#1 Глобальная замена слов 23 января 2020 в 23:20

Задача изначально была

@IamB
Задача изначально была помочь человеку, который не может объяснить, чего он хочет.
Но Вы справились! v
#2 Глобальная замена слов 23 января 2020 в 21:31

А дальше?

@IamB
А дальше переименование новостей в news закончено.
На самом деле все эти изменения производятся в настройках типов контента.
#3 Глобальная замена слов 23 января 2020 в 19:16
@IamB,
Да, выглядит страшно, но работает.
Но я бы лучше в админке переименовал тип контента…
#4 Глобальная замена слов 23 января 2020 в 16:21

Но не могу найти место в движке, где готовая страница отдаётся браузеру.

@IamB
Каждый из файлов шаблона отдает в браузер свой кусок html.
А располагает их по блокам на странице главный файл шаблона \templates\default\main.tpl.php
#5 Глобальная замена слов 23 января 2020 в 15:48
Поищите в паке /system/languages/ может там есть ваше слово.
#6 Глобальная замена слов 23 января 2020 в 14:43
vladimird,
Вы просите помочь, но не сообщаете практически никаких данных.
Помочь вам с таким подходом будет очень трудно.
Найдите таблицу с категориями вашего типа контента. Допустим, это статьи.
Тогда ищем, в каком столбце таблицы cms_articles_cats находятся ваши волшебные слова GOROD_IMENITELNYY_PADEZH.
Допустим, что в столбце seo_desc.
Тогда поменять массово на "Москва" можно таким sql запросом в базу:
  1. UPDATE cms_articles_cats SET seo_desc = REPLACE(seo_desc, 'GOROD_IMENITELNYY_PADEZH', 'Москва');
#7 Глобальная замена слов 23 января 2020 в 12:14

а в чем разница?

vladimird
А разница в том, где это слово хранится. В файлах или в базе данных.
#8 Отправка формы без перезагрузки страницы 21 января 2020 в 22:36

Ris, а можно я сам буду решать как мне работать с данными в каждой конкретной ситуации?

@IamB
Нельзя, конечно же, но что с вами поделать/? smile
Попробуйте посмотреть структуру формы, и найти там id.
$structure = $form->getStructure();
#9 Отправка формы без перезагрузки страницы 21 января 2020 в 21:52

только суть

@IamB
Я понимаю, что какие-либо действия без перезагрузки — это аякс.
Также понимаю, что отправка запросов js-php несколько раз туда-сюда в одной валидации формы не есть хорошо.
Но почему не отправить из php в браузер столько данных, сколько возможно и не работать с этими данными уже в js?
#10 Отправка формы без перезагрузки страницы 21 января 2020 в 21:19
@IamB,
Не понял зачем отправлять калькуляцию в php, если яваскрипт сам хорошо делит и умножает.
#11 [ЕСТЬ РЕШЕНИЕ] Тестирование компонента Форум - продолжение 20 января 2020 в 22:25
Юран
Разделы в Панель управления — Компоненты — Форум.
Темы уже на самом сайте.
#12 Как у записей задать рандомные даты и время публикации? 20 января 2020 в 16:54
  1. SET@MIN ='2013-01-07 00:00:00';
  2. SET@MAX ='2019-01-20 00:00:00';
  3. UPDATE cms_con_articles SET date_pub = TIMESTAMPADD(SECOND, FLOOR(RAND() * TIMESTAMPDIFF(SECOND, @MIN, @MAX)), @MIN);
Нужную таблицу и интервал дат подставите сами.
#13 Ошибка при отладке 19 января 2020 в 23:52
Выполните в phpmyadmin:
  1. ALTER TABLE `cms_users_groups` ADD `ordering` INT(11) UNSIGNED NULL DEFAULT '1' COMMENT 'Порядок';
#14 Как убрать людей без фото с списка сайт / users 19 января 2020 в 23:46

Хочу сам сделать хук, которой удалять по крону (раз в день) людей которые, удалили свою страницу.
КАК мне найти куда его вставлять?

@andriu3240
В любую папку hooks любого компонента. Лучше в наш, новосозданный компонент.
Имя хука должно начинаться с cron, например cron_usersdelete.
  1. <?php
  2.  
  3. class onUsersfilterUsersdelete extends cmsAction {
  4.  
  5. public function run(){
  6.  
  7. // Получаем всех пользователей
  8. $users = $this->model_users->getUsers();
  9.  
  10. // Перебираем массив пользователей
  11. foreach($users as $user){
  12.  
  13. // Если профайл удален - удаляем юзера
  14. if ($user['is_deleted'] == 1){
  15. $this->model_users->deleteUser($user);
  16. }
  17. }
  18. }
  19. }

Далее добавлю массив в manifest.php 'hooks' => array ( 'название хука')

@andriu3240
В случае с хуком, который срабатывает по хрону в манифест ничего добавлять не надо.

Теперь нужно пройти в Панель управления — Настройки — Планировщик и там создать новое задание.
Компонент указать usersfilter хук usersdelete. Назначить период срабатывания 1440 минут например (сутки).
#15 Как убрать людей без фото с списка сайт / users 18 января 2020 в 23:25

Укажите где тот файл находится?

@andriu3240
Он не находится, а создается заново.
Напишите мне в личку, расскажу как создать хук.
-----------------------------------------------------------------------------
Как выяснилось, многим нужно это "тайное знание". smile
Расскажу прямо здесь, на примере скрытия юзеров без аватар.
Чтобы изменить выборку из таблицы юзеров, нам нужно создать хук в папке hooks любого компонента. Можно даже создать новый мини-компонент, чтобы гарантированно хук не удалился при обновлении на следующую версию.
Итак: Создаем мини-компонент с произвольным, но человекопонятным именем. Допустим usersfilter.
Создаем папку usersfilter в папке /system/controllers/. В ней создаем два файла fronend.php, manifest.php и папку hooks.
Файл frontend.php нужен только для того, чтобы движок сайта увидел наш хук. Никакой логики в нем нет:
  1. <?php
  2.  
  3. class usersfilter extends cmsFrontend {
  4.  
  5. }
В файле manifest.php прописываем наш хук:
  1. <?php
  2.  
  3. return array(
  4.  
  5. 'hooks' => array(
  6. 'profiles_list_filter'
  7. )
  8.  
  9. );
  10.  
В папке hooks создаем собственно сам хук. Файл profiles_list_filter.php
Чтобы создать файл хука, нам нужно понять, что отправляется в хук и что оттуда, соответственно, должно прилететь. Смотрим строку 246 в файле \system\controllers\users\frontend.php, откуда производится запрос хука.
  1. list($fields, $this->model) = cmsEventsManager::hook('profiles_list_filter', array($fields, $this->model));
Видим, что в хук отправляется массив array($fields, $this->model)
Пишем сам хук:
  1. <?php
  2.  
  3. class onUsersfilterProfilesListFilter extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. // Распаковываем входящий массив
  8. list($fields, $model) = $data;
  9.  
  10. // Добавляем нужный фильтр в модель
  11. $model->filterNotNull('avatar');
  12.  
  13. // Отправляем данные обратно в компонент users
  14. return array($fields, $model);
  15.  
  16. }
  17. }
Как формируется имя класса в хуке:
onИмякомпонентаИмяХукаВкемелстайле
Если неправильно напишете — ничего страшного. При включенной отладке, система потребует правильное имя компонента. Его можно скопировать и вставить в имя класса.
Fatal error: Uncaught Error: Class 'onUsersfilterProfilesListFilter' not found in...

После всех этих действий нужно пройти в Панель управления — Компоненты — Управление событиями и увидеть, что доступно новое событие profiles_list_filter. Жмем "Обновить события в базе данных".
После этого идем в просмотр юзеров и видим, что видны только юзеры с аватарами.
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.