Php 如何在Joomla 3中禁用前端登录组件?
如何在Joomla 3中禁用前端登录组件 我已经通过如下方式禁用了前端用户注册 但仍然可以通过下面的url访问登录表单Php 如何在Joomla 3中禁用前端登录组件?,php,joomla,joomla3.0,joomla3.2,joomla3.3,Php,Joomla,Joomla3.0,Joomla3.2,Joomla3.3,如何在Joomla 3中禁用前端登录组件 我已经通过如下方式禁用了前端用户注册 但仍然可以通过下面的url访问登录表单 index.php?option=com_users&view=login 如何在不编辑核心文件的情况下禁用前端登录组件? 考虑到我已经经历了下面的事情。我不想用重写规则来完成它。我想向用户显示已禁用的消息 试试这个 Joomla默认登录模块受保护。因此,您无法从管理端编辑/禁用它 只需检查extensions->extension manager->搜索登录名 然
index.php?option=com_users&view=login
如何在不编辑核心文件的情况下禁用前端登录组件?
考虑到我已经经历了下面的事情。我不想用重写规则来完成它。我想向用户显示已禁用的消息
试试这个
Joomla默认登录模块受保护。因此,您无法从管理端编辑/禁用它
只需检查extensions->extension manager->搜索登录名
然后该模块将显示。但你不能让它失效。
因此,在不接触核心文件的情况下覆盖此功能的解决方案是模板覆盖
您只需在模板中覆盖这个视图index.php?option=com\u users&view=login
通过DB表编辑受保护的扩展
无法编辑扩展名,但可以通过将其旋转来管理扩展名
开或关。受保护,表示无法管理此扩展,
否则,它将破坏您的网站结构。但是,如果你愿意
要使扩展处于解锁状态,您可以访问数据库(在我的
案例MySQL由phpMyAdmin编辑),找到可靠的结构表,
找到所需字符串,并将“状态”从“1”更改为“0”。通常是你的
主机为您提供一些数据库管理工具
希望这对joomla 3.x a有帮助
我找到的简单方法是编辑/components/com users/controller.php
然后像那样标记视图字符串登录。我得到了404服务器响应,但这正是我想要的。
因为这不是一个url,而是一个组件视图,所以很难重定向
// Set the default view name and format from the Request.
// $vName = $this->input->getCmd('view', 'login');
$vFormat = $document->getType();
如果您想避免404服务器响应,在按照前面的注释编辑/components/com users/controller.php之后,您可以创建一个重定向,从前端登录页面发送到您想要的任何地方,比如主页。它确实有效。我为此编写了一个插件。它完全禁用前端的“用户”。 您还可以仅对以下内容禁用特定视图:
index.php?option=com_users&view=login
index.php?option=com_users&view=registration
index.php?option=com_users&view=profile&layout=edit
这是用于在前端完全禁用用户的代码
<?php defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Router\Route;
class PlgSystemCobizDisableLogin extends CMSPlugin
{
public function onAfterInitialise()
{
$this->disableLogin();
}
protected function disableLogin()
{
$app = Factory::getApplication();
if ($app->isClient('site') === false) return;
$disable_users = $this->params->get('disable_users', 1);
if (!$disable_users) return;
$option = $app->input->getCmd('option');
if ($option == 'com_users') {
$this->redirect();
}
}
protected function redirect()
{
$Itemid = $this->getHomePageItemid();
$app = Factory::getApplication();
$link = Route::_('index.php?Itemid=' . $Itemid);
Factory::getApplication()->enqueueMessage('Toegang gewijgerd', 'error');
$app->redirect($link);
}
protected function getHomePageItemid()
{
$tableName = '#__menu';
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select('id');
$query->from($db->quoteName($tableName));
$query->where($db->quoteName('published') . ' = ' . $db->quote(1));
$query->where($db->quoteName('home') . ' = ' . $db->quote(1));
$db->setQuery($query);
$data = $db->loadResult();
return $data;
}
}