JPresta Speed Pack

Estos usuarios falsos son creados por Page Cache Ultimate para anonimizar la caché (nuevo método). No debe borrarlos (se crearán de nuevo).

No habrá muchos de estos usuarios falsos, probablemente menos de 5, depende del número de grupos y de las diferencias de visualización entre ellos.

No están activos, por lo que no perturbarán sus estadísticas.

Si tienes un tema de Anvato, esto es lo que debes hacer para evitar que el carrito se abra cada vez que se actualice.

Copia el archivo /modules/an_theme/views/js/sidebarcart.js en tu tema para poder seguir actualizándolo sin perder las modificaciones, en /themes//modules/an_theme/views/js(crea carpetas si es necesario)

En este archivo, reemplaza la línea:

if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout') {

Por

if (prestashop.page.page_name != 'cart' && prestashop.page.page_name != 'checkout' && requestData.action!='refresh') {

A continuación, borra la caché de la página de Performances y la caché de tu navegador para que puedas probar.

Si su tema utiliza la etiqueta "widgetblock" como lo hace el tema de Warehouse, entonces necesita borrar la caché en la página de Performances después de habilitar el Page Cache para que la plantilla se compile de nuevo.

If you are using Nginx, then make sure your configuration is as follow:

Nginx configuration for Speed Pack module

"Proxy mode" must be ON, other options must be OFF.

Si utiliza el módulo PageSpeed Apache desarrollado por Google (x-mod-pagespeed), debe desactivar la siguiente opción para que no anule las directivas de caché del navegador añadidas por Page Cache:

ModPagespeedModifyCachingHeaders off

No, es muy recomendable mantener la caché de Smarty activada. Esto acelerará las páginas que no tienen caché y también las páginas en las que la caché aún no se ha generado.

Para recuperar sus estilos sólo tiene que borrar el caché de "Page Cache Ultimate".

Para evitar este problema puede ir en "Modo avanzado", en la configuración de "Page Cache Ultimate", luego en "Clave de caché" habilitar "Insertar versión CSS y JS en clave de caché".

To avoid the cookie notice to appear 1 second, then disappear, you must override the javascript file of the iqitcookielaw module.

To do it, create a file with the following content:

$(document).ready(function () {
 if (getCookie('cookielaw_module') != 1) {
  $("#iqitcookielaw").addClass('iqitcookielaw-showed');
 }
 $("#iqitcookielaw-accept").click(function (event) {
  event.preventDefault();
  $("#iqitcookielaw").removeClass('iqitcookielaw-showed');
  setcook();
 });
});

function setcook() {
 var name = 'cookielaw_module';
 var value = '1';
 var today = new Date();
 var expire = new Date();
 expire.setTime(today.getTime() + 3600000 * 24 * 14);
 document.cookie = name + "=" + escape(value) + ";path=/;" + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()))
}

function getCookie(cname) {
 var name = cname + "=";
 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);
  if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
 }
 return "";
}

And place it in the theme (or child theme if you have one): /themes/warehouse/modules/iqitcookielaw/views/js/front.js

Then clear the cache in the Performances page.

When the cache is created, the page is anonymized, that means it is displayed without any information about the visitor displaying the page.

Modules that display content relative to the current visitor can be marked as dynamic, that means the content will be refreshed (replaced) by a background request in the browser that will carry the context of the current visitor.

If you check the option "Display nothing in cache" then the module will not be called to display its content in this hook during the creation of the cache. However, the content will be displayed as other dynamic modules (with background request).

If the products list is reloaded each time you display a page with a products list then you can fix this by modifying the file /warehouse/modules/ps_shoppingcart/ps_shoppingcart.js as follow:

How to fix warehouse theme

Sustituir esta línea:

prestashop.emit('updateFacets', window.location.href);

Por:

if (event.reason && event.reason.linkAction != 'refresh') {
    prestashop.emit('updateFacets', window.location.href);
}

Actualice su módulo "Cookies - Ley de cookies GDPR (bloquear antes del consentimiento)" a la versión 1.5.6 como mínimo.

