Post Top Ad

Your Ad Spot

miércoles, 26 de agosto de 2020

Tienda de pedidos privados en PrestaShop y treinta abejas parte 1: verificación manual del cliente

Versión de texto

Usaré PrestaShop 1.6 para la demostración, pero la modificación también funciona en treinta abejas. Tenga en cuenta que NO funciona en PrestaShop 1.7.
Abra controladores / front / AuthController.php
Busque el siguiente código, alrededor de la línea 455. Si no está en ese paradero, asegúrese de cambiar cada instancia
1
$customer->active = 1;
establecido en 0, para que el usuario no pueda realizar ninguna acción de inmediato.
Ahora también queremos darle algunos comentarios al usuario, así que redirigiémoslo a una página personalizada. Desplácese hacia abajo algunas líneas y verá todas estas redirecciones:
1
2
3
if (($back = Tools::getValue('back')) && $back == Tools::secureReferrer($back)) {
                            Tools::redirect(html_entity_decode($back));
                        }
Y agrega uno nuevo antes
1
Tools::redirect($this->context->link->getPageLink('welcome'));
Por supuesto, esta página aún no existe, pero la crearemos en un momento.
Sin embargo, antes de eso, tenemos que ocuparnos de un pequeño problema. Dado que el usuario ha sido creado pero configurado como inactivo, el sistema lo trata como prohibido de forma predeterminada. Incluso si vamos a redirigir a una página, instantáneamente seremos expulsados ​​de la sesión y redirigidos al inicio de sesión. Queremos crear una excepción para que se pueda mostrar la página de bienvenida.
Sigamos adelante y abramos la clase de cliente, por lo que classes / customer.php
Busque el siguiente método:
1
public static function isBanned($id_customer)
Y al principio, agregue:
1
2
if(Context::getContext()->controller->php_self == 'welcome')
    return false;
¡Eso está arreglado! Ahora, para nuestra página de bienvenida, crearé un nuevo controlador y un archivo de plantilla en la carpeta del tema.
Vayamos a controllers / front, y creemos primero un nuevo archivo PHP, llamado WelcomeController.php:
1
2
3
4
5
6
7
8
9
10
11
class WelcomeControllerCore extends FrontController
{
    public $php_self = 'welcome';
 
 
    public function initContent()
    {
        parent::initContent();
        $this->setTemplate(_PS_THEME_DIR_.'welcome.tpl');
    }
}
Luego, en la carpeta del tema, cree un nuevo archivo llamado welcome.tpl, agregando el siguiente código dentro
1
2
3
4
5
6
{capture name="path"} {l s='Welcome'}{/capture}
<h1>{l s='Welcome to'} {$shop_name}! </h1>
<hr>
<p>
    {l s='Your account is currently under review, you will receive an email as soon as it is validated'}
</p>
Así que sigamos adelante y probémoslo ahora ... pero antes borremos el caché borrando cache / class_index.php, ya que agregamos un nuevo controlador y el sistema no lo leería de otra manera.
El siguiente paso es enviar un correo electrónico cuando un estado cambia a activo para el cliente, en la oficina administrativa.
Controladores abiertos / admin / admincustomerscontroller.php
Agregaremos un nuevo método, que se hereda de la clase admincontroller:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dieciséis
public function processStatus()
{
    if($object = parent::processStatus()) {
        if(get_class($object) == 'Customer' && $object->active) // the customer has been activated, send out an email
        {
            Mail::Send($object->id_lang, 'account_activated', $this->l('Your account has been activated'),
                ['name' => $object->firstname .' '. $object->lastname],
            $object->email,
            $object->firstname .' '. $object->lastname,
            Configuration::get('PS_SHOP_EMAIL'),
            Configuration::get('PS_SHOP_NAME'));
        }
    }
 
   return $object;
}
Por supuesto, no existe tal plantilla de correo electrónico, por lo que tenemos que crearla. Sugiero copiar uno existente, como la confirmación del pedido, y agregar texto nuevo, solo para ser más rápido. El código es diferente para cada plantilla, solo tenga en cuenta agregar la variable {nombre} dentro de él, ¡para que se muestre el nombre del cliente!
Esto es todo para la parte 1, asegúrese de probar el correo electrónico también, ya que a veces fallan por razones extrañas, si no lo ve venir, verifique tres veces los nombres de las plantillas y asegúrese de que estén ubicados en la ruta correcta para cada uno. idioma que usa.
En la segunda parte veremos cómo evitar pedidos en caso de que un cliente no esté registrado, lo cual es fundamental para no romper el sistema si tienes un checkout de una página, ya que ahora mismo mostraría un error.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas