Jump to content

Sbizz

Members
  • Posts

    154
  • Joined

  • Last visited

  • Days Won

    2

Sbizz last won the day on November 3 2011

Sbizz had the most liked content!

About Sbizz

  • Birthday 06/26/1991

Sbizz's Achievements

Newbie

Newbie (1/14)

10

Reputation

  1. En quoi ça rejoint ton topic ? Justement tout le contraire ! Le fait de créer 3 fichiers pour séparer les choses implique 3 appels à file_exists, car Prestashop devra vérifier leur existence avant de tenter quoi que ce soit.
  2. Comme je l'ai dit, le problème de lenteur ne vient pas d'ici. Tu proposes une idée qui est de mieux séparer les fichiers des modules, comme ça, seuls les fichiers utiles sont appelés. Or, on peut très bien le gérer si on y met du sien. Tu veux parler de lignes de code, moi je vais te parler de requêtes SQL. Active le fichier SQL dans /override/classes/ et affiche en bas de la page le nombre de requêtes exécutées : tu verras que tes lignes de code, que tu veux enlever, ne sont qu'une goutte d'eau dans un océan. Je dis pas que ton idée ne va pas réduire le temps de chargement d'une page, je te dis que c'est pas suffisant et que ça ne se verra pas, parce que les configurations des serveurs sont maintenant assez puissantes, serveurs mutualisés ou non.
  3. La compilation en bytecodes est ridiculement petite et tenter d'améliorer les performances ne sert pas à grand chose car les performances des serveurs sont maintenant assez élevées pour ne pas en tenir compte _ hors très grosse librairie comme dit au dessus, mais elles atteignent un nombre de lignes colossal _.
  4. Apparemment, tu n'as compris ce qu'est un langage compilé et ce qu'est un langage interprété. Si on part de ton principe, tous les langages sont compilés. Python, JavaScript, SQL, JAVA, etc. or c'est faux. Un langage compilé a besoin d'un compilateur, gcc, par exemple. Ça veut dire que les fichiers sources sont convertis. En PHP, tes fichiers sources ne sont pas convertit. L’interpréteur lit le fichier au fur et a mesure. Tu as raison sur le fait que PHP fait parti des langages qui sont compilés en bytecodes (Java est LE cas le plus frappant), qui eux même sont ensuite interprétés. Mais ce n'est pas un langage compilé. Il faut bien différencier les deux. Néanmoins, je n'apportai qu'une précision sur ce fait, pas sur le fait que la rapidité d’exécution n'est pas influencé par une nouvelle méthode de codage Source: http://www.journaldu...terpretes.shtml
  5. Il existe effectivement des logiciels permettant de compiler PHP, pour en faire des EXE ou même, comme Facebook, le transformer en un autre langage (en passant, c'est pas PHP qui est compilé mais le C++ !). Interpréter un code et compiler un code, c'est loin d'être pareil et surtout, c'est loin d'avoir le même temps d’exécution. Donc restons dans le sujet, qui est Prestashop et dont le PHP est interprété et non compilé. Ton idée risque de pénaliser pas mal de modules. D'une part il faudra effectuer tous les changements que cela entraîne, ce qui est loin d'être simple et rapide. D'autre part, il faut assurer une très bonne compatibilité. À ce stade, je doute que ce soit une bonne idée, bien qu'intéressant. Car il est vrai que différencier le BO du FO est intéressant, mais Prestashop ne nous interdit pas non plus de faire des sous dossiers dans notre module.
  6. Bonjour. Il serait intéressant de nous présenter ce code, car là comme ça, je vois pas comment t'aider.
  7. Bonjour. Votre idée est +/- bonne. Néanmoins, petit détail : PHP n'est pas un langage compilé Il est interprété. Ensuite, j'ai du mal à saisir votre approche. Dans votre module, vous pouvez de base le gérer... Vous pouvez détecter si vous êtes du côté BO ou FO, vous pouvez détecter combien de fois est appelé le fichier, etc. Le plus gros problème de Prestashop ne se trouve pas ici. Il se trouve surtout sur le fait que y'a VRAIMENT trop de requêtes qui sont faites et qui, amha, ne sont pas du tout optimisées.
  8. Bonjour. $('body#product p#add_to_cart input').unbind('click').click(function(){ Vous devez saisir le bon ID pour la balise <p> sinon cela ne marchera pas.
  9. Enlevez le Tools::getValue ! $category = new Category(intval($product['id_category_default']), intval($cookie->id_lang)); $products[$key]['name_category'] = $category->name;
  10. Concernant les catégories, vous devez impérativement indiquer la catégorie par défaut de vos produits pour ce que vous souhaitez faire. Cela implique donc de faire attention que dans la fiche de votre produit, via l'administration, la catégorie par défaut ne soit pas "Accueil". Ensuite, pour votre demande, il faut aller dans les controlleurs /controllers/BestSalesController.php et /controllers/PricesDropController.php. Le tableau des produits est construit dans la fonction process(). Il faudrait donc déjà les mettre dans une variable, car actuellement elles sont directement assignées à SMARTY et vous ne pourrez donc pas les modifier. Par exemple, pour les Meilleurs ventes : $products = Product::getPricesDrop((int)(self::$cookie->id_lang), (int)($this->p) - 1, (int)($this->n), false, $this->orderBy, $this->orderWay) et vous assignez à "products" la variable $products. Une fois fait, vous pouvez modifier le tableau. Il suffit de faire un foreach dessus et d'y rajouter vos données : foreach ($products AS $key => $product) { $name = Category::getCategoryInformations(array($product['id_category_default'])); $products[$key]['name_category'] = $name['name']; } J'ai codé rapidement, à vous de régler les erreurs possibles et de faire la même chose pour les Promotions.
  11. Bonjour. Le soucis est que les pages Meilleurs ventes et Promotions ont leur propre controlleur. Ils ne se basent pas sur le CategoryController. De ce fait, vous n'avez pas accès à la classe Category. Néanmoins, j'ai une question : vous souhaitez afficher quelle catégorie ? Car un produit peut se trouver dans plusieurs catégories ("Accueil" et "Avec photo" par exemple). Chaque produit possède une variable nommée "id_category_default". Ce que vous pouvez faire, c'est surcharger le tableau qui est créé et envoyé à SMARTY de tel sorte que vous rajoutez une variable name_category et vous utiliserez la fonction Category::getCategoryInformations(ids_category). Attention, le paramètre a envoyer est un tableau, donc : array($id_category_default).
  12. Bonjour. Le hook a utiliser n'est pas orderConfirmation mais newOrder. Il s'execute quand la fonction validateOrder est appelée, qui elle-même est appelée quand une commande est confirmée et validée. orderConfirmation vous permet juste d'afficher un message de confirmaton en plus de celui affiché par Prestashop. Pour votre système, newOrder vous permettra de récupérer tout ce qu'il faut : Hook::newOrder($cart, $order, $customer, $currency, $orderStatus); Pour écrire un fichier CSV, il existe une fonction : http://php.net/manua...ion.fputcsv.php. Il vous suffit de regarder les exemples pour savoir comment l'utiliser. Il n'y a pas grand chose à ajouter. Ne vous souciez pas du reste, faites juste votre requête (ou si les données sont déjà stockée dans les variables envoyées _j'ai pas regardé en détail_ ; un print_r vous permettra devoir ce que contienne les variables) et insérez les données dans un fichier (en n'oubliant pas de lui donner un nom unique, le mieux étant d'y inclure la date).
  13. Bonjour. Pour situer votre bug, il suffit de passer par la fonction isCleanHTML. Voici la fonction de base : public static function isCleanHtml($html) { $jsEvent = 'onmousedown|onmousemove|onmmouseup|onmouseover|onmouseout|onload|onunload|onfocus|onblur|onchange|onsubmit|ondblclick|onclick|onkeydown|onkeyup|onkeypress|onmouseenter|onmouseleave|onerror'; return (!preg_match('/<[ \t\n]*script/i', $html) && !preg_match('/<?.*('.$jsEvent.')[ \t\n]*=/i', $html) && !preg_match('/.*script\:/i', $html)); } Étant donné que c'est cette fonction qui fait tout planter (car une phrase n'est pas valide et contient des mots JAVASCRIPT), il suffit de localiser la phrase : public static function isCleanHtml($html) { $jsEvent = 'onmousedown|onmousemove|onmmouseup|onmouseover|onmouseout|onload|onunload|onfocus|onblur|onchange|onsubmit|ondblclick|onclick|onkeydown|onkeyup|onkeypress|onmouseenter|onmouseleave|onerror'; $result = (!preg_match('/<[ \t\n]*script/i', $html) && !preg_match('/<?.*('.$jsEvent.')[ \t\n]*=/i', $html) && !preg_match('/.*script\:/i', $html)); if (!$result) die ('Phrase contenant un caractère invalide : ' . htmlspecialchars($html)); return $result; } La fonction utilise la fonction DIE si celle-ci devait renvoyer FALSE. Vous saurez donc qui est le coupable et vous saurez ou chercher Edit: j'avais effectivement découvert un bug avec TinyMCE : si, par hasard, vous écrivez une balise interdite (<script>) et que vous validez votre modification, le bug restera car en revenant sur l'editeur, la balise n'apparaitra pas et vous ne pourrez donc pas l'enlever.
  14. Bonjour, On peut avoir un lien vers ton site ? Merci.
×
×
  • Create New...