Actualice "Page Cache Ultimate" a la versión mínima 7.9.39 para una compatibilidad total con el módulo cookiesplus.

Para Prestashop 1.7

  1. Deshabilite ambos módulos (esto también funciona si aún no están instalados)
  2. En el archivo /modules/cookiesplus/override_17/classes/Hook.php, cambie el nombre de la función coreCallHook a coreCallHook_off y la función coreRenderWidget a coreRenderWidget_off (de hecho, Page Cache Ultimate ejecutará el procesamiento apropiado si el módulo cookiesplus está activado).
  3. Puedes reactivar (o instalar) los 2 módulos.

En la configuración del carrito de la compra, en la sección "Acción de añadir al carrito", desactive la opción "Abrir el carrito".

Creative Element - shopping cart options

Sí, todas las imágenes de su tienda se convertirán automáticamente al formato WEBP. Incluso las imágenes de CMS u otros módulos como blog.

Esto es normal, cuando la caché no está disponible la visualización es tan lenta como sin la caché.

Sólo debe vaciar la caché cuando sea necesario (modificación de CSS o Javascript, para las plantillas elija la opción "Recompilar archivos de plantilla si se han actualizado" en la página "Rendimiento").

¡SÍ usted todavía necesita un módulo WEBP para Prestashop! Debido a que la función tiene un error en PS 8.0. Se debe fijar en PS 8.1 pero voy a comprobar esto tan pronto como se libera porque no sé si las imágenes JPG se mostrará a los navegadores que no pueden leer el formato WEBP como Safari (iPhone).

Ha sido muy complicado encontrar una configuración que funcione bien. No soy experto en la configuración de nginx así que supongo que hay otra manera de hacerlo. Si quieres mejorar esta configuración ponte en contacto conmigo, ¡estaré encantado de actualizar este post para ayudar a otras personas!

Aquí está mi solución (sea amable).

Antes de la sección "server", coloca este código:

map $http_accept $webp_enable {
	default 0;
	"~*webp" 1;
}

Nos dirá si el navegador del visitante puede leer imágenes WEBP.

Probablemente tengas varias líneas de "rewrite" para todas las imágenes, coloca el siguiente código justo antes:

# Jpresta Speedpack
if ($webp_enable = 1) {
	# Rewrite images URL using a specific extension ".webp_compressor" so we can have specific rules to compress the image/svg
	# if the webp file is not already created.
	rewrite "^/c/([0-9]+)(\-[_a-zA-Z0-9-]*)/(.*)\.jpg$" /img/c/$1$2.webp_compressor last;
	rewrite "^/c/([_a-zA-Z-]+)/(.*)\.jpg$" /img/c/$1.webp_compressor last;
	rewrite "^/([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$1$2.webp_compressor last;
	rewrite "^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$1$2$3.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$1$2$3$4.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$1$2$3$4$5.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8.webp_compressor last;
	rewrite "^/([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.jpg$" /img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.webp_compressor last;  
	# all other images
	rewrite "^(.+)\.jpg$" $1.webp_compressor last;   
}

location ~* ^(.+)\.webp_compressor$ {
	# Indicates to proxies that the file content/format depends (Vary) on the "Accept" header
	add_header Vary Accept;

	# Indicates to proxies that the file can be cached for the max duration
	add_header Pragma public;
	add_header Cache-Control "public, must-revalidate, proxy-revalidate";
	expires max;

	# Indicates to nginx not to log access
	access_log off;
	log_not_found off;

	# Try to serve the WEBP file directly or compress the image
	set $url_webp_compressor "/modules/jprestaspeedpack/controllers/front/webp.php?src=$1.jpg";
	try_files $1.webp $url_webp_compressor;
}

ADVERTENCIA: si está utilizando el módulo de compresión WEBP independiente, debe reemplazar 'jprestaspeedpack' por 'jprestawebp'.

¡Ponte en contacto conmigo si necesitas ayuda o si puedes mejorar el script!

Si la lista de selección de divisas ya no funciona, compruebe estas 2 opciones:

