2010-06-02 22 views

Respuesta

2

Ok. Lo hice funcionar. Consulte la solución Hugues, hay dos modificaciones:

  1. añadir APP \ etc \ modules \ Mycompany_All.xml

    <?xml version="1.0"?> 
    <config> 
        <modules> 
         <Mycompany_Registrationremove> 
          <active>true</active> 
          <codePool>local</codePool> 
         </Mycompany_Registrationremove> 
        </modules> 
    </config> 
    
  2. modificar el archivo: app/código/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> 
    
+0

Whoups, olvidé el /etc/modules/Mycompany_All.xml :) Y la acción createPost – liquidity

5

Puede modificar la pantalla de inicio de sesión para eliminar el botón "Crear nueva cuenta". De esta forma, los usuarios existentes aún pueden iniciar sesión, pero no tienen forma de crear nuevas cuentas.

El archivo a modificar es /app/design/frontend/default/default/template/customer/form/login.phtml. Alrededor de la línea 41 verás <div class="col-1 new-users">. Comente todo el div para ocultar la sección Nuevo usuario de la página de inicio de sesión.

Editar:
No hay forma de que simplemente deshabilite el nuevo registro de usuario como lo está pidiendo. Hice un poco más de búsqueda, y todo lo que encontré fueron varias personas con sameidea como mías. Además de mi sugerencia original, me gustaría
a) eliminar la sección <customer_account_create> de /app/design/frontend/default/default/layout/custom.xml, y
b) eliminar las líneas relacionadas con el registro de/app/diseño/frontend/default/default/template/checkout/onepage/login.phtml.

+2

Bueno, esta es una forma sencilla de tratar con usuarios normales. Pero para los hackers avanzados, pueden hacerlo simplemente tecleando/customer/account/create/en la url para acceder a la página de creación de esa cuenta. ¿Hay alguna solución completa para eliminar la función de registro frontend? por cierto, simplemente no quiero cambiar la configuración de .htaccess. Solo quiero manejar este pequeño problema en un nivel más bajo en lugar de un nivel raíz. – Capitaine

+0

Debe tener una tienda asesina si la gente está pirateando para entrar ;-) Es una broma, entiendo que está buscando un enfoque integral y limpio. Desafortunadamente, no creo que haya uno. Ver mis ediciones arriba. – BenV

12

Otra posibilidad sería sobrecargar la acción del cliente/cuenta/crear y simplemente redirigir al usuario a la página de inicio cuando se invoca esta acción.

En un primer momento, simplemente haga lo que propuso Ben V. Se eliminará la posibilidad de ver la página de registro.

A continuación, cree un nuevo módulo en el que sobrecargará el AccountController.php.

1- Crear una nueva carpeta en app/code/local/ llamado Miempresa

2- Crear una nueva carpeta en app/code/local/Mycompany/ llamado Registrationremove

3- Crear app/code/local/Mycompany/Registrationremove/etc/

4- Crear app/code/local/Mycompany/Registrationremove/etc/config.xml

Copia y Pegar en 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- Crear app/code/local/Mycompany/Registrationremove/controllers

6- Crear 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- Crear app/code/local/Mycompany/Registrationremove/controllers/Customer/AccountController.php

copiar y pegar en 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- Crear app/code/local/Mycompany/Registrationremove/Helper/Data.php

Copiar y pegar en Data.php:

class Mycompany_Registrationremove_Helper_Data extends Mage_Core_Helper_Abstract 
{ 
} 

Ahora, cuando alguien trata de acceder al cliente/cuenta/crear/debería ser redirigido a la página de inicio.

Espero que haya ayudado :)

Hugues.

+0

hola, consulte http://stackoverflow.com/questions/2959131/how-to-disable-frontend-registration-in-magento/3995507#3995507 – Capitaine

+0

Esto funcionó. Sin embargo, puse AccountController.php bajo 'controladores /', no 'controladores/Cliente /' como se indica. –

+1

Funcionó también para mí, pero tenía que mantener AccountController.php en 'controller/Customer /', y cambiar el nombre de la clase a 'Mycompany_Registrationremove_Customer_Accountcontroller'. –

2

En la estructura de ejemplo anterior, el nombre de la clase controlador debe ser cambiado de

Mycompany_Registrationremove_AccountController clase extiende Mage_Customer_AccountController

a

Mycompany_Registrationremove_Customer_AccountController clase extiende Mage_Customer_AccountController

1

¿Tiene este método funciona para ver. 1.4.1.1?

Finalmente decidí omitir todos los pasos complicados y también modificar el register.phtml en \ app \ design \ frontend \ base \ default \ template \ customer \ form, además de los archivos que dijo BenV.

He eliminado el formulario y le cambió el título a "Registro de usuarios discapacitados" :)

+0

sí lo hace .... – Capitaine

+0

Sí, creo que esto puede ser una buena idea con el mensaje que muestra "El registro está deshabilitado" sin modificaciones innecesarias pero debe copiar el archivo principal en la ubicación de su tema como \ app \ design \ frontend \ YOUR-THEME \ default \ template \ customer \ form \ register.phtml para Registration y \ app \ design \ frontend \ YOUR-THEME \ default \ template \ customer \ form \ login.phtml para iniciar sesión – Anil

1

no pude conseguir ninguna de las soluciones publicadas aquí a trabajar, y se encontró que tenía que utilizar la siguiente sintaxis en la configuración .xml (frontend específicamente sintaxis routers):

<?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> 

Hay más información sobre este método aquí - http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/how_to_overload_a_controller

0

Uno siempre podría cambiar el router del cliente para apuntar a un módulo sin controladores, por ejemplo,

<frontend> 
    <routers> 
     <customer> 
      <args> 
       <module>MyModule_NullRouting</module> 
      </args> 
     </customer> 
    </routers> 
</frontend> 
0

Como una extensión de la respuesta de liquidez, un par de cambios más que haría para mejorar esto. En primer lugar, la expresión regular no coincide con la URL si no tiene una barra inclinada, por ejemplo. customer/account/create. Para corregir, los nodos "de" deben leer <![CDATA[#^/customer/account/create(/.*)?$#]]> y <![CDATA[#^/customer/account/createPost(/.*)?$#]]>.

En segundo lugar, he incluido un observador que se detecta el evento customer_registration_is_allowed (esto se llama en persistent/customer/form/login.phtml cuando se utiliza el tema de RWD de la función $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> 

Luego, en el observador:

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

Esto establece el registro falso y evita que se muestre el formulario de registro sin modificaciones de plantilla.

Espero que ayude esto!

Cuestiones relacionadas