Jump to content

Productos destacados de forma aleatoria 1.6.0.9


fredyms

Recommended Posts

Hola,

 

He visto muchos post sobre este tema, pero ninguno me ha funcionado, estoy utilizando la última versión de Prestashop con una plantilla y no encuentro la manera de hacer algo que considero fundamental para una mejor visualización de los productos destacados, en la página de inicio.

 

Alguna experiencia o solución sobre este tema, muchas gracias de antemano.

 

:rolleyes:

 

Link to comment
Share on other sites

He visto este tema: http://www.prestashop.com/forums/topic/316661-random-home-featured-in-v16 en relación a lo que comentas.

 

Si, lo he estado probando, pero a mi no me funciona, es posible que esté haciendo algo mal, seguro, no obstante yo tengo una plantilla y no estoy seguro si se reescribe algo de este modulo, en mi plantilla hay un modulo de homefeatured pero no controlo lo suficiente como para modificarlo por mi cuenta.

 

El cambio afecta a este fichero:

module/homefeatured/homefeatured.php

Que es donde he estado probando los cambios sugeridos en el post que indicas.

 

 

Pero yo tengo un modulo homefeatured dentro de mi plantilla, que es el que está activo.

/themes/theme/modules/homefeatured/homefeatured.tpl

<!-- MODULE Home Featured Products -->
<section class="block homefeatured">
  <h4>{l s='Featured products' mod='homefeatured'}</h4>
  {if isset($products) AND $products}
  <ul class="products">
    {foreach from=$products item=product name=homeFeaturedProducts}
    <li class="ajax_block_product "> <a class="product_image" href="{$product.link}" title="{$product.name|escape:html:'UTF-8'}" class="product_image"> <img src="{$link->g
etImageLink($product.link_rewrite, $product.id_image, 'home_default')}"  alt="{$product.name|escape:html:'UTF-8'}" /> </a>
      <h5><a  class="product_link" href="{$product.link}" title="{$product.name|truncate:50:'...'|escape:'htmlall':'UTF-8'}">{$product.name|truncate:25:'...'|escape:'htmla
ll':'UTF-8'}</a></h5>
      {if $product.show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}
      <p class="price_container"><span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span></p
>
      {else}{/if}
      <p class="product_descr" href="{$product.link}" title="{l s='More' mod='homefeatured'}">{$product.description_short|strip_tags|truncate:100:'...'}</p>
      {if ($product.id_product_attribute == 0 OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND $product.available_for_order AND !isset($restricted_country_m
ode) AND $product.minimal_quantity == 1 AND $product.customizable != 2 AND !$PS_CATALOG_MODE}
      {if ($product.quantity > 0 OR $product.allow_oosp)} <a class="exclusive ajax_add_to_cart_button" rel="ajax_id_product_{$product.id_product}" href="{$link->getPageLin
k('cart')}?qty=1&id_product={$product.id_product}&token={$static_token}&add" title="{l s='Add to cart' mod='homefeatured'}">{l s='Add to cart' mod='homefeature
d'}</a> {else} <span class="exclusive">{l s='Add to cart' mod='homefeatured'}</span> {/if}
      {else}
      {/if} <a class="button" href="{$product.link}" title="{l s='View' mod='homefeatured'}"><span>{l s='View' mod='homefeatured'}</span></a> 
     </li>
    {/foreach}
  </ul>
  {else}
  <p>{l s='No featured products' mod='homefeatured'}</p>
  {/if} 
</section>
<!-- /MODULE Home Featured Products --> 

gracias

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

  • 1 month later...

No hay nadie que me pueda ayudar con esté código, PS ha actualizado el modulo para hacerlo pero esté es de una plantilla y no queda bien si pongo el nuevo. 

 

Gracias de antemano.

La ultima versión del módulo (Version modulo 1.6)  incorpora la funcionalidad al azar y también la categoria a desplegar.

 

Antes tenía modificado el código, pero ahora no es necesario.

 

homefeatured.jpg

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

El cambio que me producía el efecto aleatorio era el siguiente:

 

En el archivo:

\modules\homefeatured\homefeatured.php

Busca esto:

HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), 'position');

y cambialo por esto:

HomeFeatured::$cache_products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8),'date_add', 'DESC', false, true, true, $nb);

Eso, si tienes este código en tu plantilla. 

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

No hay nadie que me pueda ayudar con esté código, PS ha actualizado el modulo para hacerlo pero esté es de una plantilla y no queda bien si pongo el nuevo. 

 

Gracias de antemano.

 

Gracias, como indico, ya he visto el cambio del modulo, pero yo tengo una plantilla, y el código que pongo en el post pertenece al homefeatured, el problema aquí es que todos los ajustes y cambios hacen referencia al homfeatured por defecto y como comento yo estoy usando una plantilla.

El código del homefeatured, está listado en el primero post.

Link to comment
Share on other sites

He encontrado una función, que podria servir pero por más pruebas que hago no consigo que funcione. la función shuffle.


<?php
$numbers = range(1, 20);
shuffle($numbers);
foreach ($numbers as $number) {
    echo "$number ";
}
?>

Link to comment
Share on other sites

Hola, mira esto

public function hookDisplayHome($params){
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
/*$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));*/
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_add', 'DESC', false, true, true, $nb);
shuffle($products);
$this->smarty->assign(array(
'products' => $products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize('home_default'),
));
return $this->display(__FILE__, 'homefeatured.tpl');
}

En este puedes ver la funcion shuffle colocada en el codigo

Link to comment
Share on other sites

Hola, mira esto

public function hookDisplayHome($params){
$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);
$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
/*$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));*/
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10), 'date_add', 'DESC', false, true, true, $nb);
shuffle($products);
$this->smarty->assign(array(
'products' => $products,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize('home_default'),
));
return $this->display(__FILE__, 'homefeatured.tpl');
}

En este puedes ver la funcion shuffle colocada en el codigo

 

Ya he probado y no funciona, mi modulo no tiene php he probado a modificar el php que se encuentra en tienda/modules directamente.

\modules\homefeatured\homefeatured.php

No sé como implementear shuffle junto a foreach, creo que la clave está ahí.

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

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