La opción "Ignorar URLs que coincidan con esta regex" debe incluir ".*SubmitCurrency=1.*", por ejemplo ".*[\?&]q=.*|.*SubmitCurrency=1.*"

La opción "Parámetros de URL ignorados" no debe incluir "submitcurrency,id_currency"

También puede desactivar la caché del navegador, porque si el visitante cambia la divisa después de ver varias páginas, si vuelve a esas páginas, se mostrará la divisa original.

No olvide borrar el módulo y la caché del navegador después de estos cambios.

sí, los navegadores que no puedan leer el formato WEBP obtendrán el formato original (JPG/PNG).

Cuando modificas un producto, una categoría, una página de CMS, un precio, el stock, etc. la caché se actualiza automáticamente.

Cuando agrega, elimina o modifica un módulo, debe borrar el caché manualmente porque esto no se puede detectar automáticamente. Por ejemplo, cuando modificas el slider de la página de inicio.

Cuando modifica el CSS o una plantilla de su tema, debe borrar el caché manualmente porque esto no se puede detectar automáticamente.

Cuando sincronizas o modificas tu catálogo, tus precios y/o tus stocks usando una aplicación externa, probablemente necesitarás borrar el caché manualmente o con un script porque los ganchos de Prestashop no se ejecutan.

Para borrar la caché de páginas específicas, puedes usar las URL CRON/API que encontrarás en el menú "API" en la configuración de Page Cache Ultimate. También puede usar la tabla de estadísticas para filtrar las páginas que desea actualizar, luego haga clic en el botón "Borrar caché (solo archivos)".

También tenga en cuenta que la memoria caché del navegador no se puede borrar, por eso está limitada en el tiempo.

Esto ocurre porque el enlace de inicio de sesión se carga dinámicamente y por lo tanto el parámetro "back" que hace referencia a la URL actual se establece con la URL de los módulos dinámicos.

Para evitar este problema, vaya a la configuración de Page Cache Ultimate, en el menú "Módulos dinámicos y widgets", en la parte inferior añada el siguiente código javascript en el campo "Javascript a ejecutar":

if (!prestashop_pc.customer.is_logged) {
$('header a').each(function() {
$(this).attr('href').replace('ajax%3Dtrue', '').replace('page_cache_dynamics_mods%3D=1', '')
});
}

Borra la caché y debería solucionarse el problema.

estos directorios se crean cuando la caché no se puede borrar completamente en PHP porque es demasiado larga y fallará con un error de tiempo de espera. Así que en lugar de borrar el directorio de caché, simplemente se renombra con este sufijo.

Puedes borrar todos estos directorios con el sufijo please_delete_me pero te recomiendo hacerlo directamente en la consola del servidor porque será demasiado largo hacerlo por FTP.

Estos hooks son para desarrolladores de módulos, contacta con el soporte si necesitas ayuda.

Aquí hay un ejemplo de cómo implementar las funciones de los hooks:

    /**
     * Called each time a page is displayed so this must remain very fast!
     * @param $params Empty array
     * @return mixed The datas you will need in hookActionJPrestaRestoreSpecificCacheKeyInfos()
     */
    public function hookActionJPrestaGetSpecificCacheKeyInfos($params) {
        // Let's say that the cookie 'test' modify the content of the page, we indicates to the cache manager
        // to generate a cache key that depends on the value of this cookie
        return $_COOKIE['test'];
    }

    /**
     * This function is called by Page Cache Ultimate when the cache-warmer service want to generate the cache of a
     * specific context. In this case we must restore the context so the content is the good one.
     * @param $params $params['specifics'] contains the datas returned by the hook 'ActionJPrestaGetSpecificCacheKeyInfos'
     */
    public function hookActionJPrestaRestoreSpecificCacheKeyInfos($params)
    {
        // Here we will just modify the $_COOKIE value, we don't need to send the cookie to the browser with function
        // setcookie, we just want the remaining PHP code to execute to get the correct value of the cookie.
        $_COOKIE['test'] = $params['specifics'];
    }

