Jump to content

¿Cómo ocultar un módulo en el idioma secundario de mi tienda? [SOLUCIONADO]


ales699

Recommended Posts

31 minutes ago, ales699 said:

La cosa es que tengo instalado las últimas noticias del blog en la home de mi página y sólo lo actualizo en Español y Inglés. ¿Podría ocultar este módulo en el resto de idiomas de mi tienda?

 

Utilizo Prestashop 1.6.1.13

 

Gracias

 

Por config no es posible deshabilitar un módulo a nivel de idioma. Tendrías que tocar el código.

Link to comment
Share on other sites

Si es el hook donde se instala el módulo, puedes hacerlo en la propia clase del módulo en un condicional.

Es decir, dentro de la función del hook del módulo, hacer algo así:


		$iso_code = $this->context->language->iso_code;
		/* Idioma en el que no quieras que apareza */
		if ($iso_code=="en")
		return;

Un ejemplo rapido, un módulo que se muestra en el "displayHome", cuanto te metes dentro de la clase del módulo, veras por ejemplo una función parecia a la siguiente:

 

public function hookdisplayHome($params)
	{
	
		$iso_code = $this->context->language->iso_code;
		/* Idioma en el que no quieras que apareza */
		if ($iso_code=="en")
		return;
		
		lineas de codigo que existan....
		.......
		.... 

		return $this->display(__FILE__, 'xxxx.tpl', $this->getCacheId());
		
	}

La otra opción, mas chapuzera es hacerlo dentro del "propio tpl" del módulo, con:

 

{if $cookie->id_lang=='id_idioma'} .... {/if}

Dicho esto...

Esto que te digo, como dices que usas Prestashop 1.6, te indico que es para Prestashop 1.6. (lo digo para futuros visitantes, esto es para la 1.6 ya que el que pregunta tiene la 1.6, para la 1.7 el tema de algunas variables cambia en algunas cuestiones)

 

Dicho esto, solo te he puesto un par de ejemplo de los muchos que puedes encontrar.

 

 

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

{if $cookie->id_lang=='id_idioma'} .... {/if}

Este método me parece más fácil aunque sea algo chapuza, ¿hay algún inconveniente por usar este respecto al otro?

 

¿Y cómo puede hacer para que aparezca en dos idiomas? Es que sólo di puesto uno.

 

Muchas gracias por las respuestas :)

Link to comment
Share on other sites

17 minutes ago, ales699 said:

{if $cookie->id_lang=='id_idioma'} .... {/if}

Este método me parece más fácil aunque sea algo chapuza, ¿hay algún inconveniente por usar este respecto al otro?

 

¿Y cómo puede hacer para que aparezca en dos idiomas? Es que sólo di puesto uno.

 

Muchas gracias por las respuestas :)

 

El primer método es mejor, por que corta directamente la ejecución, ,cuando haces un return, en el hook del módulo:

 

public function hookdisplayHome($params)
	{
	
		$iso_code = $this->context->language->iso_code;
		/* Idioma en el que no quieras que apareza */
		if ($iso_code=="en")
		return;
		
		lineas de codigo que existan....
		.......
		.... 

		return $this->display(__FILE__, 'xxxx.tpl', $this->getCacheId());
		
	}

Aquí estas diciendo si el idioma es el "ingles" no se muestra directamente el contenido de este "hook". (El return, hace que se corte la ejecución)
Para el resto de idiomas si se mostraria. (el español, el chino, los que tengas activados)

El condiciona en "php" de if ($iso_code=="en") siempre puedes  tocarlo, con un "or" es decir if ($iso_code=="en" || $iso_code=="es") en ese caso estarias diciando si el idioma es el ingles o el español se va a ejecutar el "return" y se corta al ejecución y no se muestra.

-----------------------

En Smarty (en el tpl del módulo, que dices que te viene mejor hacerlo asi, aunque yo no lo recomiendo, para eso mejor con la clase del modulo)

De todos modos te dejo ejemplo de Smarty:

Ejemplo, quiero que se muestre el contenido interior del tpl, menos en el idioma con ID -> X

{if $cookie->id_lang!='X'} 

Aquí colocas el contenio del TPL

 {/if}

Fijate que hemos usado  != para decir que el if se ejecute en todos menos en 'X'

 

Tambien puedes usar el "or" -> || en el condicional (es decir si esto o lo otro se ejecuta ), pero vamos en tu caso, creo que quieres que se muestre en todos los idiomas menos en una, por lo tanto con el != seria suficiente

 

Tambien puedes jugar con los "else" en los if, etc..

-----

 

PD: Fijate que la sintaxis es diferente en Smarty que en PHP

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...