2016-08-08 37 views
0

版 - 的Joomla 3.6.2运行PHP代码中的Joomla 3

我的封装包括一个管理部件,一个前端元件和一个模块。

我想在用户注销时运行一些php代码(http请求)。我很困惑在哪里写代码。 我有几个问题 -

+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似乎没有效果,用户仍然将用户注销。

如果插件只能在前端运行,则需要处理该问题。

在创建文件后,您可以使用discover - 功能(扩展 - >管理 - >发现)来安装插件。请记住在安装后启用该插件。

+0

嗨,我有一个问题,假设我正在做一个扩展,其他客户将通过zip包安装我的扩展,如果我去这个方法,我创建了一个文件夹名称plg_myExtension,然后我用你的方法。管理员必须从后端手动启用插件吗?或者有没有一种方法来自动启用该插件? – NeiL

+0

嗨NeiL,我可以看到,如果您还为组件编写安装脚本,则可以在安装时自动启用插件。我自己并没有这样做,但如果你尝试谷歌它似乎有一些答案。 – jonasfh

+0

这解决了这个问题,我从/plugin/user/joomla/joomla.php文件中复制了onUserLogout函数,并将其放在它之间。我希望我做对了。 – NeiL

0

你可以做到这一点无论是使用plugin或做登录模块& com_user组件的模板压倒一切的在那里你可以注销设置自定义网址。因此,注销过程完成后,用户将访问您的自定义脚本,并可以完成自己的任务。 或者,如果你不想继续更新joomla,你可以破解com_users。

注意:只有插件方法建议更安全&实现你的目标的正确方法。