El módulo Elementos Creativos le permite editar partes de su tienda con enlaces/botones que se muestran directamente en su tienda cuando está conectado a su admin Prestashop. Para preservar esta funcionalidad, la caché está desactivada con el motivo "editing-with-creative-element". Tenga la seguridad, sus visitantes se benefician de la caché, es sólo los usuarios conectados a la administración que no tienen una caché. Para obtener la caché, basta con mostrar la tienda en una pestaña privada de su navegador.

Lo primero es asegurarte de que tienes la última versión del módulo porque lo estoy mejorando constantemente para reducir el consumo de memoria, tanto en la base de datos como en el disco duro.

Lo segundo es ejecutar una purga periódicamente (cada 2 o 3 días). Una purga elimina de la caché las páginas que ya no existen o cuyo contexto ya no existe. Esto no afecta al rendimiento de la caché. Puede realizar una purga manualmente mediante un botón situado bajo la tabla de estadísticas de la caché, o programando una tarea CRON con la URL que aparece en el menú "API (URL CRON)" de la configuración del módulo.

Finalmente, si hay directorios en /var/cache/pagecache que terminan en "please_delete_me" entonces puede borrarlos. Se trata de una caché antigua que PHP no ha podido borrar por completo (demasiado larga).

El módulo no llama al Hook que permite la actualización.

Debe modificar la función imageResize() en el archivo /modules/prestablog/prestablog.php:

Reemplace esto

         return ImageManager::write('jpg', $imagen_dest, $archivo_después);

Por esto

         $ret = ImageManager::write('jpg', $imagen_destino, $archivo_después);

Hook::exec('actionOnImageResizeAfter', ['dst_file' => $file_after, 'file_type' => 'jpg']);

return $ret;

después tus imágenes se actualizarán.

La caché estática sólo puede utilizarse si se conoce el contexto del visitante. El contexto contiene una serie de informaciones que no pueden deducirse únicamente a partir de la URL: moneda, grupos de usuarios, elección de cookies, impuestos que deben aplicarse, etc.

Este contexto se almacena en una cookie llamada "jpresta_cache_context" que se añade cuando el usuario visualiza una 1ª página. Una vez que la cookie está presente, se puede utilizar la caché estática.

Vaya a la configuración del módulo, en el menú "Sistema de caché" asegúrese de que "Prestashop Static!" está seleccionado. Si ya está marcada, seleccione "Sistema de archivos estándar" y guardar, a continuación, seleccione "Prestashop estática" y guardar de nuevo. Esto reactivará la caché estática.

El mensaje "precios específicos para clientes" significa que está conectado a un usuario que tiene reglas de precios específicas, por lo que no tiene sentido crear una caché, ya que sólo él podrá beneficiarse de ellas. Es preferible crear grupos de usuarios y crear reglas de precios para estos grupos.

Quizás estás simulando una pantalla de teléfono utilizando la consola de tu navegador, lo que explica por qué estás viendo esta vista móvil a pesar de tener una pantalla de escritorio.

Esto ocurre porque una cookie llamada 'jpresta_cache_context' guarda el contexto del visitante en el navegador. Este contexto incluye información sobre si la vista es 'móvil' o 'de escritorio'. Por lo tanto, si inicialmente ves páginas en modo de escritorio y luego cambias a modo móvil, la caché seguirá entregando la vista de escritorio.

Si deseas probar la vista móvil utilizando la consola de tu navegador, asegúrate de eliminar la cookie 'jpresta_cache_context' antes.

No, el módulo solo convierte imágenes JPG/PNG a formato WEBP. Se recomienda importar imágenes como JPG porque algunos navegadores aún no pueden cargar archivos WEBP. Además, creo que los JPG son mejores como imágenes originales porque Prestashop crea múltiples formatos/tamaños de imágenes, por lo que la imagen original debe ser de buena calidad.

Si utiliza el módulo "Google Tag Manager Enhanced Ecommerce" creado por "Comptoir du code", asegúrese de obtener la última versión del módulo y habilite la opción específica para su uso con módulos de caché de página completa.

Google Tag Manager

En cualquier caso, no es necesario marcar los módulos de Google Tag Manager como dinámicos.