Prestag0od Posted March 11, 2023 Share Posted March 11, 2023 (edited) Θέλω να επενεργοποιήσω τα Friendly URL's μόνο για τις εικόνες προϊόντων και όχι για όλο το υπόλοιπο eshop. Γιατί το URL των φωτογραφιών τώρα είναι αυτής της μορφής /471/product_name.jpg /466/product_name.jpg /479/product_name.jpg Είναι σαν να έχουν δηλαδή το ίδιο filename. Ενώ εγώ θέλω το πραγματικό URL όπως είναι όταν δεν είναι ενεργοποιημένo τα Friendly URL's του Prestashop Βρήκα πως αυτό γίνετε στα classes/Link.php Για παράδειγμα κάποιος μπόρεσε να το επενεργοποιήσει για τις category images ενώ δείνει και ένα Link απο κάποιον που το απενεργοποίησε και απο τα product images αλλά είναι απο παλαιότερη έκδοση prestashop. Στα overide/classes στην εγκατάστασή μου υπάρχει ήδη ένα Link.php το παρακάτω ίσως λόγο του super speed cache module Που έχω εγκαταστήσει. Κάποιος που γνωρίζει καλύτερα τον κώδικα του prestashop μπορεί να βοηθήσει παρακαλώ να κάνω comment τις γραμμές που πρέπει? class Link extends LinkCore { /* * module: ets_superspeed * date: 2022-08-23 14:27:26 * version: 1.5.5 */ public function getImageLink($name, $ids, $type = null) { $notDefault = false; if (version_compare(_PS_VERSION_, '1.7', '>=')) { $moduleManagerBuilder = PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder::getInstance(); $moduleManager = $moduleManagerBuilder->build(); static $watermarkLogged = null; static $watermarkHash = null; static $psLegacyImages = null; if ($watermarkLogged === null) { $watermarkLogged = Configuration::get('WATERMARK_LOGGED'); $watermarkHash = Configuration::get('WATERMARK_HASH'); $psLegacyImages = Configuration::get('PS_LEGACY_IMAGES'); } if (!empty($type) && $watermarkLogged && ($moduleManager->isInstalled('watermark') && $moduleManager->isEnabled('watermark')) && isset(Context::getContext()->customer->id) ) { $type .= '-' . $watermarkHash; } } else { if (($type != '') && Configuration::get('WATERMARK_LOGGED') && (Module::isInstalled('watermark') && Module::isEnabled('watermark')) && isset(Context::getContext()->customer->id)) { $type .= '-'.Configuration::get('WATERMARK_HASH'); } $psLegacyImages =Configuration::get('PS_LEGACY_IMAGES'); } $is_webp = false; $theme = ((Shop::isFeatureActive() && file_exists(_PS_PROD_IMG_DIR_ . $ids . ($type ? '-' . $type : '') . '-' . Context::getContext()->shop->theme_name . '.jpg')) ? '-' . Context::getContext()->shop->theme_name : ''); if (($psLegacyImages && (file_exists(_PS_PROD_IMG_DIR_ . $ids . ($type ? '-' . $type : '') . $theme . '.jpg'))) || ($notDefault = strpos($ids, 'default') !== false)) { if ($this->allow == 1 && !$notDefault) { $uriPath = __PS_BASE_URI__ . $ids . ($type ? '-' . $type : '') . $theme . '/' . $name . '.jpg'; } else { $uriPath = _THEME_PROD_DIR_ . $ids . ($type ? '-' . $type : '') . $theme . '.jpg'; } if(file_exists(_PS_PROD_IMG_DIR_ . $ids . ($type ? '-' . $type : '') . '.webp')) $is_webp = true; } else { $splitIds = explode('-', $ids); $idImage = (isset($splitIds[1]) ? $splitIds[1] : $splitIds[0]); $theme = ((Shop::isFeatureActive() && file_exists(_PS_PROD_IMG_DIR_ . Image::getImgFolderStatic($idImage) . $idImage . ($type ? '-' . $type : '') . '-' . (int) Context::getContext()->shop->theme_name . '.jpg')) ? '-' . Context::getContext()->shop->theme_name : ''); if ($this->allow == 1) { $uriPath = __PS_BASE_URI__ . $idImage . ($type ? '-' . $type : '') . $theme . '/' . $name . '.jpg'; } else { $uriPath = _THEME_PROD_DIR_ . Image::getImgFolderStatic($idImage) . $idImage . ($type ? '-' . $type : '') . $theme . '.jpg'; } if(file_exists(_PS_PROD_IMG_DIR_ . Image::getImgFolderStatic($idImage) . $idImage . ($type ? '-' . $type : '') . '.webp')) $is_webp = true; } if($is_webp) { $url = $this->protocol_content . Tools::getMediaServer($uriPath) . $uriPath; return str_replace('.jpg','.webp',$url); } else return $this->protocol_content . Tools::getMediaServer($uriPath) . $uriPath; } } Edited March 12, 2023 by Prestan0ob (see edit history) Link to comment Share on other sites More sharing options...
sanctusmob Posted March 12, 2023 Share Posted March 12, 2023 13 hours ago, Prestan0ob said: Θέλω να επενεργοποιήσω τα Friendly URL's μόνο για τις εικόνες προϊόντων και όχι για όλο το υπόλοιπο eshop. Γιατί θέλεις να το κάνεις αυτό? Δεν προτείνετε... 13 hours ago, Prestan0ob said: Γιατί το URL των φωτογραφιών τώρα είναι αυτής της μορφής /471/product_name.jpg /466/product_name.jpg /479/product_name.jpg Είναι σαν να έχουν δηλαδή το ίδιο filename. και τι μορφή θέλεις να έχει? αυτή που έχει τον δίσκο? πχ για το /471/product_name.jpg θα είναι /img/p/4/7/1/471.jpg Στο htaccess δες πρώτα. Εκεί γίνετε το rewrite. Link to comment Share on other sites More sharing options...
Prestag0od Posted March 12, 2023 Author Share Posted March 12, 2023 1 hour ago, sanctusmob said: Γιατί θέλεις να το κάνεις αυτό? Δεν προτείνετε... και τι μορφή θέλεις να έχει? αυτή που έχει τον δίσκο? πχ για το /471/product_name.jpg θα είναι /img/p/4/7/1/471.jpg Στο htaccess δες πρώτα. Εκεί γίνετε το rewrite. Δεν με ενδιαφέρει το SEO του συγκεκριμένου eshop αλλά και το google δίνει σημασία στις ονομασίες των φωτογραφιών απο ελάχιστα εως και καθόλου. Κάνω export τα προϊόντα σε XML, CSV και εκεί που γίνονται Import εαν έχουν το ίδιο όνομα υπερκαλύπτει η μια την άλλη και έτσι στην ουσία εαν έχει 10 φωτογραφίες εμφανίζονται και οι 10 ίδιες. Θέλω ακριβώς όπως γράφεις, την μορφή που έχει στον δίσκο. Δηλαδή την μορφή που έχει πριν ενεργοποιήσει κάποιος τα Friendly URL του Prestashop. Δεν αρκεί μόνο η αλλαγή στο htaccess, πρέπει να αλλάξει και το classes/Link.php όπως ακριβώς έκανε ο φίλος μας παρακάτω αλλά σε prestashop 1.6 νομίζω όχι σε 1.7. Link to comment Share on other sites More sharing options...
Prestag0od Posted March 12, 2023 Author Share Posted March 12, 2023 Ok το βρήκα ποια γραμμή δημιουργεί το friendly URL των εικόνων μέσα στο classes/Link.php if ($this->allow == 1) { $uriPath = __PS_BASE_URI__ . $idImage . ($type ? '-' . $type : '') . $theme . '/' . $name . '.jpg'; } else { $uriPath = _THEME_PROD_DIR_ . Image::getImgFolderStatic($idImage) . $idImage . ($type ? '-' . $type : '') . $theme . '.jpg'; Οπότε άλλαξα το εξής απο if ($this->allow == 1) σε if ($this->allow == 1 && false) (SOLVED) Link to comment Share on other sites More sharing options...
sanctusmob Posted March 12, 2023 Share Posted March 12, 2023 Μπορείς να μην απενεργοποιήσεις τίποτα και απλός από το id της εικόνας να παράγεις το path /img/p/4/7/1/471.jpg μπορείς να αφήσεις και αυτή την μορφή /471/product_name.jpg , μπορείς να έχεις και thumbs /471-large_default/product_name.jpg και όπου product_name μπορείς να βάλεις ότι γουστάρεις... θα παίξει. Δηλαδή στο xml μπορείς να γράφεις /471/1.jpg ή /471/Image_1.jpg ή /471/δεν_έχει_σημασία_τι_γράφει_εδώ_1.jpg /466/2.jpg ή /466/Image_2.jpg ή /466/δεν_έχει_σημασία_τι_γράφει_εδώ_2.jpg /479/3.jpg ή /479/Image_3.jpg ή /479/δεν_έχει_σημασία_τι_γράφει_εδώ_3.jpg π.χ. με βάση το image order όλα τα παραπάνω είναι valid url και δεν κάνουν redirect. 1 Link to comment Share on other sites More sharing options...
Prestag0od Posted March 12, 2023 Author Share Posted March 12, 2023 Ναι το κατάλαβα πως λειτουργεί. Άφησα την default μορφή /img/p/4/7/1/471.jpg που με εξυπηρετεί. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now