BlackShot Опубликовано 21 августа, 2021 Поделиться Опубликовано 21 августа, 2021 (изменено) Всем привет, Кто-нибудь захочет создать модель / пример учебника о том, как создать плагин IPS, единственной целью которого является замена кода файла? У меня уже есть все инструменты разработчика и доступ к «центру разработчиков», но я не уверен, как создать такой «крючок/hook». Я хотел бы немного узнать об этом. Спасибо!! Изменено 21 августа, 2021 пользователем BlackShot Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
SoulRainr Опубликовано 21 августа, 2021 Поделиться Опубликовано 21 августа, 2021 Ознакомься сперва с созданием Приложения, легче будет 😃 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Orpheus Опубликовано 21 августа, 2021 Поделиться Опубликовано 21 августа, 2021 This link should help: https://invisioncommunity.com/developers/docs/general/ BlackShot 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BlackShot Опубликовано 21 августа, 2021 Автор Поделиться Опубликовано 21 августа, 2021 (изменено) 15 hours ago, SoulRainr said: Ознакомься сперва с созданием Приложения, легче будет 😃 Не сложнее ли сделать Приложения вместо плагина? 😬 15 hours ago, M4FIA_RaGE said: This link should help: https://invisioncommunity.com/developers/docs/general/ Спасибо. Да, я это уже знал. Я знаю, как использовать инструменты разработчика для создания плагина, я просто не знаю, что делать после этого - например, создать простой плагин для замены кода в одном из файлов IPS. Было бы здорово изучить основы из простого урока. Изменено 21 августа, 2021 пользователем BlackShot Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 21 августа, 2021 Поделиться Опубликовано 21 августа, 2021 7 минут назад, BlackShot сказал: я просто не знаю, что делать после этого - например, создать простой плагин для замены кода в одном из файлов IPS. Весь ISP построен на классах, поэтому ваша задача найти файл, который отвечает за исполнение функции, которую вы хотите изменить/заменить. Например, вы хотите изменить что-то в логике галереи при показе изображения. После недолгих поисков вы найдете файл modules/front/view.php и в нем функцию manage(), которая отвечает за показ изображения. Теперь надо сказать инструменту разработчика, какой класс вы хотите изменить. Смотрим в первые строки файла view.php и видим: namespace IPS\downloads\modules\front\downloads; - нашли первую часть головоломки. Теперь смотрим ниже - class _view extends \IPS\Content\Controller - вторая часть головоломки. Убираем '_', получаем полное имя класса IPS\downloads\modules\front\downloads\view Отлично, класс найден. Теперь идем в инструменты разработчика на созданном нами плагине, закладка hooks, нажимаем create hook и заполняем поля как нам надо: Hook Type: Code pluginClass to extend: downloads\modules\front\downloads\view (IPS\ уже есть) Filename: downloadsViewHook Жмем Save, если не ошиблись, то на экране появится наш новый хук, а в директории hooks плагина файл downloadsViewHook.php Теперь надо кликнуть на карандаш и войти в режим редактирования хука. Слева список функций, которые мы может изменить нашим хуком, справа поле редактирования. Находим в начале списка функций manage() и один раз кликаем на ней. Справа в окне появляется шаблон нашего хука с новой функцией. Опа пока ничего не делает, просто вызывает родительскую функцию, но наш код уже работает. Теперь у вас есть два пути: вызвать родителя и потом добавить/изменить что-то в данных, которые он создал, либо удалить return parent::manage();, полностью скопировать код из оригинальной функции и отредактировать его. Первый путь, по мнению разработчиков движка, считается правильным, т.к. не изменяет родительский код и позволяет строить цепочки хуков, второй путь - путь джедая, вы берете на себя ответственность за то, что цепочки хуков к этому классу работать не будут и это будет единственный хук для этого класса. Выбираете свой путь, пишете свой код, радуетесь жизни. BlackShot, cyr4x и by_ix 1 2 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
BlackShot Опубликовано 21 августа, 2021 Автор Поделиться Опубликовано 21 августа, 2021 2 minutes ago, Desti said: Hook Type: Code pluginClass to extend: downloads\modules\front\downloads\view (IPS\ уже есть) Filename: downloadsViewHook Я смог добраться до этой части, но остальное для меня все еще немного сложно. Мне не хватает навыков программирования, а обучение с нуля кажется трудным даже для такой простой задачи, как создание небольшого плагина. Но уровень детализации ваших инструкций потрясающий !! Большое вам спасибо за это! Именно такие люди, как вы, поддерживают жизнь этого сообщества и мотивируют нас. Если вы когда-нибудь сделаете простой плагин и захотите снимать / записывать его, сделайте это и отметьте меня! Я бы хотел увидеть, как происходит весь процесс! Еще раз спасибо, дружище!! 😄 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Desti Опубликовано 21 августа, 2021 Поделиться Опубликовано 21 августа, 2021 Для начала вам надо разобраться с классами в php, без этого будет невозможно понять устройство и функционирование движка форума. А поскольку движок еще и глючный, иногда будет очень сложно понять, что вообще происходит Посмотрите youtube - "classes in php", там есть много хороших курсов. BlackShot 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.