Jump to content

Pres 1.5.6 Productos destacados no actualiza


echao

Recommended Posts

Buenas tardes a todos,

 

Tengo un problema en la prestashop 1.5.6 y es que los productos destacados, no se actualizan hasta que no limpio la "cache el smarty y autoupload" en preferencias -> rendimiento.

 

Veo que el problema está en la cache (la de la parte superior) porque si la desactivo (aunque pone que tiene que estar activa con la tienda en producción) funciona correctamente.

 

En la pagina de preferencias -> rendimiento en la parte de abajo, donde vuelve a poner cache) lo tengo desactivado.

 

A ver si me podeis ayudar, que esto me trae loco.

 

GRACIAS!

Link to comment
Share on other sites

¿El modulo de productos destacados no es por defecto fijo? (es decir, que simplemente se cargan los productos de la categoria Inicio) ¿no?

 

Yo acabo de crearme un producto nuevo en una tienda de prueba con una instalación limpia de Prestashop 1.5.6, con el forzar compilación desactivado y la cache de smarty activada (que son los valores recomendados, para la tienda en producción) y el producto si me ha cargado correctamente en la categoría Inicio y por tanto se me ha mostrado en el bloque de productos destacados.

 

¿Estas usando otro modulo para el bloque de productos destacados, tipo productos destacados aleatorios o algo asi?

 

Si es cierto, que a partir cierta variante de la 1.5.X, los modulos trabajan con la cache de smarty, pero esto ayuda a la optimizacion de la tienda de un modo u otro, y en principio no tendrias que tener problemas que tienes ahora de estar vaciando la cache de smarty, cada vez que quitas o añades un producto de la categoria Inicio. (Los permisos supongo que bien ¿no? )

Link to comment
Share on other sites

Hola Nadie,

Gracias por la rápida respuesta y gracias por seguir aquí.

Si es cierto, son fijos y muestran los productos que se añaden en la categoría inicio. El problema es cuando cambio los productos de la categoría inicio no actualizan automáticamente.

A nivel de permisos de archivos y directorios todo ok,  carpetas a 755 y ficheros 644.

Estoy haciendo pruebas de activar y desactivar la caché varias veces a ve si es por algún problema menor.

He reinstalado el modulo y cosas así.

Lo único que estoy usando es un theme que he modificado yo mismo y en el modulo de productos destacados, únicamente se ha modificado a nivel de CSS.

A ver que saco de estas pruebas …

Saludos,

Link to comment
Share on other sites

Hola Nadie,

 

Gracias por la rápida respuesta y gracias por seguir aquí.

 

Si es cierto, son fijos y muestran los productos que se añaden en la categoría inicio. El problema es cuando cambio los productos de la categoría inicio no actualizan automáticamente.

 

A nivel de permisos de archivos y directorios todo ok,  carpetas a 755 y ficheros 644.

 

Estoy haciendo pruebas de activar y desactivar la caché varias veces a ve si es por algún problema menor.

 

He reinstalado el modulo y cosas así.

 

Lo único que estoy usando es un theme que he modificado yo mismo y en el modulo de productos destacados, únicamente se ha modificado a nivel de CSS.

 

A ver que saco de estas pruebas …

 

Saludos,

 

No sigo aquí, ni tengo ninguna intención de seguir en el foro, simplemente estoy cerrando unas cosas, para dar de baja mi usuario en el foro.

 

Yo he realizado pruebas con una instalación limpia de la 1.5.6 y con la plantilla por defecto, y me funciona correctamente sin tener que vaciar la cache de smarty manualmente cada vez que quito o pongo un producto en la categoría Inicio, para que aparezcan los productos en el bloque de productos destacados.

 

¿Con la plantilla por defecto, te pasa lo mismo? (Lo digo, por que como sabes el homefeatured.tpl viene sobreescrito normalmente dentro del directorio /themes/plantilla/modules/homefeatured/homefeatured.tpl , quizas haya alguna variante con el de la plantilla por defecto)

 

¿Estas trabajando con una instalación limpia o una actualización?

Link to comment
Share on other sites

Este es mi fichero:

