WebP

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.

Wenn nach der Installation des Moduls einige Bilder in Ihrem Shop nicht mehr angezeigt werden, wie das Logo, die Bilder der CMS-Seiten, die Bilder im Backoffice usw., liegt das an der .htaccess-Datei im Verzeichnis /img. Diese Datei blockiert alle PHP-Skripte, selbst wenn es sich um eine Umleitung handelt (das Skript befindet sich nicht wirklich in diesem Verzeichnis).

Um dieses Problem zu beheben, müssen Sie die Datei /img/.htaccess in /img/.htaccess.off umbenennen

Ja, alle Bilder Ihres Shops werden automatisch in das WEBP-Format konvertiert. Auch Bilder aus CMS oder anderen Modulen wie Blog.

JA, Sie brauchen noch ein WEBP-Modul für Prestashop! Denn die Funktion hat einen Fehler in PS 8.0. Er sollte in PS 8.1 behoben werden, aber ich werde dies überprüfen, sobald es veröffentlicht wird, weil ich nicht weiß, ob JPG-Bilder in Browsern angezeigt werden, die das WEBP-Format nicht lesen können, wie Safari (iPhone).

Dies war sehr schwierig, eine Konfiguration zu finden, die gut funktioniert. Ich bin kein Experte in der Konfiguration von nginx, so dass ich vermute, es gibt einen anderen Weg, es zu tun. Wenn Sie diese Konfiguration verbessern wollen, dann kontaktieren Sie mich, ich werde gerne diesen Beitrag aktualisieren, um anderen Leuten zu helfen!

Hier ist meine Lösung (seien Sie nett).

Vor dem Abschnitt "server", platzieren Sie diesen Code:

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

Er wird uns sagen, ob der Browser des Besuchers WEBP-Bilder lesen kann.

Sie haben wahrscheinlich mehrere Zeilen "rewrite" für alle Bilder, platzieren Sie den folgenden Code direkt davor:

# 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;
}

WARNUNG: Wenn Sie das eigenständige WEBP-Komprimierungsmodul verwenden, müssen Sie „jprestaspeedpack“ durch „jprestawebp“ ersetzen.

Kontaktieren Sie mich, wenn Sie Hilfe benötigen oder das Skript verbessern können!

ja, Browser, die das WEBP-Format nicht lesen können, erhalten das Originalformat (JPG/PNG).

Das Modul ruft nicht den Hook auf, der die Aktualisierung ermöglicht.

Sie müssen die Funktion imageResize() in der Datei /modules/prestablog/prestablog.php ändern:

Ersetzen Sie diese

         return ImageManager::write('jpg', $dest_image, $file_after);

Durch dies

         $ret = ImageManager::write('jpg', $dest_image, $file_after);

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

return $ret;

danach werden Ihre Bilder aktualisiert.

Nein, das Modul konvertiert nur JPG/PNG-Bilder in das WEBP-Format. Es wird empfohlen, Bilder als JPG hochzuladen, da einige Browser immer noch keine WEBP-Dateien laden können. Außerdem halte ich JPG für bessere Originalbilder, da Prestashop mehrere Formate/Größen von Bildern erstellt. Deshalb sollte das Originalbild von guter Qualität sein.