Jump to content

TITULO DE PRODUCTO CON ATRIBUTOS y ETIQUETAS NUEVOS


Jose Braña

Recommended Posts

Hola buen día. Estoy terminando de configurar mi sitio web y tengo una duda:.

1)
Cuando selecciono una combinación de productos en la lista de productos, accedo a la página del producto y hay una combinación preseleccionada de atributos del producto, pero el título del producto es genérico (sin atributos). De esta manera, no creo que sea tan claro para el usuario qué producto está seleccionado como si el título del producto lo especificara. ¿Creéis que podría modificar algunos tpl para ello, alguien podría echarme una mano?

2) Por otra parte, nosotros vendemos teléfonos reacondicionados y nuevos. En PS, la etiqueta "nueva" en la hoja de producto (en el listado) es confusa porque se refiere a "novedoso" y no nuevo "sin estrenar" ... Por lo tanto, estamos interesados en dejar en claro qué productos son nuevos y cuáles no ...
Por otra parte no puedo definir si son nuevos o reacondicionados en las combinaciones de producto... Por eso hemos hecho un atributo a parte  con los valores de los estados de conservación de los teléfonos "nuevo|reacondicionado|muy bueno|bueno..."

El caso es que me gustaría ocultar en la ficha de producto la etiqueta "nuevo" (de PS) esto no tendré problema con CSS y un display:none... pero luego querría añadir una etiqueta nueva con el valor del campo del atributo "estado de conservación"... para que en los listados de productos pueda ver (esquina superior/izquierda) si son nuevos|reacondicionados|buenos... etc

 

Sabéis sobre que plantilla tengo que trabajar?

Alguna idea para que muestre una etiqueta con un valor concreto de un atributo?

 

Espero que se haya entendido algo...

Gracias por vuestros consejos

Link to comment
Share on other sites

Por partes:

1- Para modificar el título del producto (dentro de la página de producto) el archivo que debes modificar es /themes/nombre-de-tu-tema/templates/catalog/product.tpl. Normalmente el título está especificado dentro del bloque "page_title", aunque claro, los detalles exactos son diferentes en cada tema. Añadirle ya luego el nombre de la combinación elegida puede tener su complicación, debido al modo en que gestiona Prestashop las combinaciones.

2- Cambiar el texto de las etiquetas es muy fácil, vete a traducciones del tema y ahí puedes modificarlo. Por ejemplo, en vez de "nuevo" puedes poner "recién llegado", o "novedad". O simplemente ocultar la etiqueta si lo prefieres. Para añadir otra etiqueta con el valor de un atributo, en la página de producto se hace en el mismo archivo que he comentado antes (product.tpl). Para los listados de productos deberás editar el archivo /themes/nombre-de-tu-tema/templates/catalog/_partials/miniature/product.tpl.

Por ejemplo, para extraer el valor de una característica del producto para mostrarla en una etiqueta, desde el mismo TPL puedes hacer algo así:

{if isset($product.features)}
  {foreach from=$product.features item=feature}
    {if $feature.id_feature==23}
      {$featVal = $feature.value}{break}
    {/if}
  {/foreach}
{/if}

Se supone que "23" sería el ID de la característica a extraer, y su valor lo tendrías en la variable $featVal.

Es un poco "guarro" meter eso en un TPL, pero la alternativa es hacer overrides de los controladores o las clases, lo cual es bastante más engorroso.

Link to comment
Share on other sites

  • 2 weeks later...

Lo primero muchísimas gracias por contestarme... Y disculpa que yo haya tardado en contestarte a ti (me había tomado unos días de vacaciones después de un año muy duro).

En mi tema tenia 

  {block name='product_flags'}
            <ul class="product-flags">
                {foreach from=$product.flags item=flag}
                    <li class="product-flag {$flag.type}">{$flag.label}</li>
                {/foreach}
           	
            </ul>
        {/block}

