Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

[tuto] importer les catégories dans magento depuis un CSV
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1234567
SUJET:

[tuto] importer les catégories dans magento depuis un CSV

**
#32260
aidezmoisvp
Junior Boarder
Messages: 25
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 11 Mois
Karma: -2  
et puis quoi encore?

hehe

je regarde ca de plus pres toute facon j'ai pas le choix hein!
 
Dernière édition: 27/05/10 à  06:16 Par aidezmoisvp.
L'administrateur a désactivé l'accès public en écriture.
#34057
lozit
Junior Boarder
Messages: 25
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 9 Mois
Karma: 0  
Ca marche super chez moi en 1.4.1.0. Merci beaucoup !
 
L'administrateur a désactivé l'accès public en écriture.
#34223
Kiwy
Senior Boarder
Messages: 52
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 9 Mois
Karma: 1  
Bonjour a tous,
J'ai un souci concernant l'importation des catégorie, en effet j'ai le message d'erreur que voici :

Could not load file: "C:\wamp\www\test_export\var\import/Categories.csv"
Cela m'a tout l'air d'un problème de slash sans doute du au fait que je travail en local via WampServer mais je ne sais ou le changer.

Merci d'avance pour vos réponses.

Cordialement.
 
L'administrateur a désactivé l'accès public en écriture.
#34228
Kiwy
Senior Boarder
Messages: 52
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 9 Mois
Karma: 1  
J'ai creuser un peu plus loin dans magento et ai trouvé (je pense) la methode load appelé lors du chargement : app\code\core\Mage\Dataflow\Model\Convert\Adapter\Io.php
J'ai vu que ligne 147 il concatene le path du repertoire courant, un /, et le non du fichier.
J'ai donc essayé de remplacer le / par un \ mais sans succes, comme si il passait pas par cette methode, il ne prend meme pas un die() que je met a l'entrée de celle ci!
Je ne comprend pas!



EDIT : Problème réglé : Le cache c'est le mal !! Pensez a le desactiver! Et sinon concernant la manip ca a fonctionné =D

REEDIT : J'ai maintenant le meme probleme que les autres :

<br /> <b>Fatal error</b>: Call to undefined method Astrolab_Catalog_Model_Convert_Adapter_Category::getStoreById() in <b>C:\wamp\www\test_import\app\code\local\Astrolab\Catalog\Model\Convert\Adapter\Category.php</b> on line <b>42</b><br />
 
Dernière édition: 09/07/10 à  08:39 Par Kiwy.
L'administrateur a désactivé l'accès public en écriture.
#34914
Magentalliage
Fresh Boarder
Messages: 16
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 8 Mois
Karma: 0  
Pour cette erreur :

"Call to undefined method Astrolab_Catalog_Model_Convert_Adapter_Category::getStoreById()"


Il suffit de passer le fichier csv en ANSI plutôt qu'en UTF8 !!
 
L'administrateur a désactivé l'accès public en écriture.
#35174
zuiko
Moderator
Messages: 2863
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 8 Mois
Karma: 85  
Vu dans ce post en anglais :
En fait la méthode getSoreById manque dans le fichier category.php.

Il suffit d'ajouter dans ce fichier le code suivant :
Code :

public function getStoreById($id)
    {
        $this->_initStores();
        /**
         * In single store mode all data should be saved as default
         */
        if (Mage::app()->isSingleStoreMode()) {
            return Mage::app()->getStore(Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID);
        }

        if (isset($this->_storesIdCode[$id])) {
            return $this->getStoreByCode($this->_storesIdCode[$id]);
        }
        return false;
    }


