Php 如何在Joomla 3中禁用前端登录组件?

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->搜索登录名 然

如何在Joomla 3中禁用前端登录组件

我已经通过如下方式禁用了前端用户注册

但仍然可以通过下面的url访问登录表单

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;
    }
}