2012-01-26 86 views
0

我構建了一個自定義組件,該組件只能被登錄用戶訪問。我正在考慮檢查JFactory::getUser()->guest,如果已設置,請將其重定向到自定義頁面。在joomla中同時顯示註冊和登錄頁面自定義組件

現在我更喜歡此頁面包含註冊和登錄選項,但joomla本身似乎沒有此功能。我是否必須將此功能用於自定義組件,或者有另一種解決方案?

回答

1

你真的應該使用內置的ACL來控制用戶的訪問,而不是試圖把它自己的代碼。這就是ACL開始的關鍵點。下面是該ACL在管理和站點的前端是如何工作的教程 -

http://docs.joomla.org/ACL_Tutorial_for_Joomla_1.6

這裏是添加ACL到組件的教程 -

http://docs.joomla.org/Developing_a_Model-View-Controller_(MVC)_Component_for_Joomla!1.7_-_Part_14

我想你使用ACL系統可以更好地提供服務,因爲它使您擁有更多的靈活性 - 例如稍後添加額外的用戶組和權限,而無需觸摸代碼。

完成此設置後,製作自定義註冊或登錄頁面就像默認com_user登錄視圖的模板覆蓋一樣簡單。您需要合併這些文件 -

對於頁面的登錄部分:

JOOMLA/components/com_users/views/login/tmpl/default.php 

對於頁面的註冊部分:

JOOMLA/components/com_users/views/registration/tmpl.default.php 

然後把新的和改進的文件在這裏:

JOOMLA/templates/YOUR TEMPLATE/html/com_users/login/default.php 

這會給你ACL控制訪問你的組件以及自定義登錄/重新註冊頁面,而不必贅述任何不必要的擴展。

0

Joomla!的默認登錄模塊/頁面僅提供註冊頁面的鏈接。

快速搜索the JED shows about 200 login extensions,有可能他們其中一個做你想做的。

但是,如果您希望將它與對組件的訪問集成在一起,則必須自己編寫代碼。正常的過程是,如果用戶試圖訪問資產視圖,view.html.php(或類似的)將檢查他們的權限,並根據組件發佈JError消息,並可能將其重定向到系統登錄。

例如。 com_content

// Check the view access to the article (the model has already computed the values). 
    if ($item->params->get('access-view') != true && (($item->params->get('show_noauth') != true && $user->get('guest')))) { 
        JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR')); 
      return; 
    } 
相關問題