2016-08-08 9 views
0

версия - Joomla 3.6.2запустить PHP-код на выходе из системы пользователя в Joomla 3

Мой пакет включает в себя один компонент администратора, один из компонентов внешнего интерфейса и один модуль.

Я пытаюсь запустить некоторый PHP-код (http-запрос) при выходе пользователя из системы. Я смущен тем, где писать этот код. У меня осталось всего несколько вопросов -

  • Я не могу найти хороший ресурс при внедрении событий. Как использовать эти события (https://docs.joomla.org/Plugin/Events)
  • Нужно ли мне писать плагин для этого?
+0

Похоже, вам нужно положить это в плагин. – apokryfos

+0

@apokryfos Я не уверен в этой опции, файл плагина только для одной маленькой функции. в drupal крючки используются, в wordpress есть фильтры, должен быть другой способ сделать это? – NeiL

+0

В drupal любой пользовательский код технически является частью модуля или темы, которая является своего рода плагином. – apokryfos

ответ

1

Да, написание пользовательского плагина - это то, что вы хотите, и это довольно просто. Ниже скелет для вас, чтобы начать с:

  • Создайте новую папку в установке, экс/плагин/пользователь/yourplugin
  • Добавить XML-файл: yourplugin.xml со следующим содержанием:

<?xml version="1.0" encoding="utf-8"?> <extension version="3.0.0" type="plugin" group="user" method="upgrade"> <name>plg_user_yourplugin</name> <author>NeiL</author> <creationDate>Aug 2017</creationDate> <version>3.1.0</version> <description>Add a description</description> <files> <filename plugin="yourplugin">yourplugin.php</filename> </files> </extension>

  • И PHP-файл, как

<?php defined('_JEXEC') or die; class PlgUserYourplugin extends JPlugin { function onUserLogout($credentials, $options){ // call whatever php you like here... return true; } }

Документы говорят, что onUserLogout должен возвращать логическое значение, но возвращаемое значение false не похоже на эффект, пользователь по-прежнему регистрирует пользователя.

Если плагин должен работать только во внешнем интерфейсе, вам необходимо его обработать.

Вы можете использовать функцию обнаружения (Расширения-> управлять-> обнаружение) для установки плагина после создания файлов. Не забудьте включить плагин после установки.

+0

Привет, У меня есть один вопрос в виду. Предположим, что я делаю расширение, другие клиенты установят мое расширение через zip-пакет. Если я пойду с этим методом, я создал имя папки plg_myExtension, тогда я использовал ваш метод. Нужно ли администратору разрешать плагин изнутри? или есть способ автоматического включения этого плагина ??? – NeiL

+0

Привет, NeiL, я вижу, что можно включить автоматическое включение плагинов при установке, если вы также написали установочный скрипт для своего компонента.Я не делал этого сам, но, кажется, есть некоторые ответы, если вы попытаетесь это сделать. – jonasfh

+0

Это решает проблему, я скопировал функцию onUserLogout из файла /plugin/user/joomla/joomla.php и поместил мой код между ними. Надеюсь, я все правильно. – NeiL

0

Вы можете достичь этого либо с помощью plugin или делать шаблон подмены модуля Войти & компонента com_user, где вы можете установить пользовательский URL на выходе из системы. Поэтому, после завершения процесса выхода, пользователь придет к вашему пользовательскому сценарию, и вы сможете делать все. Или, если вы не хотите обновлять Joomla, вы можете взломать com_users.

Примечание: рекомендуется использовать только метод плагина, который более безопасен. & правильный способ достижения вашей цели.