Jump to content

Añadir palabra "Desde" antes del precio en lista de productos


Jessy

Recommended Posts

Hola!

 

He leído varias soluciones a esta modificación, una de ellas comprobada y funciona, pero no es exactamente lo que quiero. (esta es: https://www.prestashop.com/forums/topic/364902-solucionado-a%C3%B1adir-la-palabra-desde-delante-del-precio-de-productos-con-combinaciones/ )

 

Lo que yo necesito es que se muestre la palabra "desde" delante del precio en la lista de productos, pero  no de todos! Tengo todos o casi todos mis productos con combinaciones, así que esa solución no me sirve, ya que tengo varios productos con combinaciones en los que no varía el precio una vez entras en dicho producto.

 

Hay alguna solución para escoger en qué productos quiero poner "desde" delante del precio? Sería en los productos que tienen un incremento

 

Gracias!

Link to comment
Share on other sites

Lo que quieres hacer es más complicado ya que hay que añadir en el CategoryController.php el acceso a la informacion de las combinaciones y atributos

getProductAttributeCombinations

Para luego poder condicionar el texto informativo con la variable

unit_price_impact
Link to comment
Share on other sites

La manera mas sencilla de hacerlo sin tener que modificar archivos del core de Prestashop es hacerlo de esta manera:

- Descargate e instala el modulo adjunto. Es un modulo creado por vekia para mostrar las combinaciones de cada producto en el listado de productos y que está modificado para crear el texto "Precio desde" solo en los productos que tengan combinaciones con incremento en el precio.

 

-Luego en el archivo

\themes\tu_tema\product-list.tpl

donde quieras que aparezca el texto, colocas esto

 {Hook::exec('displayProductOnList', $product)}

El mejor sitio es encima del div del precio

attributes.zip

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

La manera mas sencilla de hacerlo sin tener que modificar archivos del core de Prestashop es hacerlo de esta manera:

- Descargate e instala el modulo adjunto. Es un modulo creado por vekia para mostrar las combinaciones de cada producto en el listado de productos y que está modificado para crear el texto "Precio desde" solo en los productos que tengan combinaciones con incremento en el precio.

 

-Luego en el archivo

\themes\tu_tema\product-list.tpl

donde quieras que aparezca el texto, colocas esto

 {Hook::exec('displayProductOnList', $product)}

El mejor sitio es encima del div del precio

 

Voy a probar!! Gracias!

Link to comment
Share on other sites

Perdón, ¿dónde exactamente? En la línea 43?

{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2013 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}

{if isset($products)}
	<!-- Products list -->
			{assign var='nbItemsPerLine' value=3}
			{assign var='nbLi' value=$products|@count}
			{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
<ul id="product_list" class="list row">
{foreach from=$products item=product name=products}
	{math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo}
    {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
<li class="ajax_block_product span3 num-{$smarty.foreach.products.iteration}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} omega{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} alpha{/if} {if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)}last_line{/if}">
		<a href="{$product.link|escape:'htmlall':'UTF-8'}" class="product_img_link" title="{$product.name|escape:'htmlall':'UTF-8'}">
        	<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" />
        </a>
		<div class="center_block">
			<div class="product_flags clearfix">
				{if isset($product.new) && $product.new == 1}<span class="new title_shop">{l s='New'}!</span>{/if}
                {if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}             
                {if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
                <span class="availability title_shop">{if ($product.allow_oosp || $product.quantity > 0)}<!-- {l s='Available'} -->
                {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}{l s='Product available with different options'}{else}{l s='Out of stock'}{/if}</span>{/if}
				{if isset($product.online_only) && $product.online_only}<span class="online_only title_shop">{l s='Online only'}</span>{/if}
                {/if}  
			</div>
            <div class="clear"></div>
            <h5><a class="product_link" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:75:'...'}</a></h5>
            <p class="product_desc">{$product.description_short|strip_tags:'UTF-8'|truncate:450:'...'}</p>
            <p class="product_desc mob">{$product.description_short|strip_tags:'UTF-8'|truncate:90:'...'}</p>
            <p class="product_desc mob2">{$product.description_short|strip_tags:'UTF-8'|truncate:180:'...'}</p>  
		</div>																				 
		<div class="right_block">
        	{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale title_shop">{l s='On sale!'}</span>
			{elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount title_shop">{l s='Reduced price!'}</span>{/if}
			{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
            {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
            <span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if}  
			{/if}	 
           {if isset($comparator_max_item) && $comparator_max_item && !isset($instant_search)}
				<p class="compare checkbox choices-thin clearfix">		
                <input type="checkbox"  class="comparator" id="comparator_item_{$product.id_product}" value="comparator_item_{$product.id_product}" 
                {if isset($compareProducts) && in_array($product.id_product, $compareProducts)}checked="checked"{/if} /> 
				<label for="comparator_item_{$product.id_product}">{l s='Select to compare'}</label></p>
			{/if}
            <div class="clear noneclass"></div>
				{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.minimal_quantity <= 1 && 					$product.customizable != 2 && !$PS_CATALOG_MODE}
					{if ($product.allow_oosp || $product.quantity > 0)}
						{if isset($static_token)}
							<a class="ajax_add_to_cart_button exclusive btn_add_cart" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}&token={$static_token}", false)}" title="{l s='Add to cart'}">
                            <span>{l s='Add to cart'}</span>
                           </a>
						{else}
							<a class="ajax_add_to_cart_button exclusive btn_add_cart" rel="ajax_id_product_{$product.id_product|intval}" href="{$link->getPageLink('cart',false, NULL, "add&id_product={$product.id_product|intval}", false)} title="{l s='Add to cart'}">
                            <span>{l s='Add to cart'}</span>
                            </a>
						{/if}						
					{else}
						<span class="exclusive">{l s='Add to cart'}</span>
					{/if}
				{/if}
			<a class="button" href="{$product.link|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a>          
		</div>
	</li>
	{/foreach}
<script>
(function($) {
$(function() {
	function createCookie(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	function eraseCookie(name) {
		createCookie(name,"",-1);
	}
	$('ul.product_view').each(function(i) {
		var cookie = readCookie('tabCookie'+i);
		if (cookie) $(this).find('li').eq(cookie).addClass('current').siblings().removeClass('current')
			.parents('#center_column').find('#product_list').addClass('list').removeClass('grid').eq(cookie).addClass('grid').removeClass('list');
	})
	$('ul.product_view').delegate('li:not(.current)', 'click', function(i) {
		$(this).addClass('current').siblings().removeClass('current')
		.parents('#center_column').find('#product_list').removeClass('grid').addClass('list').eq($(this).index()).addClass('grid').removeClass('list')	
		var cookie = readCookie('tabCookie'+i);
		if (cookie) $(this).find('#product_list').eq(cookie).removeClass('grid').addClass('list').siblings().removeClass('list')
		var ulIndex = $('ul.product_view').index($(this).parents('ul.product_view'));
		eraseCookie('tabCookie'+ulIndex);
		createCookie('tabCookie'+ulIndex, $(this).index(), 365);
	})
})
})(jQuery)
    </script>
    </ul>
{/if}
Link to comment
Share on other sites

      {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
 {Hook::exec('displayProductOnList', $product)}

            <span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if}  
			{/if}	

Ahi puede quedar bien

Link to comment
Share on other sites

Perfecto! Vaya aportacion! Muchas Gracias a VEKIA Y VENTURA!

Fonciona de maravilla en 1.6.13 ... pero solo no consigo visualizar  la traducion del modulo Atribut ... pongo en ES = Precio Desde , y en En= Price From ... pero solo aparece " Vosa nova" :rolleyes::D

 

Pero hasta ahora es la mejor solucion que he encontrado acerca de este tema .... tendria que ser obligatorio en la version nativa de prestashop.

Link to comment
Share on other sites

Perfecto! Vaya aportacion! Muchas Gracias a VEKIA Y VENTURA!

Fonciona de maravilla en 1.6.13 ... pero solo no consigo visualizar  la traducion del modulo Atribut ... pongo en ES = Precio Desde , y en En= Price From ... pero solo aparece " Vosa nova" :rolleyes::D

 

Pero hasta ahora es la mejor solucion que he encontrado acerca de este tema .... tendria que ser obligatorio en la version nativa de prestashop.

Cierto, no se podia traducir el texto raro que aparecia, esta subido de nuevo el modulo en el post #6 con la nueva version 

Link to comment
Share on other sites

jessy ponlo en el mismo sitio donde te dije pero en el div del right block pensaba que tenias la vista en grid

	<div class="right_block">
        	{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="on_sale title_shop">{l s='On sale!'}</span>
			{elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}<span class="discount title_shop">{l s='Reduced price!'}</span>{/if}
			{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
            {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
            {Hook::exec('displayProductOnList', $product)}
 <span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span>{/if}  

Y con este modulo solo se visualiza el aviso en el product-list.tpl

Edited by ventura (see edit history)
  • Like 1
Link to comment
Share on other sites

Funciona de maravilla ahora! B) 

Otra vez muchas gracias por esta buen aportación. :wub:

Al final pongo en español “ Desde “ y en Ingles “From”

Pero este modulo esta modificado por “ventura” o por Vekia?

Su única función es para poner “ precio desde” o tiene otra utilidad  ¿?

Link to comment
Share on other sites

El modulo creado por vekia permite mostrar las combinaciones disponibles en el listado de productos.

https://www.prestashop.com/forums/topic/314731-available-product-sizes-on-product-listsolved/

 

Este modulo basicamente da acceso a la funcion

getAttributeCombinations 

 Que es la funcion que nos permite acceder a toda la informacion sobre los atributos y combinaciones de los productos,

Link to comment
Share on other sites

Sí. Si quieres mira en mi tienda, al escoger una talla varía el precio (también puedes escoger color pero en ese caso no varía el precio)

Con cualquier variacion de precio se aplicaria la visualizacion del mensaje. Lo siento pero no puedo decir nada mas

Link to comment
Share on other sites

Hola, he estado investigando el tema porque a mi personalmente el módulo no me funcionaba correctamente. Planteo varias opciones editando el fichero product-list.tpl del tema que estemos usando. El ejemplo que uso es para la plantilla por defecto, aunque se puede usar sobre cualquier tema.

 

Para que la palabra "desde" salga antes del precio en TODOS los productos basta con añadir lo siguiente al código:

<div class="content_price" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
                                {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
                                    <span itemprop="price" class="price product-price">
                                        {l s='Desde '}{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}
                                    </span>

El siguiente ejemplo es para que salga la palabra "Desde" en SOLO los productos que usan combinaciones. Habría que modificar el código de esta manera. El ejemplo lo he aplicado a otro tema personalizado de un cliente:

<div itemprop="offers" itemscope itemtype="http://schema.org/Offer" class="content_price">
                            {if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
                                <span itemprop="price" class="price product-price{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0} product-price-new{/if}">                                                                   
                                    {if !$priceDisplay && $product.text_fields>0}                                        
                                        {l s='Desde '}{convertPrice price=$product.price}
                                    {elseif !$priceDisplay && $product.text_fields==0}
                                        {convertPrice price=$product.price}                                      
                                    {else}
                                        {convertPrice price=$product.price_tax_exc}
                                    {/if}
                                </span>
                                <meta itemprop="priceCurrency" content="{$currency->iso_code}" />
                                {if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0}
                                    {hook h="displayProductPriceBlock" product=$product type="old_price"}
                                    <span class="old-price product-price">
                                        {displayWtPrice p=$product.price_without_reduction}
                                    </span>

El último ejemplo es para los casos que necesiten poner alguna palabra como "Precio unitario" delante del precio una vez dentro del producto. Para ello necesitamos modificar el fichero product.tpl de esta manera:

{if isset($adminActionDisplay) && $adminActionDisplay}
			<div id="admin-action">
				<p>{l s='This product is not visible to your customers.'}Precio unitario
					<input type="hidden" id="admin-action-product-id" value="{$product->id}" />
					<input type="submit" value="{l s='Publish'}" name="publish_button" class="exclusive" />
					<input type="submit" value="{l s='Back'}" name="lnk_view" class="exclusive" />
				</p>
				<p id="admin-action-result"></p>
			</div>
		{/if}

Espero que os sirva o al menos orientaros en vuestros casos más concretos.

 

Gracias.

Link to comment
Share on other sites

He probado a eliminar el precio específico de uno de los productos y volverlo a aplicar pero sigue sin salir nada.

 

Si borro las combinaciones y vuelvo a ponerlas ahora, crees que aparecerá?

Link to comment
Share on other sites

He probado a eliminar el precio específico de uno de los productos y volverlo a aplicar pero sigue sin salir nada.

 

Si borro las combinaciones y vuelvo a ponerlas ahora, crees que aparecerá?

 

Deberia de funcionarte según los tienes Jessy, solo con tener una combinacion con incremento en el precio se muestra el texto

Link to comment
Share on other sites

Hola Ventura-

He actualizado con presta 1.6.0.14 y no consigo a volver que funcione! :unsure:

He vuelto a instalar de nuveo -  Product attributes impact price v1.0.9

he editado de nuevo el tpl segun la linea 69 y 117:

 <!-- palabra desde > -->
                                {Hook::exec('displayProductOnList', $product)}
                                    <span itemprop="price" class="price product-price">
                                        {if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}
                                    </span>                                   

Lo mismo mi template de presta maker necesita estar actualizado!!!

 

Un saludo...

Link to comment
Share on other sites

Hola todos!

Sigue  sin funcionar! :( ... estoy con el tpl volviendome loco.

Algo raro que he descubierto :ph34r:

a ver si ventura me puede aclarar :)

He descargado el ultimo fichero de attributes.zip

lo he instalado en 2 tiendas - 1 con 1.6.013 - y otra con 1.6.014 -

De ahi que el nombre del modulo cambia??!! :unsure:

en la tienda 1.6.013 se llama  IMPACT PRICE v1.09

en la tienda 1.6.014 se llama  PRODUCTE ATTRIBUTES IMPACT PRICE v1.09

 

Otra cosita rara es que en mis editor textWrangler y otros la frase de VENTURA

{Hook::exec('displayProductOnList', $product)}

aparece todo en Negro! no se si tiene algo de importancia!!! pero bueno en vista de mi nivel ... prifiero preguntar... si por casualida tiene que aparecer con colores azul , verde...???

 

GRACIAS.. eso es como un parto!!! jijijij si lo conseguimos lo tenemos que llevar al sr. prestashop para que lo integra en su proxima version!! :D

Link to comment
Share on other sites

Otra vez! yo :)

Para los amantes de códigos! ahí va 219 líneas del  product-list.tpl sacado de un tema adaptado 1.6.014

Si alguien puede ayudarme y decirme que esta mal ... en línea 69 y 129 ... le estaré muy agradecido :wub:

Aporte pequeño -- línea 84-95    --  quitar una cosa horrible ... es AVAILABILITY a la derecha de precio ... :lol:

Buen ahí va el código!

GRACIAS A TODOS POR ADELANTADO

{*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/afl-3.0.php  Academic Free License (AFL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*}
{if isset($products) && $products}
	{*define number of products per line in other page for desktop*}
	{if $page_name !='index' && $page_name !='product'}
		{assign var='nbItemsPerLine' value=3}
		{assign var='nbItemsPerLineTablet' value=2}
		{assign var='nbItemsPerLineMobile' value=3}
	{else}
		{assign var='nbItemsPerLine' value=4}
		{assign var='nbItemsPerLineTablet' value=3}
		{assign var='nbItemsPerLineMobile' value=2}
	{/if}
	{*define numbers of product per line in other page for tablet*}
	{assign var='nbLi' value=$products|@count}
	{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
	{math equation="nbLi/nbItemsPerLineTablet" nbLi=$nbLi nbItemsPerLineTablet=$nbItemsPerLineTablet assign=nbLinesTablet}
	<!-- Products list -->
	<ul{if isset($id) && $id} id="{$id}"{/if} class="product_list grid row{if isset($class) && $class} {$class}{/if}">
	{foreach from=$products item=product name=products}
		{math equation="(total%perLine)" total=$smarty.foreach.products.total perLine=$nbItemsPerLine assign=totModulo}
		{math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineTablet assign=totModuloTablet}
		{math equation="(total%perLineT)" total=$smarty.foreach.products.total perLineT=$nbItemsPerLineMobile assign=totModuloMobile}
		{if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
		{if $totModuloTablet == 0}{assign var='totModuloTablet' value=$nbItemsPerLineTablet}{/if}
		{if $totModuloMobile == 0}{assign var='totModuloMobile' value=$nbItemsPerLineMobile}{/if}
		<li class="ajax_block_product{if $page_name == 'index' || $page_name == 'product'} col-xs-12 col-sm-4 col-md-3{else} col-xs-12 col-sm-6 col-md-4{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLine == 0} last-in-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLine == 1} first-in-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModulo)} last-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 0} last-item-of-tablet-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineTablet == 1} first-item-of-tablet-line{/if}{if $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 0} last-item-of-mobile-line{elseif $smarty.foreach.products.iteration%$nbItemsPerLineMobile == 1} first-item-of-mobile-line{/if}{if $smarty.foreach.products.iteration > ($smarty.foreach.products.total - $totModuloMobile)} last-mobile-line{/if}">
			<div class="product-container" itemscope itemtype="http://schema.org/Product">
				<div class="left-block">
					<div class="product-image-container">
						<a class="product_img_link" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url">
							<img class="replace-2x img-responsive" src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}" alt="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" title="{if !empty($product.legend)}{$product.legend|escape:'html':'UTF-8'}{else}{$product.name|escape:'html':'UTF-8'}{/if}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} itemprop="image" />
						</a>
						{if isset($quick_view) && $quick_view}
							<div class="quick-view-wrapper-mobile">
							<a class="quick-view-mobile" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}">
								<i class="icon-eye-open"></i>
							</a>
						</div>
						<a class="quick-view" href="{$product.link|escape:'html':'UTF-8'}" rel="{$product.link|escape:'html':'UTF-8'}">
							<span>{l s='Quick view'}</span>
						</a>
						{/if}
						{if (!$PS_CATALOG_MODE && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
							<div class="content_price" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
								{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
								<!-- palabra Desde y From > -->
										{Hook::exec('displayProductOnList', $product)} 
									<span itemprop="price" class="price product-price">
										{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}
									</span>
									<meta itemprop="priceCurrency" content="{$currency->iso_code}" />
									{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0}
										{hook h="displayProductPriceBlock" product=$product type="old_price"}
										<span class="old-price product-price">
											{displayWtPrice p=$product.price_without_reduction}
										</span>
										{if $product.specific_prices.reduction_type == 'percentage'}
											<span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span>
										{/if}
									{/if}
					<!-- .BORRAR AVAILABILITY 
									{if $PS_STOCK_MANAGEMENT && isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
										{if ($product.allow_oosp || $product.quantity > 0)}
												<link itemprop="availability" href="http://schema.org/InStock" />{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
										{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
												<link itemprop="availability" href="http://schema.org/LimitedAvailability" />{l s='Product available with different options'}

										{else}
												<link itemprop="availability" href="http://schema.org/OutOfStock" />{l s='Out of stock'}
										{/if}
									{/if}
					End BORRAR AVAILABILITY > -->
									{hook h="displayProductPriceBlock" product=$product type="price"}
									{hook h="displayProductPriceBlock" product=$product type="unit_price"}
								{/if}
							</div>
						{/if}
						{if isset($product.new) && $product.new == 1}
							<a class="new-box" href="{$product.link|escape:'html':'UTF-8'}">
								<span class="new-label">{l s='New'}</span>
							</a>
						{/if}
						{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}
							<a class="sale-box" href="{$product.link|escape:'html':'UTF-8'}">
								<span class="sale-label">{l s='Sale!'}</span>
							</a>
						{/if}
					</div>
					{hook h="displayProductDeliveryTime" product=$product}
					{hook h="displayProductPriceBlock" product=$product type="weight"}
				</div>
				<div class="right-block">
					<h5 itemprop="name">
						{if isset($product.pack_quantity) && $product.pack_quantity}{$product.pack_quantity|intval|cat:' x '}{/if}
						<a class="product-name" href="{$product.link|escape:'html':'UTF-8'}" title="{$product.name|escape:'html':'UTF-8'}" itemprop="url" >
							{$product.name|truncate:45:'...'|escape:'html':'UTF-8'}
						</a>
					</h5>
					{hook h='displayProductListReviews' product=$product}
					<p class="product-desc" itemprop="description">
						{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
					</p>
					{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
					<div class="content_price">
						{if isset($product.show_price) && $product.show_price && !isset($restricted_country_mode)}
					  <!-- palabra Desde y From > -->
								{Hook::exec('displayProductOnList', $product)}						
							<span class="price product-price">
								{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}
							</span>
							{if isset($product.specific_prices) && $product.specific_prices && isset($product.specific_prices.reduction) && $product.specific_prices.reduction > 0}
								{hook h="displayProductPriceBlock" product=$product type="old_price"}
								<span class="old-price product-price">
									{displayWtPrice p=$product.price_without_reduction}
								</span>
								{hook h="displayProductPriceBlock" id_product=$product.id_product type="old_price"}
								{if $product.specific_prices.reduction_type == 'percentage'}
									<span class="price-percent-reduction">-{$product.specific_prices.reduction * 100}%</span>
								{/if}
							{/if}
							{hook h="displayProductPriceBlock" product=$product type="price"}
							{hook h="displayProductPriceBlock" product=$product type="unit_price"}
						{/if}
					</div>
					{/if}
					<div class="button-container">
						{if ($product.id_product_attribute == 0 || (isset($add_prod_display) && ($add_prod_display == 1))) && $product.available_for_order && !isset($restricted_country_mode) && $product.customizable != 2 && !$PS_CATALOG_MODE}
							{if (!isset($product.customization_required) || !$product.customization_required) && ($product.allow_oosp || $product.quantity > 0)}
								{capture}add=1&id_product={$product.id_product|intval}{if isset($static_token)}&token={$static_token}{/if}{/capture}
								<a class="button ajax_add_to_cart_button btn btn-default" href="{$link->getPageLink('cart', true, NULL, $smarty.capture.default, false)|escape:'html':'UTF-8'}" rel="nofollow" title="{l s='Add to cart'}" data-id-product="{$product.id_product|intval}" data-minimal_quantity="{if isset($product.product_attribute_minimal_quantity) && $product.product_attribute_minimal_quantity > 1}{$product.product_attribute_minimal_quantity|intval}{else}{$product.minimal_quantity|intval}{/if}">
									<span>{l s='Add to cart'}</span>
								</a>
							{else}
								<span class="button ajax_add_to_cart_button btn btn-default disabled">
									<span>{l s='Add to cart'}</span>
								</span>
							{/if}
						{/if}
						<a class="button lnk_view btn btn-default" href="{$product.link|escape:'html':'UTF-8'}" title="{l s='View'}">
							<span>{if (isset($product.customization_required) && $product.customization_required)}{l s='Customize'}{else}{l s='More'}{/if}</span>
						</a>
					</div>
					{if isset($product.color_list)}
						<div class="color-list-container">{$product.color_list}</div>
					{/if}
					<div class="product-flags">
						{if (!$PS_CATALOG_MODE AND ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
							{if isset($product.online_only) && $product.online_only}
								<span class="online_only">{l s='Online only'}</span>
							{/if}
						{/if}
						{if isset($product.on_sale) && $product.on_sale && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}
							{elseif isset($product.reduction) && $product.reduction && isset($product.show_price) && $product.show_price && !$PS_CATALOG_MODE}
								<span class="discount">{l s='Reduced price!'}</span>
							{/if}
					</div>
					{if (!$PS_CATALOG_MODE && $PS_STOCK_MANAGEMENT && ((isset($product.show_price) && $product.show_price) || (isset($product.available_for_order) && $product.available_for_order)))}
						{if isset($product.available_for_order) && $product.available_for_order && !isset($restricted_country_mode)}
							<span class="availability">
								{if ($product.allow_oosp || $product.quantity > 0)}
									<span class="{if $product.quantity <= 0 && !$product.allow_oosp}out-of-stock{else}available-now{/if}">
										{if $product.quantity <= 0}{if $product.allow_oosp}{if isset($product.available_later) && $product.available_later}{$product.available_later}{else}{l s='In Stock'}{/if}{else}{l s='Out of stock'}{/if}{else}{if isset($product.available_now) && $product.available_now}{$product.available_now}{else}{l s='In Stock'}{/if}{/if}
									</span>
								{elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions > 0)}
									<span class="available-dif">
										{l s='Product available with different options'}
									</span>
								{else}
									<span class="out-of-stock">
										{l s='Out of stock'}
									</span>
								{/if}
							</span>
						{/if}
					{/if}
				</div>
				{if $page_name != 'index'}
	 				<div class="functional-buttons clearfix">
						{hook h='displayProductListFunctionalButtons' product=$product}
						{if isset($comparator_max_item) && $comparator_max_item}
							<div class="compare">
								<a class="add_to_compare" href="{$product.link|escape:'html':'UTF-8'}" data-id-product="{$product.id_product}">{l s='Add to Compare'}</a>
							</div>
						{/if}
					</div>
				{/if}
			</div><!-- .product-container> -->
		</li>
	{/foreach}
	</ul>
{addJsDefL name=min_item}{l s='Please select at least one product' js=1}{/addJsDefL}
{addJsDefL name=max_item}{l s='You cannot add more than %d product(s) to the product comparison' sprintf=$comparator_max_item js=1}{/addJsDefL}
{addJsDef comparator_max_item=$comparator_max_item}
{addJsDef comparedProductsIds=$compared_products}
{/if}

 

 

Link to comment
Share on other sites

Para no liarnos mas.

 

El modulo adaptado es

PRODUCTE ATTRIBUTES IMPACT PRICE v1.09

está basado en el codigo del anterior para acceder a la funcion

getAttributeCombinations 

que es la que genera toda la informacion referente a las combinaciones de los productos. Esta version lleva unos condicionales en el .tpl para que muestre el texto price from en los productos con combinaciones que tengan impacto en el precio. Esa es su unica función, al acceder a la funcion desde el modulo se evita tener que crear un override del CategoryController.php o tener que editar dicho controlador.

 

Tal como tienes puesto el 

{Hook::exec('displayProductOnList', $product)}

y activado el modulo

PRODUCTE ATTRIBUTES IMPACT PRICE v1.09

te deberia mostrar el texto en los productos que tengan atributos con impacto en el precio.

 

Funciona en 1.6.0.9 y 1.6.0.14

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

Bueno me voy a la cama dep :(  ... he probado de todas las formas y imposible!!! he cambiado de lugar la linea ..  {Hook::exec('displayProductOnList', $product)} ..

 

Pero soy testigo que funcionaba bien! antes! :)

Tengo efectivamente  - Product attributes impact price v1.0.9 - por MyPresta.eu

Estoy hablando con el creador de mi thema a ver si me dice algo!!!

 

De todos modos gracias por tu tiempo Ventura ;)

Si quieres te dejo un acceso a mi backoffice B)

Link to comment
Share on other sites

2) preguntitas :)

 

1) Dentro del zip hay una carpeta llamada tambien "attributes" creo que no sirve para price from / impacte price ,  solo sirve para  Product Attributes on List? osea se podria borrar?

2) Hay alguien aparte Ventura que pudo hacerlo foncionar en 1.6.014? :unsure:

 

No me creo que solo yo y Jessy estemos interesados :P:D  .... de los mas de 7000 en el forum jijij alguien mas lo utilisa no! venga no seas timido!

Hablar ... jijijji que da engual el idioma jijjiij

 

Gracias!

Link to comment
Share on other sites

2) preguntitas :)

 

1) Dentro del zip hay una carpeta llamada tambien "attributes" creo que no sirve para price from / impacte price ,  solo sirve para  Product Attributes on List? osea se podria borrar?

 

 

A lo mejor ese es el problema, se crea una carpeta con el mismo nombre al comprimirlo, descomprimelo y sube la carpeta creada que contiene los archivos

Link to comment
Share on other sites

Gracias por responder siempre tan rápido! Da gusto! :)

No creo que sea un simple duplicado.

Analizando la carpeta “doble o residual” attributes, y comparando con la carpeta Raíz attributes, me muestran que son ficheros diferentes.

Te anoto las diferencias mas relevantes:

 

~/Desktop/attributes /attributes.php

         $this->displayName = $this->l('Product attributes impact price');

 

~/Desktop/attributes /attributes/attributes.php

         $this->displayName = $this->l('Product Attributes on List');

Sobre to  combinations.tpl

~/Desktop/attributes /attributes/combinations.tpl

Solo tiene 4 líneas de códigos

{foreach $combinations as $k=>$v}

<strong>{$v.group_name}:</strong> {$v.attribute_name} |


{/foreach}

En la carpeta residual ¡ FALTA el fichero config_es.xml

 

pero bueno! Mi lógica de aficionado hace que borro la carpeta residual attributes.

~/Desktop/attributes /attributes/

 

Vuelvo a comprimir zip- y lo subo – ahí después de desinstalar/borrar el antiguo modulo attribute

Y perfecto no multiplica nada en la carpeta modules / aparentemente todo bien.

Tengo las 2 carpeta translación en la carpeta modules/attributes  y mytheme/modules/attributes

Con su respectivo (es) y (gb)

combinations_d4b764e109c6721dab6ba130e056fa52'] = 'From';

combinations_d4b764e109c6721dab6ba130e056fa52'] = 'Desde';

Hay en otra carpeta acaso de translation?

 

Pero sigue no funcionando!!!

Pero no desespero! Un día lo conseguiremos!!! Jijijiji

 

Gracias todavia por tu tiempo VENTURA

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

salserin creo que te estas haciendo un lio con los modulos importante.

 

-Borra los dos modulos que tienes instalados para evitar mas lios,

 

- Vuelve a subir la version del modulo que esta en la primera pagina de este hilo. Si subes el modulo por ftp mejor

 

-Recompila la plantilla y borra cache

 

-Te comento de nuevo que el contenido del archivo .tpl que muestras es el de la version que muestra las combinaciones disponibles de cada producto, nada que ver con mostrar el texto.

 

- Por favor comenta con un tamaño de texto adecuado

Link to comment
Share on other sites

 

Pero Ventura, lo único que instalo es tu modulo, no dos, ahora si el lio viene que en tu carpeta Zip viene con una carpeta residual que no tendría que estar, lo mismo no afecta en nada pero bueno!

Me voy corriendo otra vez al poste 6 descargar attributes.zip --- lo subo por ftp -…. Te cuento después

Perdona lo de comentar el texte! Hice copiar/pegar desde Word … jiiijij

 

Gracias.

Link to comment
Share on other sites

He actualizado el post donde estaba el modulo, efectivamente contenia otra carpeta con contenido el mismo contenido, pero que no condicionaba el funcionamiento.Ya esta eliminado.

Si tienes algun problema mandame accesos por privado y te lo miro

Link to comment
Share on other sites

Para que funcione y se muestre el texto cuando se tiene activada la venta de productos cuando no estan en stock  (cantidad igual o menor 0), editar esta parte del archivo .tpl del modulo

{if $comb.price > 0 && $comb.quantity > 0 } 

y dejarlo simplemente asi

{if $comb.price > 0} 
Edited by ventura (see edit history)
  • Like 1
Link to comment
Share on other sites

Ya funciona de maravilla. :)

 

De veras miles de gracias a ventura, que por cierto si visitéis su web, demuestra que es innovador y muy profesional.

 

Al final siempre funciono hasta que active la gestión avanzada/ permitir venta fuera de stock , pero con el nuevo condicionante de ventura todo ha vuelta a la normalidad.

 

Suerte Jessy! ya te tiene que funcionar :rolleyes:

Link to comment
Share on other sites

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