При создании контента нужно запустить скрипт php с передачей данных в скрипт о пользователе, ссылки на контент.

#1 20 августа 2021 в 11:47

Собственно: При создании контента нужно запустить скрипт php с передачей данных в скрипт  о пользователе, ссылки на контент.
Куда подлезть, в какой php файл? Или сейчас есть возможность сделать это не копая движок через админку?

#2 20 августа 2021 в 19:07

Нужно добавить свой хук (придется таки покодить) на событие добавления записи. И в этом хуке выполнить ваш код. Вот хорошая статья от Webman instantcms.ru/blogs/allright/huki-huhuki-isklyuchaem-neaktivnyh-polzovatelei-iz-spiskov.html

Если кодить совсем никак, то welcome в instantcms.ru/freelancers 

#3 21 августа 2021 в 01:53

Кодить могу, просто не вьеду где  воткнуть php. Cпасибо за инфо. Изучаю.

#4 30 августа 2021 в 23:30

Нифига не понятно..  С чего начать, куда подлезть)))

#5 31 августа 2021 в 14:45

Может стоит начать с доков? Там видео есть по созданию компонента и виджета. Всё вполне доходчиво.

#6 31 августа 2021 в 17:06

Создаем файл system/controllers/content/hooks/content_after_add.php с таким содержимым

  1. <?php
  2.  
  3. //сделаем что-то с данными статьи после добавления
  4. //в $item массив данных добавленной записи типа контента
  5. //в $item['user_id'] идентификатор пользователя
  6. class onContentContentAfterAdd extends cmsAction {
  7.  
  8. public function run($item) {
  9.  
  10. //получим модель компонента Пользователи, чтобы получить данные о пользователе
  11. $model_user = cmsCore::getModel('users');
  12.  
  13. //данные пользователя из базы cms_users (и не только) в виде массива
  14. $user = $model_user->getUser($item['user_id']);
  15.  
  16. //ваш код, в котором используйте $item и $user
  17.  
  18. //обязательно вернем $item чтобы смогли отработать остальные хуки
  19. return $item;
  20.  
  21. }
  22.  
  23. }
  24.  

 

Данный хук срабатывает сразу после добавления записи пользователем.

Чтобы созданный хук начал выполняться, пройдите в Компоненты — Управление событиями и согласитесь обновить события.

Изображение

Чтобы в процессе тестирования не добавлять каждый раз запись, создайте пустой компонент с одним экшном, забейте в начале файла тестовый $item и проверяйте ваш код в этом экшне. Для просмотра данных в коде удобно использовать системный метод dump()

Как создать свой компонент docs.instantcms.ru/dev/controllers

Почему именно так назван хук, почему именно эти данные передаются в него хорошо расписано в статье Webman

Дальше давайте уже по существу. Есть код хука, вы в нем что-то пытаетесь делать, и не получается. Пишите текст ошибки, или что непонятно конкретно по коду.

Нифига не понятно..  С чего начать, куда подлезть)))

iiv

а то тут звучит как «напишите за меня»...

#7 15 ноября 2021 в 12:31

Zau4man!  Огромнейшее спасибо за инфо. Добрался я до этой темы наконец-то. Сайт у меня версии 2.10  (обновить пока не решился). Попробовал по выше описанному с созданием файла — не получилось. «обновить события в базе данных» просто нет внизу. Соответственно новый хук не появился в списке. Подумал, придумал пока временное решение: модифицировал /system/controllers/content/actions/item_add.php 
Может кому-то пригодится — вставил свой кусок кода после:

                if(!$is_draf_submitted){

                    if ($item['is_approved']){
                        cmsEventsManager::hook('content_after_add_approve', array('ctype_name' => $ctype['name'], 'item' => $item));


Делал оповещение в дискорд о новом контенте.Всё работает.По своему компоненту пока темный лес, разберусь отпишу в этой теме.

з.ы.Может задаю слишком простые вопросы… Я слабовато знаю движок Инстанта и темой занимаюсь редко, урывками. Поэтому так не просто в потемках блуждать)))

#8 15 ноября 2021 в 13:47

Попробовал по выше описанному с созданием файла — не получилось

iiv

до 2.14.2 чтобы появилось предложение об обновлении событий, надо в папке с компонентом создать файл manifest, и поместить событие в него. Посмотреть устройство манифеста можете практически в любом компоненте, например, в content

Ну и править файлы движка — это неправильно. Так решение об обновлении будет откладываться постоянно.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.