/modules/homefeatured/homefeatured.php
<?php
/*
* 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 (!defined('_PS_VERSION_'))
        exit;

class HomeFeatured extends Module
{
        private $_html = '';
        private $_postErrors = array();

        function __construct()
        {
                $this->name = 'homefeatured';
                $this->tab = 'front_office_features';
                $this->version = '1.1';
                $this->author = 'PrestaShop';
                $this->need_instance = 0;

                parent::__construct();

                $this->displayName = $this->l('Featured products on the homepage.');
                $this->description = $this->l('Displays featured products in the middle of your homepage.');
        }

        function install()
        {
                $this->_clearCache('homefeatured.tpl');
                Configuration::updateValue('HOME_FEATURED_NBR', 8);

                if (!parent::install()
                        || !$this->registerHook('displayHome')
                        || !$this->registerHook('header')
                        || !$this->registerHook('addproduct')
                        || !$this->registerHook('updateproduct')
                        || !$this->registerHook('deleteproduct')
                )
                        return false;
                return true;
        }
        
        public function uninstall()
        {
                $this->_clearCache('homefeatured.tpl');
                return parent::uninstall();
        }

        public function getContent()
        {
                $output = '<h2>'.$this->displayName.'</h2>';
                if (Tools::isSubmit('submitHomeFeatured'))
                {
                        $nbr = (int)Tools::getValue('nbr');
                        if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))
                                $errors[] = $this->l('An invalid number of products has been specified.');
                        else
                                Configuration::updateValue('HOME_FEATURED_NBR', (int)($nbr));
                        if (isset($errors) AND sizeof($errors))
                                $output .= $this->displayError(implode('<br />', $errors));
                        else
                                $output .= $this->displayConfirmation($this->l('Your settings have been updated.'));
                }
                return $output.$this->displayForm();
        }

        public function displayForm()
        {
                $output = '
                <form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">
                        <fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>
                                <p>'.$this->l('To add products to your homepage, simply add them to the "home" category.').'</p><br />
                                <label>'.$this->l('Define the number of products to be displayed.').'</label>
                                <div class="margin-form">
                                        <input type="text" size="5" name="nbr" value="'.Tools::safeOutput(Tools::getValue('nbr', (int)(Configuration::get('HOME_FEATURED_NBR')))).'" />
                                        <p class="clear">'.$this->l('Define the number of products that you would like to display on homepage (default: 8).').'</p>

                                </div>
                                <center><input type="submit" name="submitHomeFeatured" value="'.$this->l('Save').'" class="button" /></center>
                        </fieldset>
                </form>';
                return $output;
        }

        public function hookDisplayHeader($params)
        {
                $this->hookHeader($params);
        }

        public function hookHeader($params)
        {
                $this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all');
        }

        public function hookDisplayHome($params)
        {
                if (!$this->isCached('homefeatured.tpl', $this->getCacheId('homefeatured')))
                {
                        $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 : 8));

                        $this->smarty->assign(array(
                                'products' => $products,
                                'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
                                'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
                        ));
                }
                return $this->display(__FILE__, 'homefeatured.tpl', $this->getCacheId('homefeatured'));
        }

        public function hookAddProduct($params)
        {
                $this->_clearCache('homefeatured.tpl');
        }

        public function hookUpdateProduct($params)
        {
                $this->_clearCache('homefeatured.tpl');
        }

        public function hookDeleteProduct($params)
        {
                $this->_clearCache('homefeatured.tpl');
        }
}

Y este mi fichero:

/themes/plantilla/modules/homefeatured/homefeatured.tpl
{*
* 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
*}

<!-- MODULE Home Featured Products -->
<div id="featured-products_block_center" class="block products_block clearfix">
        <p class="title_block">{l s='Featured products' mod='homefeatured'}</p>
        {if isset($products) AND $products}
                <div class="block_content">
                        {assign var='liHeight' value=250}
                        {assign var='nbItemsPerLine' value=4}
                        {assign var='nbLi' value=$products|@count}
                        {math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
                        {math equation="nbLines*liHeight" nbLines=$nbLines|ceil liHeight=$liHeight assign=ulHeight}
                        <ul style="height:{$ulHeight}px;">
                        {foreach from=$products item=product name=homeFeaturedProducts}
                                {math equation="(total%perLine)" total=$smarty.foreach.homeFeaturedProducts.total perLine=$nbItemsPerLine assign=totModulo}
                                {if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
                                <li class="ajax_block_product {if $smarty.foreach.homeFeaturedProducts.first}first_item{elseif $smarty.foreach.homeFeaturedProducts.last}last_item{else}item{/if} {if $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 1} {/if} {if $smarty.foreach.homeFeaturedProducts.iteration > ($smarty.foreach.homeFeaturedProducts.total - $totModulo)}last_line{/if}">
                                        <a href="{$product.link|escape:'html'}" title="{$product.name|escape:html:'UTF-8'}" class="product_image"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html'}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product.name|escape:html:'UTF-8'}" />{if isset($product.new) && $product.new == 1}<span class="new">{l s='New' mod='homefeatured'}</span>{/if}</a>
                                        <p class="s_title_block"><a href="{$product.link|escape:'html'}" title="{$product.name|truncate:50:'...'|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></p>
                                        <div class="product_desc"><a href="{$product.link|escape:'html'}" title="{l s='More' mod='homefeatured'}">{$product.description_short|strip_tags|truncate:65:'...'}</a></div>
                                        <div>
                                                <a class="lnk_more" href="{$product.link|escape:'html'}" title="{l s='View' mod='homefeatured'}">{l s='View' mod='homefeatured'}</a>
                                                {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}<div style="height:21px;"></div>{/if}
                                                
                                                {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_mode) 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->getPageLink('cart')|escape:'html'}?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='homefeatured'}</a>
                                                        {else}
                                                        <span class="exclusive">{l s='Add to cart' mod='homefeatured'}</span>
                                                        {/if}
                                                {else}
                                                        <div style="height:23px;"></div>
                                                {/if}
                                        </div>
                                </li>
                        {/foreach}
                        </ul>
                </div>
        {else}
                <p>{l s='No featured products' mod='homefeatured'}</p>
        {/if}
</div>
<!-- /MODULE Home Featured Products -->

-----

 

¿Los tienes igual?

 

Saludos,

Link to comment
Share on other sites

Antes Me Paso A mi tambien, prueba desactivando el cache y funciona perfecto(En mi caso claro). Salu2

 

Si así como dices, le funciona http://www.prestashop.com/forums/topic/287351-pres-156-productos-destacados-no-actualiza/?view=findpost&p=1448786, ya lo comento el  en su primer mensaje.

 

Pero la cache de smarty, es muy importante tenerla activada.

Link to comment
Share on other sites

Ok,

 

Intentar una cosa, si teneis los ficheros igual (el php) y el (tpl) igual que he comentado en mi anterior mensajes y estais trabajando con Prestashop 1.5.6.

 

Volver a dejar las opciones con la cache de smarty activada, que es como se tiene que dejar.

 

Y desinstalar y volver a instalar el modulo de productos destacados desde la pestaña módulos -> módulos.

 

Despues probar quitar y añadir productos a la categoría Inicio, y decirme si os funciona bien el modulo de productos destacados, sin tener que vaciar la cache de smarty o desactivar la cache de smarty.

Link to comment
Share on other sites

Bueno,

 

todo probado.

 

He usado directamente los archivos que me has subido -> Sin resultado positivo

He usado el tema por defecto de la prestashop 1.5.6 descomprimido de nuevo -> sin resultado positivo

He desistalado y vuelto a instalar el modulo destacados ->Sin resultado positivo

 

Vengo de una prestashop 1.4.8 y lo he subido a la 1.5.6 usando el 1 click.

 

Estoy mas que seguro que el problema viene de la actualización.

 

 

 

Saludos,

Link to comment
Share on other sites

  • 1 month later...

Hola,

 

 yo tambien estoy con el mismo problema en prestashop 1.5.6, limpiando la cache se actualiza pero es poco practico. Alguna otra solución?

 

 en otras versiones de prestashop desde 1.5.2 a .1.5.5 no me paso nada parecido

 

Un Saludo

Link to comment
Share on other sites

Hola,

 

 yo tambien estoy con el mismo problema en prestashop 1.5.6, limpiando la cache se actualiza pero es poco practico. Alguna otra solución?

 

 en otras versiones de prestashop desde 1.5.2 a .1.5.5 no me paso nada parecido

 

Un Saludo

 

Prueba actualizar a la 1.5.6.1.

Link to comment
Share on other sites

Prueba actualizar a la 1.5.6.1.

 

Yo acabo de probar en la 1.5.6.1 en una instalación limpia con los siguientes parametros:

 

Cache de plantillas => Nunca recompilar los archivos de las plantillas

 

Cache Smarty ¿Usar cache? => V (Activada)

 

(Que es como recomienda Prestashop dejar esos valores en una tienda en produccion)

 

Y sin tener que darle al boton que dice "Limpiar cache smarty" y me funciona sin problema, si no os funciona en la 1.5.6.1 quizas ya es algun problema de permisos.

Link to comment
Share on other sites

He actualizado a 1.5.6.1 y sigo igual... probando tambien en la plantilla por defecto tengo el mismo problema. En principio los permisos son los mismos que tengo para otras instalaciones de prestahsop.

 

Seguire haciendo pruebas.

 

Yo estoy con una limpia, y me funciona correctamente.... (ummmmmmmmmmmmm)

Link to comment
Share on other sites

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