Jump to content

[Solucionado] Tener Imagen De Perfil Para Empleados Sin Registrarse En La Web De Prestashop


AlexM4

Recommended Posts

Buenas tardes a todos,

 

He estado personalizando la página de mi web para tenerla más al estilo de la empresa y he visto que los empleados pueden tener una imagen de perfil, pero para que aparezca tienen que estar registrados a PrestaShop.com.

 

Mi versión de PrestaShop es la 1.6.1.0

 

Hay alguna manera de modificar el codigo de Prestashop (backoffice) para que se puedan subir una imagen para cada empleado, es decir, que en el mismo formulario donde se crea un empleado se pueda subir una imagen para su perfil y no se tengan que registrar en la web de PrestaShop para tener su foto

 

Muchas grácias por toda la ayuda que me podais ofrecer.

Edited by AlexM4 (see edit history)
Link to comment
Share on other sites

He estado haciendo pruebas con el codigo y aunque no es del todo lo que queria me sirve y hace lo que queria pero para cada empleado se tiene que modificar el codigo para añadir las condiciones para que coja la imagen que nosotros queramos para ese empleado.
 
Por si ha alguien le interesa, voy a poner lo que he hecho y en algun momento me gustaria hacer lo que ponia en el primer mensaje.
 
Versión de Prestashop usada: 1.6.1.0.
 
Para hacerlo se tiene que modificar el archivo employee.php de la carpeta /clases.
 
En ese archivo he modificado la función getImage.
 
Codigo original:

	public function getImage()
	{
		if (!Validate::isLoadedObject($this))
			return Tools::getAdminImageUrl('prestashop-avatar.png');
		return Tools::getShopProtocol().'profile.prestashop.com/'.urlencode($this->email).'.jpg';

	}

Lo que he hecho ha sido comentar esas linias y modificarlas por estas.

	public function getImage()
	{
                /*Codigo comentado*/
		/*if (!Validate::isLoadedObject($this))
 			return Tools::getAdminImageUrl('prestashop-avatar.png');
		return Tools::getShopProtocol().'profile.prestashop.com/'.urlencode($this->email).'.jpg';*/
                
                /*Modificación*/
		if ( $this->id == 1) {
			return Tools::getAdminImageUrl('avatar_empleados/a.png');
		}
		elseif ($this->id == 2) {
			return Tools::getAdminImageUrl('avatar_empleados/b.jpg');
		}
		elseif ($this->id == 3) {
			return Tools::getAdminImageUrl('avatar_empleados/c.gif');
		}
                /*Para más empleados solo se necesita copiar y pegar la ultima linia elseif{.....} y cambiarle el id de empleado, el nombre de la imagen y extension que tenga la imagen*/
	}

Para tenerlo más ordenado, he creado una carpeta en el directorio de imagenes /img llamada avatar_empleados, asi sera más sencillo saber donde se tiene que subir las imagenes de los avatares.

 

De esta forma no se tiene porque estar registrado en Prestashop.com y se puede tener una imagen para tu avatar.

 

Espero que les sirva y espero poder mejorarlo para no tener que modificar cada vez el codigo cuando se tiene un empleado nuevo pero también es verdad que no hay el mismo numero de empleados que de clientes  :lol: 

Link to comment
Share on other sites

  • 3 months later...

Buenas tardes a todos,

 

He estado personalizando la página de mi web para tenerla más al estilo de la empresa y he visto que los empleados pueden tener una imagen de perfil, pero para que aparezca tienen que estar registrados a PrestaShop.com.

 

Mi versión de PrestaShop es la 1.6.1.0

 

Hay alguna manera de modificar el codigo de Prestashop (backoffice) para que se puedan subir una imagen para cada empleado, es decir, que en el mismo formulario donde se crea un empleado se pueda subir una imagen para su perfil y no se tengan que registrar en la web de PrestaShop para tener su foto

 

Muchas grácias por toda la ayuda que me podais ofrecer.

 

Hola:

 

Es mi primera aportación; al ver que no hay temas al respecto, te cuento lo que hice.

 

1. Siguiendo la ruta dentro de mi tienda: tienda/controllers/admin/AdminEmployeesController.php

 

2. Abrí el archivo: "AdminEmployeesController.php"

 

3. Comenté el array original siguiente:

/*inicia comentario de original
  array(
  'type' => 'html',
  'name' => 'employee_avatar',
  'html_content' => '<div id="employee-thumbnail"><a href="http://www.prestashop.com/forums/index.php?app=core&module=usercp" target="_blank" style="background-image:url('.$obj->getImage().')"></a></div>
  <div class="alert alert-info">'.sprintf($this->l('Your avatar in PrestaShop 1.6.x is your profile picture on %1$s. To change your avatar, log in to PrestaShop.com with your email %2$s and follow the on-screen instructions.'), '<a href="http://www.prestashop.com/forums/index.php?app=core&module=usercp" class="alert-link" target="_blank">PrestaShop.com</a>', $obj->email).'</div>',
  ),
termina comentario de original*/

4. Lo dupliqué abajo y modificándolo para que quede el siguiente:

array(
'type' => 'html',
'name' => 'employee_avatar',
'html_content' => '<div><img src="../img/employee100x100.png"></div>',
),
array(
'type' => 'text',
'class'=> 'fixed-width-xxl',
'prefix' => '<i class="icon-envelope-o"></i>',
'label' => $this->l('Email address'),
'name' => 'email',
'required' => true,
'autocomplete' => false
),

Por lo que suplanté el contenido únicamente de 'html_content':

'html_content' => '<div><img src="../img/employee100x100.png"></div>',

En donde el nombre: "employee100x100.png" es el que tendrás que cambiar por el nombre de tu archivo y su respectiva extensión... que en mi caso es de 100x100px en .png

 

¡Y listo!

 

*El único detalle es que la misma imagen se repetirá para todos los empleados. Si encuentras alguna manera de personalizar a modo de colocar una imagen distinta para cada empleado, por favor no dudes en comentarnos para enriquecer el tema.*

 

Saludos.  :D

Link to comment
Share on other sites

Tambien se puede hacer como habeis comentado  subiendo las imagenes de cada empleado a la carpeta admin . Se puede hacer tambien mediante subida de la imagen desde el backoffice pero haria falta ya crear registros en la base de datos 

 'html_content' => '<div class="block"><img src="'.$this->context->link->getMediaLink(_PS_IMG_.'admin/employee-'.$this->context->employee->id.'.jpg')
.'"width="100" height="100"></div>' 

nombrando las imagenes segun el id del empleado asi por ejemplo

employee-1.jpg

Y para que se muestre en el header del backoffice, en 

adminxxx\themes\default\template\header.tpl

cambiamos 

<img class="imgm img-thumbnail" alt="" src="{$employee->getImage()}" width="32" height="32" />

por

<img class="imgm img-thumbnail" alt="" src="../img/admin/employee-{$employee->id}.jpg" width="96" height="96"
 />

y lo mismo un poco mas abajo en 

<img class="imgm img-thumbnail" alt="" src="{$employee->getImage()}" width="96" height="96" />

por

<img class="imgm img-thumbnail" alt="" src="../img/admin/employee-{$employee->id}.jpg" width="32" height="32" />
  • Like 1
Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...