WebP
If you are using Nginx, then make sure your configuration is as follow:
"Proxy mode" must be ON, other options must be OFF.
Wenn nach der Installation des Moduls einige Bilder in Ihrem Shop, wie das Logo, die Bilder der CMS-Seiten, die Bilder im Backoffice usw., nicht mehr angezeigt werden, liegt dies wahrscheinlich an einer .htaccess-Datei in den Verzeichnissen /img und /img/cms. Diese Datei blockiert alle PHP-Skripte, selbst wenn es sich nur um eine Weiterleitung handelt (das Skript befindet sich nicht wirklich in diesem Verzeichnis).
Um dieses Problem zu beheben, müssen Sie eine Ausnahme für unseren webp.php-Konverter wie folgt hinzufügen:
<IfModule mod_php5.c> php_flag engine off
# Enable PHP only for webp.php (Speed Pack) <Files "webp.php"> php_flag engine on </Files> </IfModule> # Apache 2.2 <IfModule !mod_authz_core.c> Order deny,allow Deny from all <Files ~ "webp.php|(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp)$"> Allow from all </Files> </IfModule> # Apache 2.4 <IfModule mod_authz_core.c> Require all denied <Files ~ "webp.php|(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|ico|webp)$">
Require all granted </Files> </IfModule>
Or for /img/cms/.htaccess
<IfModule mod_php5.c> php_flag engine off # Enable PHP only for webp.php (Speed Pack) <Files "webp.php"> php_flag engine on </Files> </IfModule> # Enable webp.php (Speed Pack) <Files "webp.php"> Order allow,deny Allow from all </Files> deny from all <Files ~ "(?i)^.*\.(jpg|jpeg|gif|png|bmp|tiff|svg|pdf|mov|mpeg|mp4|avi|mpg|wma|flv|webm|webp)$"> order deny,allow allow from all </Files>
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|jpeg|png)$" /img/c/$1$2.webp_compressor last; rewrite "^/c/([_a-zA-Z-]+)/(.*)\.(jpg|jpeg|png)$" /img/c/$1.webp_compressor last; rewrite "^/([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.(jpg|jpeg|png)$" /img/p/$1/$1$2.webp_compressor last; rewrite "^/([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?/(\P{M}\p{M}*)*\.(jpg|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" /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|jpeg|png)$" $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.