Jose Braña Posted July 22, 2020 Share Posted July 22, 2020 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 More sharing options...
Prestafan33 Posted July 22, 2020 Share Posted July 22, 2020 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 More sharing options...
Jose Braña Posted July 31, 2020 Author Share Posted July 31, 2020 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 More sharing options...
Prestafan33 Posted August 1, 2020 Share Posted August 1, 2020 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 More sharing options...
Jose Braña Posted August 2, 2020 Author Share Posted August 2, 2020 (edited) 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 Edited August 2, 2020 by Jose Braña (see edit history) Link to comment Share on other sites More sharing options...
Prestafan33 Posted August 3, 2020 Share Posted August 3, 2020 Prueba así: {foreach from=$product.attributes item=attribute} {if $attribute.id_attribute==85} <li class="product-flag {$flag.feature}">{$attribute.name}</li>{break} {/if} {/foreach} Link to comment Share on other sites More sharing options...
Jose Braña Posted August 3, 2020 Author Share Posted August 3, 2020 Eres un crack! Funciona estupendamente. Muchas gracias @Prestafan33 Link to comment Share on other sites More sharing options...
gasparpulgas Posted September 4, 2020 Share Posted September 4, 2020 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now