2016-08-08 33 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。

注意:只有插件方法建議更安全&實現你的目標的正確方法。