y he insertado tu código, de tal manera que ahora me queda así...

  {block name='product_flags'}
            <ul class="product-flags">
                {foreach from=$product.flags item=flag}
                    <li class="product-flag {$flag.type}">{$flag.label}</li>
                {/foreach}
                
                {if isset($product.features)}
				{foreach from=$product.features item=feature}
				{if $feature.id_feature==7}
				<li class="product-flag {$flag.feature}">{$feature.value}</li>{break}
				{/if}
				{/foreach}
				{/if}
				
            </ul>
        {/block}

Tengo un pequeño problema aún... de esta manera me muestra la etiqueta con la característica de id 7 (que en mi caso es tipo de tarjeta; nano/micro SD...etc) pero realmente debería mostrar la etiqueta cuando en ATRIBUTO de ID=7 (Estado de conservación) tiene el valor ID=85 (nuevo)

entiendo que tendría que cambiar el $product.features por.... ¿?

Gracias

 

 

Link to comment
Share on other sites

Los atributos son más complicados de manejar, porque van por grupos. Dentro de la ficha de producto, $groups es un array donde cada elemento es un grupo de atributos (por ejemplo, en tu caso te interesaría que el id del grupo fuera 7). Y dentro de ese grupo, el índice attributes contiene un array con los elementos (ahí necesitarías que el índice del array fuera 85).

{foreach from=$groups key=id_attribute_group item=group}
	{if $id_attribute_group==7}
		{foreach from=$group.attributes key=id_attribute item=attribute}
			{if $id_attribute==85}
				<li class="product-flag {$flag.feature}">{$attribute.name}</li>{break}
			{/if}
		{/foreach}
	{/if}
{/foreach}

Ojo, no lo he probado, pero debería ser algo como esto.

Link to comment
Share on other sites

 Algo se me escapa con este código porque no consigo que funcione


        {block name='product_flags'}
<h1>TEST1</h1>
            <ul class="product-flags">
                {foreach from=$product.flags item=flag}
                    <li class="product-flag {$flag.type}">{$flag.label}</li>
                {/foreach}
                
                {foreach from=$groups key=id_attribute_group item=group}
				{if $id_attribute_group==7}
				<h1>TEST2</h1>
					{foreach from=$group.attributes key=id_attribute item=attribute}
						{if $id_attribute==85}
							<h1>TEST3</h1>
							<li class="product-flag {$flag.feature}">{$attribute.name}</li>{break}
						{/if}
					{/foreach}
				{/if}
				{/foreach}

            </ul>
            
            
        {/block}

He tirado unos h1 (Test1, 2 y 3) para ver hasta donde recorro los foreach y los if y solo me muestra Text1  y es raro porque no entiendo que no muestre al menos el TEXT 2.

No se si se te ocurre algo? O algún sitio dónde poder encontrar más doc?

https://www.molaphone.com/es/xiaomi-18?q=Estado+de+Conservación-Nuevo

 

Captura de pantalla 2020-08-02 a las 19.53.56.png

Edited by Jose Braña (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Hola tios, estupendo el cambio que se ve en la tienda https://www.molaphone.com/, disculpa que retome el caso, es que quiero algo igual, cambiar la etiqueta que dice NUEVO por lo que comentas de ponerle algo así como RECIEN LLEGADO, le cambio en TRADUCCIONES/TRADUCCIONES DEL TEMA y no lo encuentro buscando la palabra NEW, si me voy a OTRAS TRADUCCIONES ahí si lo encuentro, pero le cambio , lo guardo y no lo aplica, ya le moví en VACIAR LA CACHE y nada que me lo pone.

Uso el tema CLASICC Ver 1.7.6.7

Amigos, podrían explicármelo mas despasito?, donde cambio el nombre de las etiquetas en el código?, y ese código que se pasaron es para ponerlo en la ficha del producto?

De antemano muchas gracias por su ayuda, desde México.

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