Собственно: При создании контента нужно запустить скрипт php с передачей данных в скрипт о пользователе, ссылки на контент.
Куда подлезть, в какой php файл? Или сейчас есть возможность сделать это не копая движок через админку?
При создании контента нужно запустить скрипт php с передачей данных в скрипт о пользователе, ссылки на контент.
Нужно добавить свой хук (придется таки покодить) на событие добавления записи. И в этом хуке выполнить ваш код. Вот хорошая статья от Webman instantcms.ru/blogs/allright/huki-huhuki-isklyuchaem-neaktivnyh-polzovatelei-iz-spiskov.html
Если кодить совсем никак, то welcome в instantcms.ru/freelancers
Кодить могу, просто не вьеду где воткнуть php. Cпасибо за инфо. Изучаю.
Нифига не понятно.. С чего начать, куда подлезть)))
Может стоит начать с доков? Там видео есть по созданию компонента и виджета. Всё вполне доходчиво.
Создаем файл system/controllers/content/hooks/content_after_add.php с таким содержимым
<?php //сделаем что-то с данными статьи после добавления //в $item массив данных добавленной записи типа контента //в $item['user_id'] идентификатор пользователя class onContentContentAfterAdd extends cmsAction { public function run($item) { //получим модель компонента Пользователи, чтобы получить данные о пользователе $model_user = cmsCore::getModel('users'); //данные пользователя из базы cms_users (и не только) в виде массива $user = $model_user->getUser($item['user_id']); //ваш код, в котором используйте $item и $user //обязательно вернем $item чтобы смогли отработать остальные хуки return $item; } }
Данный хук срабатывает сразу после добавления записи пользователем.
Чтобы созданный хук начал выполняться, пройдите в Компоненты — Управление событиями и согласитесь обновить события.
Чтобы в процессе тестирования не добавлять каждый раз запись, создайте пустой компонент с одним экшном, забейте в начале файла тестовый $item и проверяйте ваш код в этом экшне. Для просмотра данных в коде удобно использовать системный метод dump()
Как создать свой компонент docs.instantcms.ru/dev/controllers
Почему именно так назван хук, почему именно эти данные передаются в него хорошо расписано в статье Webman
Дальше давайте уже по существу. Есть код хука, вы в нем что-то пытаетесь делать, и не получается. Пишите текст ошибки, или что непонятно конкретно по коду.
Нифига не понятно.. С чего начать, куда подлезть)))
а то тут звучит как «напишите за меня»...
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));
Делал оповещение в дискорд о новом контенте.Всё работает.По своему компоненту пока темный лес, разберусь отпишу в этой теме.
з.ы.Может задаю слишком простые вопросы… Я слабовато знаю движок Инстанта и темой занимаюсь редко, урывками. Поэтому так не просто в потемках блуждать)))
Попробовал по выше описанному с созданием файла — не получилось
до 2.14.2 чтобы появилось предложение об обновлении событий, надо в папке с компонентом создать файл manifest, и поместить событие в него. Посмотреть устройство манифеста можете практически в любом компоненте, например, в content
Ну и править файлы движка — это неправильно. Так решение об обновлении будет откладываться постоянно.