Как отключить регистрацию внешнего интерфейса в Magento - PullRequest
11 голосов
/ 02 июня 2010

Как под названием.

Но, тем не менее, пользователи могут войти в веб-интерфейс, а администратор может создать учетную запись только в бэкэнде.

Ответы [ 8 ]

12 голосов
/ 03 июня 2010

Другой возможностью будет перегрузка действия клиент / учетная запись / создание и просто перенаправление пользователя на домашнюю страницу при вызове этого действия.

В первый раз просто сделайте то, что было предложено Беном V. Это исключит возможность просмотра страницы регистрации.

Затем создайте новый модуль, в котором вы будете перегружать AccountController.php.

1- Создать новую папку в app/code/local/ с именем Mycompany

2 - Создать новую папку в app/code/local/Mycompany/ с именем Registrationremove

3- Создать app/code/local/Mycompany/Registrationremove/etc/

4- Создать app/code/local/Mycompany/Registrationremove/etc/config.xml

Копирование и вставка в config.xml:

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Registrationremove>
            <version>0.1.0</version>
        </Mycompany_Registrationremove>
    </modules>
    <global>
        <rewrite>
             <mycompany_registrationremove_customer_account_create>
                      <from><![CDATA[#^/customer/account/create/$#]]></from>
                      <to>/registrationremove/customer_account/create</to>
                 </mycompany_registrationremove_customer_account_create>
                 <mycompany_registrationremove_customer_account_createPost>
                     <from><![CDATA[#^/customer/account/createPost/$#]]></from>
                     <to>/registrationremove/customer_account/createPost</to>
                 </mycompany_registrationremove_customer_account_createPost>
           </rewrite> 
    </global>

    <frontend>
        <routers>
            <registrationremove>
                <use>standard</use>
                <args>
                    <module>Mycompany_Registrationremove</module>
                    <frontName>registrationremove</frontName>
                </args>
            </registrationremove>
        </routers>
    </frontend>
</config>

5- Создать app/code/local/Mycompany/Registrationremove/controllers

6- Создать app/etc/modules/Mycompany_Registrationremove.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Registrationremove>
            <active>true</active>
            <codePool>local</codePool>
        </Mycompany_Registrationremove>
    </modules>
</config>

7- Создать app/code/local/Mycompany/Registrationremove/controllers/Customer/AccountController.php

Копирование и вставка в AccountController.php:

require_once 'Mage/Customer/controllers/AccountController.php';

class Mycompany_Registrationremove_Customer_AccountController extends Mage_Customer_AccountController
{
    public function createAction()
    {
      $this->_redirect('*/*');
    }

    public function createPostAction()
    {
      $this->_redirect('*/*');
    }

}

8- Создать app/code/local/Mycompany/Registrationremove/Helper/Data.php

Скопируйте и вставьте в Data.php:

class Mycompany_Registrationremove_Helper_Data extends Mage_Core_Helper_Abstract
{
}

Теперь, когда кто-то пытается получить доступ к клиенту / учетной записи / создать /, он должен быть перенаправлен на домашнюю страницу.

Надеюсь, что помогло:)

Хьюг.

5 голосов
/ 02 июня 2010

Вы можете изменить экран входа в систему, чтобы удалить кнопку «Создать новую учетную запись». Таким образом, существующие пользователи могут войти в систему, но у них нет возможности создавать новые учетные записи.

Файл для изменения: /app/design/frontend/default/default/template/customer/form/login.phtml. Вокруг линии 41 вы увидите <div class="col-1 new-users">. Закомментируйте весь этот div, чтобы скрыть раздел «Новый пользователь» на странице входа.

Edit:
Невозможно просто отключить регистрацию нового пользователя, как вы просите. Я немного больше искал, и все, что я нашел, было несколько человек с такой же идеей , как у меня. В дополнение к моему первоначальному предложению я бы
а) удалить раздел <customer_account_create> в /app/design/frontend/default/default/layout/custom.xml и
б) удалить строки, связанные с регистрацией, из /app/design/frontend/default/default/template/checkout/onepage/login.phtml.

2 голосов
/ 22 октября 2010

В приведенной выше структуре примера имя класса контроллера должно быть изменено от

класс Mycompany_Registrationremove_AccountController extends Mage_Customer_AccountController

до

класс Mycompany_Registrationremove_Customer_AccountController расширяет Mage_Customer_AccountController

2 голосов
/ 07 июня 2010

Хорошо. Я получил это сработало. Обратитесь к Hugues Solution, есть две поправки:

  1. добавить приложение \ etc \ modules \ Mycompany_All.xml

    <?xml version="1.0"?>
    <config>
        <modules>
            <Mycompany_Registrationremove>
                <active>true</active>
                <codePool>local</codePool>
            </Mycompany_Registrationremove>
        </modules>
    </config>
    
  2. изменить файл: app / code / local / Mycompany / Registrationremove / etc / config.xml

    <?xml version="1.0"?>
    <config>
        <modules>
            <Mycompany_Registrationremove>
                <version>0.1.0</version>
            </Mycompany_Registrationremove>
        </modules>
     <global>
            <rewrite>
                <mycompany_registrationremove_customer_account_create>
                    <from><![CDATA[#^/customer/account/create/$#]]></from>
                    <to>/registrationremove/customer_account/create</to>
                </mycompany_registrationremove_customer_account_create>
                <mycompany_registrationremove_customer_account_createPost>
                    <from><![CDATA[#^/customer/account/createPost/$#]]></from>
                    <to>/registrationremove/customer_account/createPost</to>
                </mycompany_registrationremove_customer_account_createPost>
            </rewrite>
        </global>
        <frontend>
            <routers>
                <mycompany_registrationremove>
                    <use>standard</use>
                    <args>
                        <module>Mycompany_Registrationremove</module>
                        <frontName>registrationremove</frontName>
                    </args>
                </mycompany_registrationremove>
            </routers>
        </frontend>
    </config>
    
1 голос
/ 07 августа 2014

Я не смог заставить работать ни одно из решений, размещенных здесь, и обнаружил, что мне нужно использовать следующий синтаксис в config.xml (в частности, синтаксис маршрутизаторов внешнего интерфейса):

<?xml version="1.0"?>
<config>
<modules>
    <Mycompany_Registrationremove>
        <version>0.1.0</version>
    </Mycompany_Registrationremove>
</modules>
<global>
    <rewrite>
         <mycompany_registrationremove_customer_account_create>
                  <from><![CDATA[#^/customer/account/create/$#]]></from>
                  <to>/registrationremove/customer_account/create</to>
             </mycompany_registrationremove_customer_account_create>
             <mycompany_registrationremove_customer_account_createPost>
                 <from><![CDATA[#^/customer/account/createPost/$#]]></from>
                 <to>/registrationremove/customer_account/createPost</to>
             </mycompany_registrationremove_customer_account_createPost>
       </rewrite> 
</global>

<frontend>
    <routers>
        <customer>
            <args>
                <modules>
                    <Mycompany_Registrationremove before="Mage_Customer">Mycompany_Registrationremove_Customer</Mycompany_Registrationremove>
                </modules>
            </args>
        </customer>
    </routers>
</frontend>
</config>

Здесь больше информации об этом методе - http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller

1 голос
/ 26 октября 2010

Работает ли этот метод для ver. 1.4.1.1

Наконец я решил пропустить все сложные шаги, а также изменить форму register.phtml в \ app \ design \ frontend \ base \ default \ template \ customer \, кроме файлов, которые сказал BenV .

Я удалил форму и изменил заголовок на «Регистрация пользователя отключена»:)

0 голосов
/ 22 сентября 2016

В качестве дополнения к ответу о ликвидности, я бы сделал еще пару изменений, чтобы улучшить это. Во-первых, регулярное выражение не соответствует URL, если у него нет косой черты, например. customer/account/create. Чтобы исправить, узлы «из» должны читать <![CDATA[#^/customer/account/create(/.*)?$#]]> и <![CDATA[#^/customer/account/createPost(/.*)?$#]]>.

Во-вторых, я включил наблюдателя, который прослушивает событие customer_registration_is_allowed (это вызывается в persistent/customer/form/login.phtml при использовании темы RWD из функции $this->helper('customer')->isRegistrationAllowed()):

<events>
    <customer_registration_is_allowed>
        <observers>
            <your_module_set_is_active>
                <class>Your_Module_Model_Observers_Customer</class>
                <method>disableCustomerRegistration</method>
            </your_module_set_is_active>
        </observers>
    </customer_registration_is_allowed>
</events>

Тогда в наблюдателе:

class Your_Module_Model_Observers_Customer
{
    /**
     * Force disable customer registration
     *
     * @param  Varien_Event_Observer $observer Observer
     * @return void
     */
    public function disableCustomerRegistration($observer)
    {
        $result = $observer->getResult();

        if ($result->getIsAllowed() === true) {
            $result->setIsAllowed(false);
        }
    }
}

Это позволяет разрешить регистрацию false и предотвращает отображение формы регистрации без каких-либо модификаций шаблона.

Надеюсь, это полезно!

0 голосов
/ 24 июля 2015

Всегда можно изменить маршрутизатор клиента, чтобы он указывал на модуль без контроллеров, например

 <frontend>
    <routers>
        <customer>
            <args>
                <module>MyModule_NullRouting</module>
            </args>
        </customer>
    </routers>
</frontend>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...