jolyanah Posted July 22, 2015 Share Posted July 22, 2015 Bonjour, Dans un module que j'ai créé, après avoir fait une requête de tous les produits d'une catégorie, je voudrais ensuite, dans la même fonction, afficher ceux qui sont nouveaux, J'ai fait comme çà : private function getNewProducts($nbr){ $newProducts = false; $category = new Category()(int)$cat_id, (int)Context::getContext()->language->id); $products = $category::getProducts((int) $this->context->language->id, 1, ($nbr ? $nbr : 10); if (Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) $result = $products->getNewProducts((int) $this->context->language->id, 0, $nbr); if (!$newProducts) return; return $newProducts; } Et la boutique s'est complètement plantée, Comme je ne connais pas encore trop prestashop , je ne sais pas si c'est la bonne syntaxe, Est ce que quelqu'un aurait une idée ? Merci pour votre aide,,, Link to comment Share on other sites More sharing options...
jolyanah Posted July 23, 2015 Author Share Posted July 23, 2015 Personne n'a aucune idée ? Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 23, 2015 Share Posted July 23, 2015 Bonjour, le plus simple c'est de faire une simple requête SQL pour sortir votre résultat car là c’est juste inimaginable les ressources déployées pour récupérer quelques produits. Link to comment Share on other sites More sharing options...
J. Danse Posted July 23, 2015 Share Posted July 23, 2015 Bonjour, Décortiquons déjà votre méthode. Avant tout, sachez que PrestaShop utilise le PHP. Si vous ne le connaissez pas de trop, n'hésitez pas à voir des tutos dessus. Le PHP sera votre base de travail. De plus, pour voir vos erreurs, il vous faut activer le mode DEV de PrestaShop pour plus d'aisances. Pour le reste, la variable $newProducts est déclarée et définie à false. Un test (if case) est réalisé voir si elle est à true ou false. Comme elle n'est jamais modifiée, vous aurez toujours un return; exécuté. Cette ligne: $category = new Category()(int)$cat_id, (int)Context::getContext()->language->id); Deviendrait: $category = new Category((int)$cat_id, (int)Context::getContext()->language->id); Ceci pour la syntaxe PHP. Par contre, $cat_id n'est pas définie. Ce sera donc la Category d'ID 0. D'ailleurs, la raison est simple: vous n'avez pas besoin de cet objet. Vous allez réaliser un appel de méthode statique ($category::... n'étant d'ailleurs pas syntaxiquement bon). Ceci dit, cela ne vous sert à rien de faire appel à getProducts() dans votre cas. Vous allez utiliser la méthode getNewProducts() qui elle est liée à l'objet Product (et non Category). De même, votre if case pour récupérer la configuration du nombre de jours durant lesquelles un produit est considéré comme nouveau n'est pas utile. Pour finir, votre méthode deviendrait finalement: private function getNewProducts($nbr){ $newProducts= Product::getNewProducts((int)$this->context->language->id, 0, (int)$nbr); if (!count($newProducts)) { return; } return $newProducts; } Link to comment Share on other sites More sharing options...
jolyanah Posted July 24, 2015 Author Share Posted July 24, 2015 Bonjour, Merci pour ta réponse mais, je crois que je ne me suis peut être pas assez expliquée. La fonction qu'il me faut c'est d'afficher les nouveaux produits d'une catégorie spécifique (dont l'id category possède déjà un champ de texte que j'ai créé dans le back) mais non pas juste tous les nouveaux produits de n'importe quelle catégorie, Merci, 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