Jump to content

Création produit & catégorie par un module


SleT

Recommended Posts

Bonjour,

 

Je recherche depuis quelques temps pour un module, une manière de créer une catégorie, puis des produits dans cette catégorie, avec un nom, un prix et une image associée.

 

J'ai du mal à trouver ces informations, si quelqu'un peut me filer l'info ou me mettre sur une piste, ça serait cool :-)

 

Je précise que je souhaite créer cette catégorie => produit dans un module de création de galerie d'image (si ça doit changer la syntaxe, je préviens... :) )

 

Merci d'avance !

Link to comment
Share on other sites

Bon, je reviens vers vous parce que je pense avoir trouver une méthode qui a pas l'air trop compliqué.

 

Je pense utiliser l'import via XML/CSV.

 

Je vais laisser l'utilisateur créer la catégorie avec son image etc, comme ça pas de prise de tête avec ça.

 

Ensuite il sélectionnera la catégorie qu'il veut utiliser pour son import d'image, le répertoire des photos, et zou, génération du CSV et roule bouboule !

 

Si j'ai d'autres questions/solutions je posterai ici histoire que si ça donne des idées ou aide... voila quoi :-)

Link to comment
Share on other sites

  • 3 weeks later...

Ouais, en fait c'est la merde.

 

Dans mon module, je demande à l'utilisateur de créer la catégorie en amont, ça fait une tache de moins...

 

Par contre, je n'arrive pas à trouver comment créer mes produits. L'import de CSV ne correspond pas à ce dont j'ai besoin et trop complexe à mettre en place pour ce que je veux faire... (à mes yeux..)

 

Quelqu'un aurait une solution à mettre en place sur comment ajouter simplement un produit ? (ou de manière compliqué un peu détaillé?)

Link to comment
Share on other sites

Bonjour Slet,

 

Pour me faire des fonctions d'import je me suis fortement inspiré de controllers/admin/adminImportController et des méthodes

productImport() et categoryImport() ce que d'ailleurs tu as utilisé manuellement.

 

Très schématiquement pour créer une à une des catégories dans une boucle d'import:

 

                          $category_to_create = new Category();
                            $category_to_create->id = (int)$value;
                            $category_to_create->name = AdminImportController::createMultiLangField($value);
                            $category_to_create->active = 1;
                             $category_to_create-> ....

 

Bon dev

Link to comment
Share on other sites

Oui effectivement, c'est ce que je suis allé voir.

 

Je voulais dupliquer des produits, et c'est vrai que du coup, l'aide est pas forcement facile à apporter.

 

J'me suis inspirer du système d'import effectivement, et j'en ai fais un module... (un peu trop spécifique pour être partager je pense..)

 

Merci pour le passage et le coup de main (et de maitre) ;)

 

@ plus

Link to comment
Share on other sites

Merci pour le passage et le coup de main (et de maitre) ;)

 

Sympa.

 

Pour les images j'ai ça :

 

 
define('UNFRIENDLY_ERROR', false);
 
$id_product=....;
$img_url = ....;
 
 $image = new Image();
    $image->id_product =    (int)$id_product ; //
    $image->position =      Image::getHighestPosition($id_product) + 1;
    $image->cover =         true;
    $image->legend =        createMultiLangField('legende image');
   if (($fieldError = $image->validateFields(UNFRIENDLY_ERROR, true)) === true AND ($langFieldError = $image->validateFieldsLang(UNFRIENDLY_ERROR, true)) === true AND $image->add())
     copyImg($id_product, $image->id, $img_url);
 
 
function copyImg($id_entity, $id_image = NULL, $url='') {
    $tmpfile = tempnam(_PS_TMP_IMG_DIR_, 'ps_import');
    $watermark_types = explode(',', Configuration::get('WATERMARK_TYPES'));
    $imageObj = new Image($id_image);
    $path = (string)$imageObj->getPathForCreation();


    $dnld = file_get_contents($url);
    
    if ($dnld === false) {
        $errors= error_get_last();
        // echo "File_get_contents ERROR: ".$errors['type'];
        // echo "<br />\n".$errors['message']."<br>\n";
               unlink($tmpfile);
            return false;
    }
    else{
        if (file_put_contents($tmpfile, $dnld) === false ){
            
            // echo "file_put_contents ERROR: ".$errors['type'];
        // echo "<br />\n".$errors['message']."<br>\n";
               unlink($tmpfile);
            return false;
        }
        
            // echo "Copy from url ok<br>\n";
            ImageManager::resize($tmpfile, $path.'.jpg');
            
            $imagesTypes = ImageType::getImagesTypes('products');
            foreach ($imagesTypes AS $k => $imageType)
                ImageManager::resize ($tmpfile, $path.'-'.stripslashes($imageType['name']).'.jpg', $imageType['width'], $imageType['height']);
            if (in_array($imageType['id_image_type'], $watermark_types))
                    Module::hookExec('watermark', array('id_image' => $id_image, 'id_product' => $id_entity));
    }
     unlink($tmpfile);
    return true;
}
function createMultiLangField($field){  
    $languages = Language::getLanguages(false);
    $res = array();
    foreach ($languages AS $lang)
        $res[$lang['id_lang']] = $field;
    return $res;
}
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...