Jump to content

Liste des nouveautés dans une catégorie de produits


Recommended Posts

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...