[UPDATE 2025] Prestashop 1.7 Bugs Resolver Guideline
Set the stock to 0 for all product combinations that do not have an image
Safety step: preview affected rows with a SELECT
|
1 2 3 4 5 6 7 8 |
SELECT sa.id_product, sa.id_product_attribute FROM ps_stock_available sa JOIN ps_product_attribute pa ON pa.id_product_attribute = sa.id_product_attribute LEFT JOIN ps_product_attribute_image pai ON pai.id_product_attribute = pa.id_product_attribute WHERE pai.id_image IS NULL AND sa.id_product_attribute <> 0; |
Correct UPDATE query: set stock to 0 for combinations without an image
|
1 2 3 4 5 6 7 8 9 |
UPDATE ps_stock_available sa JOIN ps_product_attribute pa ON pa.id_product_attribute = sa.id_product_attribute LEFT JOIN ps_product_attribute_image pai ON pai.id_product_attribute = pa.id_product_attribute SET sa.quantity = 0, sa.out_of_stock = 0 WHERE pai.id_image IS NULL AND sa.id_product_attribute <> 0; |
How to Find PrestaShop Color Attributes Without Swatches (and See Which Products Use Them)
If you’re running a fashion or design-heavy PrestaShop store, your color swatches are a big part of the user experience. But over time, it’s very common to end up with:
-
color attributes with no color code,
-
no texture image either,
-
and yet those attributes are still attached to real products.
Result?
Empty color boxes, broken swatches, or combinations that are confusing for your customers.
In this post, we’ll build a small diagnostic PHP tool that:
-
Lists all color/texture attributes that have:
-
no color code, and
-
no texture image (no file in
/img/co/).
-
-
Shows which products and combinations are using each of those “broken” attributes.
You can then decide whether to fix them (assign a color or texture) or clean them up.
-
Connect to your server (FTP/SSH).
-
Go to the root of your PrestaShop installation (where
config/config.inc.phpis). -
Create a new file, for example: liste_attributs_sans_vignette.php
- Paste the script below into that file.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
<?php // Fichier à placer à la racine de PrestaShop require dirname(__FILE__) . '/config/config.inc.php'; require_once dirname(__FILE__) . '/init.php'; $id_lang = (int)Configuration::get('PS_LANG_DEFAULT'); $sql = 'SELECT a.id_attribute, a.color, al.name AS name, agl.name AS group_name FROM '._DB_PREFIX_.'attribute a JOIN '._DB_PREFIX_.'attribute_group ag ON a.id_attribute_group = ag.id_attribute_group JOIN '._DB_PREFIX_.'attribute_lang al ON a.id_attribute = al.id_attribute AND al.id_lang = '.(int)$id_lang.' JOIN '._DB_PREFIX_.'attribute_group_lang agl ON ag.id_attribute_group = agl.id_attribute_group AND agl.id_lang = '.(int)$id_lang.' WHERE ag.is_color_group = 1'; $rows = Db::getInstance()->executeS($sql); echo '<meta charset="utf-8">'; echo '<h2>Attributs SANS couleur et SANS texture + produits concernés</h2>'; foreach ($rows as $row) { $id_attribute = (int)$row['id_attribute']; $hasColor = !empty($row['color']); // Vérifier si une texture existe dans /img/co/ $hasTexture = false; foreach (['jpg', 'jpeg', 'png', 'gif'] as $ext) { if (file_exists(_PS_IMG_DIR_.'co/'.$id_attribute.'.'.$ext)) { $hasTexture = true; break; } } // On ne garde que ceux qui n'ont NI couleur NI texture if ($hasColor || $hasTexture) { continue; } // Récupérer les produits / combinaisons qui utilisent cet attribut $productSql = 'SELECT p.id_product, pl.name AS product_name, pa.id_product_attribute, pa.reference AS combination_ref FROM '._DB_PREFIX_.'product_attribute_combination pac JOIN '._DB_PREFIX_.'product_attribute pa ON pa.id_product_attribute = pac.id_product_attribute JOIN '._DB_PREFIX_.'product p ON p.id_product = pa.id_product JOIN '._DB_PREFIX_.'product_lang pl ON pl.id_product = p.id_product AND pl.id_lang = '.(int)$id_lang.' WHERE pac.id_attribute = '.$id_attribute.' ORDER BY p.id_product, pa.id_product_attribute'; $products = Db::getInstance()->executeS($productSql); echo '<p>'; echo '<strong>Attribut #'.$id_attribute.' - ' .htmlspecialchars($row['group_name']).' / ' .htmlspecialchars($row['name']).'</strong><br>'; echo 'Couleur : '.($row['color'] ?: '(vide)').'<br>'; if (!$products) { echo '<em>Aucun produit n\'utilise cet attribut.</em>'; } else { echo 'Produits / combinaisons utilisant cet attribut :<br><ul>'; foreach ($products as $prod) { echo '<li>ID produit '.$prod['id_product'].' - ' .htmlspecialchars($prod['product_name']) .' (ID combinaison '.$prod['id_product_attribute'] .($prod['combination_ref'] ? ', ref '.$prod['combination_ref'] : '') .')</li>'; } echo '</ul>'; } echo '</p><hr>'; } |
Open your browser and go to: https://your-shop.com/liste_attributs_sans_vignette.php
-
You’ll see a report like:
-
Attribute #12 – Color / Old Blue
Color: (empty)
Products / combinations using this attribute:-
Product ID 101 – Denim Jacket (Combination ID 555, ref DJ-BLUE-M)
-
Product ID 102 – Skinny Jeans (Combination ID 556, ref SJ-BLUE-38)
-
-
Attribute #27 – Color / Something
Color: (empty)
No product is using this attribute.
-
Every block corresponds to one attribute that:
-
belongs to a color group,
-
has no color code,
-
has no swatch image in
/img/co/, -
and optionally is still attached to one or more products.
Stretched product images on phone only
In the module Performance Pro > HTML Optimization > Enable Add missing image size
Save button do not display in product catalog
Prestashop 1.7
- Théme Warehouse : le bouton save ne s’affiche plus.
- Dans ./app/admin/themes/new-theme/public/product.css
- On recherche .product-footer input.save{display:none}
- et on le remplace par .product-footer input.save{display:inline-block}
- Supprimer /public_html/var/cache/*
- Supprimer le cache du navigateur
Prestashop 8
- ./adminXXX/themes/new-theme/public/product.css
Cannot write no-picture image to (categories) images folder
Rajouter une image à la langue (dispo dans img/c/en.jpg)
Going to the cart redirect you directly on homepage
In the module Performance Pro > Ressource Loading > Disable Prefetch on hover
Argument 4 Error
Argument 4 passed to PrestaShop\PrestaShop\Core\Domain\Order\QueryResult\OrderCustomerForViewing::__construct() must be of the type string, null given, called in /home/……/……/src/Adapter/Order/QueryHandler/GetOrderForViewingHandler.php on line 236
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
UPDATE ps_address SET phone = '' WHERE phone IS NULL; UPDATE ps_address SET phone_mobile = '' WHERE phone_mobile IS NULL; UPDATE ps_order_detail SET id_order_invoice = '0' WHERE id_order_invoice IS NULL; UPDATE ps_order_detail SET product_reference = '' WHERE product_reference IS NULL; UPDATE ps_order_detail SET product_supplier_reference = '' WHERE product_supplier_reference IS NULL; UPDATE ps_order_detail SET product_isbn = '' WHERE product_isbn IS NULL; UPDATE ps_order_detail SET product_upc = '' WHERE product_upc IS NULL; UPDATE ps_order_detail SET product_mpn = '' WHERE product_mpn IS NULL; UPDATE ps_order_detail SET download_hash = '' WHERE download_hash IS NULL; UPDATE ps_orders SET gift_message = '' WHERE gift_message IS NULL; UPDATE ps_order_payment SET transaction_id = '' WHERE transaction_id IS NULL; UPDATE ps_order_payment SET card_number = '' WHERE card_number IS NULL; UPDATE ps_order_payment SET card_brand = '' WHERE card_brand IS NULL; UPDATE ps_order_payment SET card_expiration = '' WHERE card_expiration IS NULL; UPDATE ps_order_payment SET card_holder = '' WHERE card_holder IS NULL; UPDATE ps_order_carrier SET tracking_number = '' WHERE tracking_number IS NULL; UPDATE ps_order_carrier SET id_order_invoice = '0' WHERE id_order_invoice IS NULL; UPDATE ps_order_carrier SET weight = '0' WHERE weight IS NULL; UPDATE ps_product SET isbn = '' WHERE isbn IS NULL; UPDATE ps_product SET upc = '' WHERE upc IS NULL; UPDATE ps_product SET mpn = '' WHERE mpn IS NULL; UPDATE ps_product SET unity = '' WHERE unity IS NULL; UPDATE ps_product SET supplier_reference = '' WHERE supplier_reference IS NULL; UPDATE ps_product SET location = '' WHERE location IS NULL; UPDATE ps_product SET redirect_type = '301-category' WHERE redirect_type = ''; UPDATE ps_product SET available_date = '2020-12-01' WHERE available_date IS NULL; UPDATE ps_product SET cache_default_attribute = '0' WHERE cache_default_attribute IS NULL; UPDATE ps_product_shop SET unity = '' WHERE unity IS NULL; UPDATE ps_product_shop SET redirect_type = '301-product' WHERE redirect_type = ''; UPDATE ps_product_shop SET available_date = '2020-12-01' WHERE available_date IS NULL; UPDATE ps_product_shop SET cache_default_attribute = '0' WHERE cache_default_attribute IS NULL; update ps_address set dni = '' where dni is null; update ps_address set other = '' where other is null; update ps_address set address2 = '' where address2 is null; update ps_address set company = '' where company is null; update ps_address set vat_number = '' where vat_number is null; |
Source : https://github.com/PrestaShop/PrestaShop/issues/22215
0 commentaire