Récemment
-
Warning: count(): Parameter must be an array or an object that implements Countable
Bugs & Améliorations il y a environ 6 jours3 -
Problème configuration php valeurs max-imput-vars
Bugs & Améliorations il y a environ 12 jours5 -
Nouvelle installation : erreur sur les ajouts d'images
Questions relatives à l'installation/upgrade il y a environ 13 jours11 -
Problème de lien vers tpl module custom
PhenixSuite il y a environ 20 jours3 -
Modification sur le thème "Craft"
Questions relatives à l'installation/upgrade 9 avr. 2025, 14:103 -
Installation avec Wamp
Questions relatives à l'installation/upgrade 9 avr. 2025, 13:531 -
date_upd produits
Bugs & Améliorations 24 mars 2025, 19:3013 -
Champ description longue pour les catégories
Modules 22 mars 2025, 16:315 -
Erreurs suite à la mise à jour
Questions relatives à l'installation/upgrade 17 mars 2025, 09:1910 -
Module personnalisation de produit
Modules 5 mars 2025, 13:113 -
Theme non fonctionnel - après MAJ de la Phenixsuite 1.6.2.32
Questions relatives à l'installation/upgrade 27 févr. 2025, 10:2113 -
TinyMCE
Bugs & Améliorations 16 févr. 2025, 18:202 -
Déclinaisons virtuelles avec fichiers
PhenixSuite 14 févr. 2025, 17:4610 -
[RESOLU]Lien téléchargement dans le mail
Discussion générale 14 févr. 2025, 17:436 -
[RESOLU]RGPD
Modules 10 févr. 2025, 17:035 -
Compatibilité des modules
Discussion générale 8 févr. 2025, 17:532 -
[RESOLU]Bug page Préférences Produits
Bugs & Améliorations 7 févr. 2025, 13:254 -
htaccess chatouilleux ?
Bugs & Améliorations 5 févr. 2025, 16:5814 -
Installation depuis boutique 1.6.1.17
Questions relatives à l'installation/upgrade 5 févr. 2025, 13:0819 -
[RESOLU]Module réassurance, permettre le html
Modules 31 janv. 2025, 14:154
Error logs (null object)
-
Ben là tu as une erreur dans la requête donc ça renvoie false et donc count() de false, ça ne le fait pas.
C'est cette requête qui pète:$q_orders = 'SELECT o.id_order FROM '._DB_PREFIX_.'orders o LEFT JOIN '._DB_PREFIX_.'order_detail od ON (od.id_order = o.id_order) WHERE o.valid = 1 AND od.product_id IN ('.implode(',', $products_id).')'; $orders = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($q_orders);
$products_id étant les id_product contenus dans le panier ou le produit de la page en cours. Donc on en revient à ton pb du hookFooter qui ne fait pas son job (à vérifier si tu n'as pas un override de ProductController.php)
-
@eolia Tiens d'ailleurs (suggestion) ne serait-il pas possible d'activer le mod debug uniquement pour les employés (vu que les clients ça risque de leur péter à la figure) et même qu'à certains employés (permissions) ? Ce serait-y pas cool ça ?
"Comment ça c'est pas cool l'alcool ? Alors pourquoi y'a "cool" dans "alcool" ?
-
Mon override de productcontroller :
(j'ai nettoyé, c'est pas de moi, mais y'avait tout le productcontroller là-dedans)<?php class ProductController extends ProductControllerCore { /* * module: alinkoverrideproductcontroller * date: 2023-12-02 10:00:22 * version: 0.1 */ public function initContent() { parent::initContent(); $tab = explode("<h3>", strip_tags($this->product->description, '<p><a><img><span><h3><div><li><ul><br><strong><b><iframe>')) ; foreach ($tab as $value) { if(strpos($value,'</h3>')>0) $tab_w[] = substr($value, strpos($value,'</h3>') + 5); } if(!empty($tab_w)) $this->context->smarty->assign('ONGLETS_CONTENT', $tab_w); preg_match_all("/<h3>(.*)<\/h3>/",$this->product->description,$out,PREG_PATTERN_ORDER); $this->context->smarty->assign('ONGLETS', $out[0]); $ONGLETS = $out[0]; } }
C'est pour mettre en forme d'onglets :
Mais j'avoue que ton module pour les onglets me fait de l'oeil...
-
Il est bien hooké dans displayFooterProduct et displayHeader, j'ai réinitialisé le module, placé en première position sur ces 2 hooks, mais toujours pareil.
-
la requête a un argument vide :
SELECT o.id_order
FROM rm_orders o
LEFT JOIN rm_order_detail od ON (od.id_order = o.id_order)
WHERE o.valid = 1 AND od.product_id IN ()Notice: Undefined index: product in /var/www/clients/client1/web4/web/modules/crossselling/crossselling.php on line 253
Notice: Trying to get property 'id' of non-object in /var/www/clients/client1/web4/web/modules/crossselling/crossselling.php on line 253
Notice: Undefined index: product in /var/www/clients/client1/web4/web/modules/crossselling/crossselling.php on line 256
Notice: Trying to get property 'id' of non-object in /var/www/clients/client1/web4/web/modules/crossselling/crossselling.php on line 256pourtant d(array($params['product']->id)) me retourne bien :
Array
(
[0] => 6748
)
-
Si je remplace :
$cache_id = 'crossselling|productfooter|'.(int)$params['product']->id;
par
$cache_id = 'crossselling|productfooter|ID du produit';
ça fonctionne, alors que d((int)$params['product']->id) me retourne bien l'ID du produit aussi...
-
A ajouter.
Je ne sais pas pourquoi chez toi cette variable n'est pas systématiquement remplie.
On peut aussi récupérer l'ID produit comme ça:
$id_product = (int)Tools::getValue('id_product');
-
Le problème c'est qu'elle l'est. d((int)$params['product']->id) avant ou après $cache_id me retourne bien l'ID produit.
Vu qu'il ne trouve pas l'index product, ne devrais-je pas faire un array_key_exists ?Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
-
parce que tu fais un d() qui est un die et arrête le script mais s'il est appelé plusieurs fois tu ne vois pas les autres (ou alors faire un p())
-
du coup :
if(array_key_exists('product',$params)){
$cache_id = 'crossselling|productfooter|'.(int)$params['product']->id;
}
else{
$cache_id = 'crossselling|productfooter|'.(int)Tools::getValue('id_product');
}
-
Bon en fait, si je clique sur un produit du crossselling, même erreur (ligne 256). Donc :
$id_product = (int)Tools::getValue('id_product');
$cache_id = 'crossselling|productfooter|'.$id_product;if (!$this->isCached('crossselling.tpl', $this->getCacheId($cache_id))) { $final_products_list = $this->getOrderProducts(array($id_product));
-
@eolia p(((int)$params['product']->id)) donne bien l'ID puis Notice: Undefined index: product in /var/www/clients/client1/web4/web/modules/crossselling/crossselling.php on line 253
Notice: Trying to get property 'id' of non-object in /var/www/clients/client1/web4/web/modules/crossselling/crossselling.php on line 253
puis 0
-
donc tu mets le if(isset(... comme je t'ai dit ;)
-
@eolia Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
NB: c'est un peu pénible cette contrainte de temps pour poster une réponse.if(null==((int)$params['product']->id)){
return;
} ben toujours le problème mais n'affiche plus les produits crossselling
-
@Olivier75009 a dit dans Error logs (null object) :
Bon en fait, si je clique sur un produit du crossselling, même erreur (ligne 256). Donc :
$id_product = (int)Tools::getValue('id_product');
$cache_id = 'crossselling|productfooter|'.$id_product;if (!$this->isCached('crossselling.tpl', $this->getCacheId($cache_id))) { $final_products_list = $this->getOrderProducts(array($id_product));
ça fait le job.
-
Tu es à quel endroit là, sur quelle page ?
-
Sur la page produit (hookProductFooter de toute façon)
Grrrr:
En tant que nouvel utilisateur, vous ne pouvez poster que toutes les 120 seconde(s) jusqu'à ce que vous obteniez une réputation de 3 - patientez avant de publier de nouveau.
-
Ton pb est ailleurs, pas normal que le module soit appelé 2 fois (et à mon avis, c'est un ajax qui l'appelle la seconde fois et forcément il n'y a pas d'id_product).
Mois si je fais un p($params['product']->id); je n'ai qu'une ligne avec le bon id.
-
Disons que j'ai une valeur (l'ID) et après la notice un 0.
<xmp style="text-align: left;">5992</xmp>
...
<b>Notice</b>: Undefined index: product in <b>/var/www/clients/client1/web4/web/modules/crossselling/crossselling.php</b> on line <b>269</b><br> <br> <b>Notice</b>: Trying to get property 'id' of non-object in <b>/var/www/clients/client1/web4/web/modules/crossselling/crossselling.php</b> on line <b>269</b><br>
<xmp style="text-align: left;">0</xmp>Je suppose que le second est $final_products_list = $this->getOrderProducts(array($params['product']->id
-
le second te parle de la ligne 269