Jump to content

Shonen

Members
  • Posts

    287
  • Joined

  • Last visited

Profile Information

  • Location
    France
  • Activity
    Web development agency

Recent Profile Visitors

950 profile views

Shonen's Achievements

  1. Ok, j'ai honte, mais il s'agit de ma ligne $regl = explode('_', $_POST[$strRegl]); Je ne sais même plus pourquoi j'en avais besoin, mais elle est totalement inutile. Sujet clos ! Merci pour la réponse tout de même @doekia
  2. Pas de souci je suis preneur de tous conseils ! En effet depuis hier je me suis rabattu sur l'utilisation de pSQL après avoir regardé le code source de la fonction update() de la classe Db de Prestashop. $queryRegl = "UPDATE `"._DB_PREFIX_."pscom_product_fields_lang` pfl LEFT JOIN `" . _DB_PREFIX_ . "pscom_product_fields` pf ON pf.id_product_fields = pfl.id_product_fields SET `reglementation`='".pSQL($reglVal, true)."' WHERE id_product=".$params['id_product']." AND id_lang=".$language['id_lang']; Par contre pour l'utilisation du underscore, il s'agit d'un bloc wysiwyg, donc c'est l'utilisation native. Par exemple backOffice : Front-Office (et donc base de données) : Tout ce qui est _ et après _ n'est pas inscrit en BDD. Pourtant, voici le retour AJAX de la console : En base de données, ça s'arrête à Et puis si le client souhaite mettre des _ dans son contenu, c'est aussi impossible.
  3. Bonjour à tous. J'ai créé mon propre module qui permet à mon client d'avoir des champs supplémentaires sur sa page produit, pour ça j'ai créé deux nouvelles tables dans la base de données (pour la lang), et leurs colonnes respectives de type text (pour remplir avec du HTML). Exemple d'une nouvelle colonne créé dans ma nouvelle classe : 'reglementation' => array('type' => self::TYPE_HTML, 'lang' => true, 'required' => false, 'validate' => 'isCleanHtml') Ma fonction d'exemple pour l'ajout d'une colonne : /* reglementation */ $strRegl = 'reglementation_'.$language['id_lang']; $regl = explode('_', $_POST[$strRegl]); $reglVal = $regl[0]; $queryRegl = "UPDATE `"._DB_PREFIX_."pscom_product_fields_lang` pfl LEFT JOIN `" . _DB_PREFIX_ . "pscom_product_fields` pf ON pf.id_product_fields = pfl.id_product_fields SET reglementation='".addslashes($reglVal)."' WHERE id_product=".$params['id_product']." AND id_lang=".$language['id_lang']; Db::getInstance()->Execute($queryRegl); Jusqu'ici tout fonctionne, lors de l'édition du champ reglementation en back-office, le code HTML est bien inclut en base de données. SAUF Si un underscore vient s'incruster. Là tout s'arrête juste avant celui-ci. Exemple de contenu dans la base que je peux avoir : <div> <p>Voici un exemple de contenu HTML inscrit en base, et un lien : <a href="https://monsuperlien.ndd" target=" La détection du _ pour _blank n'est pas inscrite en base de donnée, ce qui génère des bug en front-office puisque la ligne se termine par une " ici. J'ai vraiment tout essayé modifier l'interclassement de ma BDD pour passer en utf8mb4_unicode_ci Enlever le addslashes (l'update ne fonctionne alors même plus) Utiliser d'autres fonctions comme htmlspecialchars (mais je souhaite conserver le code HTML) Utiliser getInstance()>update() (impossible car j'ai un LEFT JOIN obligatoire dans ma query) Si vous avez des idées je suis preneur !
  4. Still work like a charm in Prestashop 1.7.8.5 for override/modules/my_module/controllers/front But does not work for admin, as your AdminController I put in override/classes/controller load another admin theme (new-theme instead of default). Yet great workaround thanks.
  5. Si jamais ton problème ne vient pas de là, j'ai déjà eu le soucis sur une mise à jour Presta. Dans ma base de données, toutes les clés d'incrémentation s'étaient mises à 0, donc aucun auto-increment ne fonctionnait. Vérifie peut-être ta base on sait jamais.
  6. Ok I understand well now. Maybe you can try this solution from another post ? I didn't tried it, but this topic is quite well known.
  7. I'm searching for the exact same solution, if anyone find out how to change this behavior without touching default .js file, I'll be glad ! I tried something like this in my theme custom.js but it doesn't change anything /* override touchspin behavior */ $('#quantity_wanted').TouchSpin({ verticalbuttons:false, verticalupclass:"fa fa-touchspin-up", verticaldownclass:"fa fa-touchspin-down", buttondown_class:"btn btn-touchspin js-touchspin js-increase-product-quantity", buttonup_class:"btn btn-touchspin js-touchspin js-decrease-product-quantity" });
  8. I'll guess it's a brand new 1.7 so. Try to go Parameters > Seo & Urls, and clic on the Save button from URL format tab. It'll create a new htaccess, sometime it saves things.
  9. Hi, I really try to understand but I think it's too hard for me. Looking at your last picture, you're doing -600kr reduction for everyone, Guld. -697kr for Personale Then you have -10% for the group Kundeklub. So the first 2 pictures you're showing are perfectly normal, you're probably connecting to a Kundeklub account to test the -10% discount. What I don't understand is this : "It's meant to take the best discount 600.00 DKK but is instead taking 10% for the member discount." What are you trying to achieve exactly ?If you want your -10% reduction taking account of the -600kr reduction for this product, just delete the 2 specific prices for all customers and Guld, then just do -600 to the price of the product. And the reduction on Personale become -97kr.
  10. A tester car dans ta requête il y'a des éléments non natifs à Prestashop, donc c'est intestable (table arva_orders ?) SELECT SQL_CALC_FOUND_ROWS a.`id_order`, `reference`, `total_paid_tax_incl`, `payment`, a.`date_add` AS `date_add` , a.id_currency, a.id_order AS id_pdf, c.`id_customer` as `id_client`, CONCAT(LEFT(c.`firstname`, 1), '. ', c.`lastname`) AS `customer`, osl.`name` AS `osname`, os.`color`, IF((SELECT so.id_order FROM `arva_orders` so WHERE so.id_customer = a.id_customer AND so.id_order < a.id_order LIMIT 1) > 0, 0, 1) as new, country_lang.name as cname, IF(a.valid, 1, 0) badge_success, shop.name as shop_name FROM `ps_orders` a LEFT JOIN `ps_customer` c ON (c.`id_customer` = a.`id_customer`) INNER JOIN `ps_address` address ON address.id_address = a.id_address_delivery INNER JOIN `ps_country` country ON address.id_country = country.id_country INNER JOIN `ps_country_lang` country_lang ON (country.`id_country` = country_lang.`id_country` AND country_lang.`id_lang` = 1) LEFT JOIN `ps_order_state` os ON (os.`id_order_state` = a.`current_state`) LEFT JOIN `ps_order_state_lang` osl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = 1) LEFT JOIN `ps_shop` shop ON a.`id_shop` = shop.`id_shop` WHERE 1 AND a.`date_add` >= '2022-07-01 0:0:0' AND a.`date_add` <= '2023-06-30 23:59:59' AND a.id_shop IN (1, 3, 4) ORDER BY a.id_order DESC LIMIT 0, 1000
  11. Tu trouveras normalement dans le post que je fais suivre, le .zip du module pour la version 1.6 Sinon en perso j'avoue que j'utilise un module payant pour mes clients. https://addons.prestashop.com/fr/seo-referencement-naturel/7507-sitemaps-pro-multilingues-et-multi-boutiques-seo.html
  12. For Prestashop 1.7.8 this is the solution : Create the file /themes/your_theme/templates/catalog/listing/product-list.tpl Extend the original theme file and just modifiy the product_list block (thoses next lines are the full product-list.tpl, need nothing more) : {extends file='parent:catalog/listing/product-list.tpl'} <!-- show 4 product instead of 3 (notice the col-xl-3) --> {block name='product_list'} {include file='catalog/_partials/products.tpl' listing=$listing productClass="col-xs-6 col-xl-3"} {/block} Now in your product list (on category pages) you'll have 4 products.
  13. Je me répond à moi même et aux autres qui auraient besoin. J'ai résolu mon problème en créant un getter pour ma nouvelle variable, et en instanciant mon champs avec ce getter. Et surtout récupérer l'ID en cours avec $params['id']. private function getNewvalue($customerId) { $db = \Db::getInstance(); $request = "SELECT `new_value` FROM `". _DB_PREFIX_ ."customer` where `id_customer` = ".$customerId; return $db->getValue($request); } public function hookActionCustomerFormBuilderModifier(array $params) { //Récupération du form builder /** @var \Symfony\Component\Form\FormBuilder $formBuilder */ $formBuilder = $params['form_builder']; $customerId = $params['id']; //Ajout de notre champ spécifique $formBuilder->add('new_value', //Cf génériques symonfy https://symfony.com/doc/current/reference/forms/types.html // et spécificiques prestashop https://devdocs.prestashop.com/1.7/development/components/form/types-reference/ \Symfony\Component\Form\Extension\Core\Type\TextType::class, [ 'label' => $this->l('New Value'), //Label du champ 'required' => false, //Requis ou non 'constraints' => [ //Contraintes du champs //cf. génériques symfony : https://symfony.com/doc/current/reference/constraints.html // Ou vous pouvez écrire la votre cf. https://symfony.com/doc/current/validation/custom_constraint.html new \Symfony\Component\Validator\Constraints\Length([ 'max' => 50, 'maxMessage' => $this->l('Max characters allowed : 50'), ]), ], // Texte d'aide 'help' => $this->l('My new value') ] ); //Ou surchargée ici $params['data']['new_value'] = $this->getNewvalue($customerId); //Il faut bien penser à mettre cette ligne pour mettre à jour les données au formulaire $formBuilder->setData($params['data']); }
  14. Merci c'est ce qu'il me manquait aussi ! J'ai comme toi créé une nouvelle variable pour mon Customer. J'ai l'override de la classe, la modif de la Grid, et l'update qui fonctionne. J'ai toutefois un souci dont tu auras probablement la solution ! Je n'arrive pas à afficher la valeur de mon objet sur la fiche Customer, alors que ça fonctionne sur la Grille. L'édition fonctionne aussi, il me manque seulement l'affichage de la valeur actuelle (si non vide). Ci-après ma fonction qui incrémente la ficher Customer public function hookActionCustomerFormBuilderModifier(array $params) { //Récupération du form builder /** @var \Symfony\Component\Form\FormBuilder $formBuilder */ $formBuilder = $params['form_builder']; //Ajout de notre champ spécifique $formBuilder->add('new_value', //Cf génériques symonfy https://symfony.com/doc/current/reference/forms/types.html // et spécificiques prestashop https://devdocs.prestashop.com/1.7/development/components/form/types-reference/ \Symfony\Component\Form\Extension\Core\Type\TextType::class, [ 'label' => $this->l('New Value'), //Label du champ 'required' => false, //Requis ou non 'constraints' => [ //Contraintes du champs //cf. génériques symfony : https://symfony.com/doc/current/reference/constraints.html // Ou vous pouvez écrire la votre cf. https://symfony.com/doc/current/validation/custom_constraint.html new \Symfony\Component\Validator\Constraints\Length([ 'max' => 50, 'maxMessage' => $this->l('Max characters allowed : 50'), ]), ], // Texte d'aide 'help' => $this->l('My new value') ] ); //Ou surchargée ici // $params['data']['new_value'] = $params['data']['new_value']; //Il faut bien penser à mettre cette ligne pour mettre à jour les données au formulaire $formBuilder->setData($params['data']); }
  15. Un problème javascript semble t-il. Regarde dans l'onglet console (F12) si tu as des erreurs. Vérifie ta version de PHP, tu dois être entre 7.1 et 7.4, avec en recommandé 7.4 Si tu as un soucis avec le thème natif, php 7.4 et sans modules tiers, réinstalle Prestashop car tu as un soucis avec l'archive de départ.
×
×
  • Create New...