3

在前端訪問Joomla 1.6和1.7中的com_users組件時,應用程序會自動導入來自'用戶'組的所有插件。顯然,如果你不想創建一個組件來簡單地將一些變量傳遞給一個插件,這是非常有用的。Joomla 1.5 com_user和導入用戶插件,如Joomla 1.6和更高版本

好的。讓我們更簡單:

  1. 用戶獲得激活鏈接:http://example.com/index.php?option=com_users&task=edit&emailactivation=1&u=63&d077b8106=1並點擊它。
  2. 當然,組件將省略emailactivation和其他參數,簡單地顯示「編輯個人資料表格」(或登錄表格)。
  3. 然後JAp​​plication進口所有插件從 '用戶' 組,這將觸發__constructors

基本上,插件的__constructor一個可以設置簡單的動作像下面這樣:

class plgUserAccountactivation extends JPlugin 
{ 
    public function __construct(& $subject, $config) 
    { 
     parent::__construct($subject, $config); 

     if(isset($_GET['emailactivation'])) { 
      // check token 
      // activate account, email or whatever 
      // redirect with message 
     } 
    } 
} 

哇!它工作,沒有必要創建一個完整的控制器來處理一個簡單的任務。

但是等一下...

  • 在鏈路變化的index.php?選擇= com_users到index.php?選擇= com_user
  • 而且,我們嘗試的Joomla 1.5 ...

嘿,嘿,沒有任何反應com_user根本沒有導入任何東西,__constructor也沒有調用。

我很擔心這個在Joomla 1.5中,我不想寫整個組件。

如果有人有一些明智的想法,請讓我知道。

編輯:

HTTP:: 我已經通過發送以下形式的聯繫解決我的問題/example.com/index.php選項= com_user & 任務=註銷 & emailactivation = 1 & U = 63 & d077b8106 = 1

這樣用戶插件被包括和__constructors被執行。但是,這是如此無趣,任務=註銷並不真正鼓勵點擊鏈接。

回答

1

1.5的問題是,事件更有限。您有以下活動可用:Joomla 1.5 Plugin Events - User。我想你的插件沒有啓動。

如何使它成爲系統插件並檢查URL /請求屬性中的激活?喜歡的東西:

class plgSystemUseractiavation extends JPlugin { 

    function onAfterInitialise(){ 

    $u = &JURI::getInstance(); 
    $option = trim(strtolower($u->getVar('option'))); 
    $emailactivation = trim(strtolower($u->getVar('emailactivation'))); 

    if(strlen($option < 1)){ // for SEF... 
     $option = trim(strtolower(JRequest::getString('option'))); 
    } 

    $app =& JFactory::getApplication(); 
    $appName = trim(strtolower($app->getName())); 
    if($appName === 'site'){ 
     if(($option === 'com_users') || ($option === 'com_user')){ 
      if($emailactivation === '1'){ 
       // check token 
       // activate account, email or whatever 
       // redirect with message       
      } 
     }  
    }  
}  
} 
+0

我需要它作爲用戶插件,除了你的代碼將在所有子網頁被執行,即使在「com_content」 – WooDzu

+0

其實我已經解決我的問題暫時的,看到更新的問題 – WooDzu

+0

是,插件總是執行。但計算工作量並不大,因爲它會徹底檢查它是否在正確的位置,例如在「com_content」中立即從執行中返回。 – hbit