Pour ne plus avoir cette erreur et donc pouvoir importer des catégories dont les noms comportent des lettres accentuées. Le fichier Categories.csv peut être encodé en UTF-8 sans bom (utiliser Notepad+ pour l'enregistrer correctement.

Bon, la procédure se passe maintenant sans erreurs (export/import) mais je ne vois pas mes catégories importées ni en front ni en back office. Sans doute un conflit avec ma config multi boutiques et multi langues... Je n'ai pas dû initialiser la config Magento d'accueil correctement. Ou encore il se peut que le fichier csv soit incorrect.
 
Dernière édition: 10/08/10 à  09:08 Par zuiko.
Souvent support de mes exemples et conseils cette mercerie en ligne aux produits pro, au thème devenu responsive mobile en avril 2015.
L'administrateur a désactivé l'accès public en écriture.
#35292
zuiko
Moderator
Messages: 2863
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 8 Mois
Karma: 85  
Pour compléter :

Précisions sur l'exportation des catégories :
Quand on lance export_category.php décrit ci-dessus,
Les catégories s'affichent à l'écran,
"1","Root Catalog"
"11","Root Catalog/CAT1"
"18","Root Catalog/CAT1/CAT11"
"30","Root Catalog/CAT1/CAT11/CAT111"
"31","Root Catalog/CAT1/CAT11/CAT112"
...
etc
copier/coller dans un fichier Categories.csv en UTF-8 sans bom
Modifier le fichier pour qu'il ait la structure suivante :
"store","categories"
"ma_vue_fr","CAT1"
"ma_vue_fr","CAT1/CAT11"
"ma_vue_fr","CAT1/CAT11/CAT111"
"ma_vue_fr","CAT1/CAT11/CAT112"
...
etc
ma_vue_fr étant le code de la vue de la boutique (la vue française, par exemple suffit, les autres langues en bénéficierons mais en français .
On peut mettre toutes les vues dans le même fichier.

Précisions sur l'importation :

Outre la correction du fichier category.php indiquée ci-dessus, en 1.4.1.0 (en tout cas) il est nécessaire d'apporter une modification dans la base de données afin que les catégories importées apparaissent automatiquement dans le menu :
- il faut positionner le champ is_required à 1 pour l'élément include_in_menu dans la table eav_attribute (via PHPMYADMIN).
Voir ce post.
L'instruction ->SetIncludeInMenu(1) dans category.php étant inefficace sinon.

Avec ces précisions j'ai bien réussi à importer ma structure de catégories en français en multiboutiques mais il y a encore du chemin à faire car :
- je n'importe pas les traductions des catégories dans les différentes vues,
- je n'importe pas description, url key, page title, metas, etc...
Je suis la piste de ce post pour faire mieux.

Si certains savent faire, je suis preneur (export/import).
 
Souvent support de mes exemples et conseils cette mercerie en ligne aux produits pro, au thème devenu responsive mobile en avril 2015.
L'administrateur a désactivé l'accès public en écriture.
#35522
zuiko
Moderator
Messages: 2863
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin

Re:[tuto] importer les catégories dans magento depuis un CSV

Il y a 7 Années, 8 Mois
Karma: 85  
Le module de H&O issu de ce post est très abouti et permet nativement d'importer, non seulement les catégories mais aussi les champs suivants associés :
store
parent
identifier
name
is_active
url_key
description
image
pagetitle
is_anchor

Je l'ai facilement étendu :
En modifiant le fichier : app/code/local/Postbeeld/Importcatalogs/controllers/Adminhtml/ImportController.php
J'ai successivement ajouté deux champs supplémentaires à importer :
meta_keywords and meta_description

Dans private function _checkAndPrepareCsvFileRow
il faut changer :
Code :

if(!isset($rowData) OR count($rowData) != 10)

en
Code :

if(!isset($rowData) OR count($rowData) != 12)


Et ajouter les lignes suivantes :
Code :

        $returnData['meta_keywords'] = trim($rowData[10]);
        $returnData['meta_description'] = trim($rowData[11]);



Le fichier CSV doit avoir 2 colonnes de plus après is_anchor remplies avec vos données : meta_keywords and meta_description

Comme en 1.4 on peut avoir une url_key différente pour chaque vue magasin, on peut supprimer les lignes suivantes dans private function _checkAndPrepareCsvFileRow

Code :

if($returnSystem['store'] != 'admin' AND $rowData[5] != '')
            return array("validation" => false, "message" => "Can not change 'URL Key' $rowData[4] for specific store-view ".$returnSystem['store'].".");



et

Code :

unset($returnData['url_key']);


Modifier/créer des catégories en masse avec un fichier csv où on voit toutes les langues et les boutiques est un vrai plus car on peut vérifier d'un coup d'oeil toute la cohérence et faire des copier/coller entre champs très facilement.

Cependant après avoir fait çà, il me reste un problème important :

J'essaie de construire une multiboutique avec 2 langues.
La structure de catégorie que je voudrais obtenir est la suivante :

Code :

ROOTCAT1
   SUBCAT11
         subsubcat111
         subsubcat112
         subsubcat113
   SUBCAT12
         subsubcat121
         subsubcat122
         subsubcat123
ROOTCAT2
   SUBCAT11
        subsubcat113
        subsubcat114
   SUBCAT12
        subsubcat123
   SUBCAT13



ROOTCAT1 et ROOTCAT2 ont été créées d'abord manuellement pour être catégories racine des boutiques (et donc pouvoir créer les boutiques).
ROOTCAT1 est la catégorie racine de la boutique TOUS-PRODUITS avec une vue française et une vue anglaise.
ROOTCAT2 est la catégorie racine de la boutique CERTAINS-PRODUITS avec une vue française et une vue anglaise.
Le nom des catégories communes avec ROOTCAT1 mais sous ROOTCAT2 doivent être les mêmes que celles correspondant à celle sous ROOTCAT1
Lorsque j'importe ou modifie seulement les catégories sous ROOTCAT1 tout marche parfaitement, vues anglaise et françaises comprises avec tous les champs.

Mais quand j'ajoute la partie ROOTCAT2 dans le fichier CSV pour compléter la structure, le résultat est le suivant :

Code :

ROOTCAT1
ROOTCAT2
   SUBCAT11
         subsubcat111
         subsubcat112
         subsubcat113
         subsubcat114
   SUBCAT12
         subsubcat121
         subsubcat122
         subsubcat123
   SUBCAT13



Toutes le catégories dont le nom est le même que celles sous ROOTCAT1 sont transférées sous ROOTCAT2, mais toutes les catégories nouvelles sous ROOTCAT2 sont bien créées.
J'ai essayé pas mal de configurations de mon fichier CSV d'import sans succès. Si le nom d'une catégorie est identique, elle est transférée d'une arborescence à l'autre.
L'unique solution actuellement est d'avoir des noms de catégorie disjoints entre les deux arborescences.

Si quelqu'un de plus expérimenté pouvait se pencher sur ce code, je pourrais contribuer au test car le module est performant par ailleurs et je sens être près du but.

Le code à analyser/changer se situe toujours dans le fichier app/code/local/Postbeeld/Importcatalogs/controllers/Adminhtml/ImportController.php parmi les lignes :

Code :

$returnSystem['mode'] = "add";
        if(is_numeric($rowData[2])){
            
            if(isset($this->_categoriesArray["c_$rowData[2]"])){
                
                $returnSystem['mode'] = "edit";
                $returnData['id'] = $rowData[2];
            }
                            
        } else if(is_string($rowData[2])) {
            
            $categoryKey = array_search($rowData[2], $this->_categoriesArray);
            
            if($categoryKey){
                
                $returnSystem['mode'] = "edit";
                $returnData['id'] = str_replace("c_", "", $categoryKey);
            }
        } 



Il faut sans doute tester le path de la catégorie avant de décider de la modifier ou la créer...
Alors si cela inspire quelqu'un...
 
Dernière édition: 19/08/10 à  02:33 Par zuiko.
Souvent support de mes exemples et conseils cette mercerie en ligne aux produits pro, au thème devenu responsive mobile en avril 2015.
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1234567
Modérateur: Gabriiiel, ILOA, zuiko