2014-09-04 135 views
3

以下是我想要做的事情:我有一個自定義組件,在其某個視圖中要求用戶登錄。如果他不是,現在,我只拋出一個異常,這真的很難看。Joomla:如果用戶未登錄並返回到自定義組件中,則重定向到登錄頁面

所以我想將用戶重定向到登錄頁面。這不是問題,我知道如何去做。

但是。肯定有一種方式可以在登錄頁面後臨時「覆蓋」默認重定向到用戶想要查看的視圖。實際上,菜單項就是這樣做的,例如。問題是:我無法弄清楚。有誰知道如何覆蓋登錄頁面的默認重定向只有一個電話?

+0

這是你想要的嗎? 1)訪客嘗試訪問你的組件視圖; 2)他被重定向到joomla登錄頁面; 3)訪客登錄joomla; 4)Joomla將用戶重定向到組件視圖 – pedromanoel 2014-09-05 13:33:28

回答

7

您不需要創建插件就可以做到這一點。

com_user組件接受return參數以知道登錄後向哪裏發送用戶。這完全在您描述的情況下使用:用戶嘗試訪問禁區,他被重定向到登錄頁面,並返回到他嘗試訪問的頁面。

對於這一點,你做什麼@布賴恩建議,但有輕微的變化:

$app = JFactory::getApplication(); 
$message = "You must be logged in to view this content"; 
$url = JRoute::_('index.php?option=com_users&view=login&return=' . base64_encode('YOUR COMPONENT VIEW URL HERE') 
$app->redirect($url, $message); 
+0

非常感謝! – Khaarkh 2014-09-07 13:59:31

4

有3種實現方法。

  1. 如果你有菜單項,您的自定義組件視圖再有就是在菜單頁面訪問的選項。只需選擇註冊選項即可。現在,當用戶嘗試訪問該頁面時,它會提示用戶登錄以查看該頁面。 enter image description here

  2. 您可以創建一個plugin或從該頁面加載的位置調用該插件。

  3. 或者您可以直接將此代碼添加到您的視圖默認文件中。

<?php 
$user = JFactory::getUser(); 
if($user->id=='' || $user->id==NULL){ 
// Your message here. 
}else{ 

// Your code here 
} 
?> 

希望這會給你一個想法。

1

你可以創建一個插件,但有一個更好的方法來完成後端或內聯你現有的代碼。

而是拋出異常的,使用這行:

JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_users&view=login', JText::_("You must be logged in to view this content")); 

另一種選擇是創建一個放置菜單參考。這是一個沒有附加到模塊並顯示在網站上的菜單組。它用於各種原因,但在這種情況下,您將創建菜單引用併爲其分配受限訪問級別。

現在,如果您希望用戶能夠通過顯示的菜單選項進行訪問,只需將公共參考轉換爲菜單別名類型並指向具有訪問級別限制的放置菜單參考。

如果您只是想使用嵌入式錨點鏈接,則可以使用放置菜單別名作爲href屬性來實現相同的結果。

讓用戶自動路由到登錄頁面。

我會使用這兩個選項之一與用戶插件。

相關問題