Magento Forum

   
importare categorie da CSV con traduzione
 
hippoglollum
Sr. Member
 
Total Posts:  97
Joined:  2010-04-07
 

Ho il seguente codice per importare le categorie tramite CSV....

<?php
 
    define
('MAGENTO'realpath(dirname(__FILE__)));
    require_once 
MAGENTO '/../app/Mage.php';
 
    
umask(0);
    
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
        
$count 0;
 
    
$file fopen('../var/import/categorie.csv''r');
    while ((
$line fgetcsv($file)) !== FALSE{ $count++;
      
//$line is an array of the csv elements
 
      
if (!empty($line[0]) && !empty($line[1])) 
 
          $data[
'general']['path'$line[0];
          
$data['general']['name'$line[1];
          
$data['general']['meta_title'"";
          
$data['general']['meta_description'"";
          
$data['general']['is_active'1;
          
$data['general']['url_key'"";
          
$data['general']['display_mode'"PRODUCTS";
          
$data['general']['is_anchor'0;
 
          
$data['category']['parent'$line[2]// 3 top level
          
$storeId 0;
           
          
createCategory($data,$storeId);
          
          unset(
$data);
        
}
 
    }  
 
 
  
function createCategory($data,$storeId{
 
      
echo "Starting {$data['general']['name']} [{$data['category']['parent']}] ...";
 
      
$category Mage::getModel('catalog/category');
      
$category->setStoreId($storeId);
 
      
# Fix must be applied to run script
      #http://www.magentocommerce.com/boards/appserv/main.php/viewreply/157328/
      
          
if (is_array($data)) {
              $category
->addData($data['general']);
 
              if (!
$category->getId()) {
 
                  $parentId 
$data['category']['parent'];
                  if (!
$parentId{
                      
if ($storeId{
                          $parentId 
Mage::app()->getStore($storeId)->getRootCategoryId();
                      
}
                      
else {
                          $parentId 
Mage_Catalog_Model_Category::TREE_ROOT_ID;
                      
}
                  }
                  $parentCategory 
Mage::getModel('catalog/category')->load($parentId);
                  
$category->setPath($parentCategory->getPath());
                     
                    echo 
$parentId " -- ".$parentCategory->getPath();
                    
              
}
 
                    
/**
                     * Check "Use Default Value" checkboxes values
                     */
                    
if ($useDefaults $data['use_default']{
                        
foreach ($useDefaults as $attributeCode{
                            $category
->setData($attributeCodenull);
                        
}
                    }              
 
              $category
->setAttributeSetId($category->getDefaultAttributeSetId());
 
              if (isset(
$data['category_products']) &&
                  !
$category->getProductsReadonly()) {
                  $products 
= array();
                  
parse_str($data['category_products']$products);
                  
$category->setPostedProducts($products);
              
}
 
              
try {
                  $category
->save();
                  echo 
"Suceeded <br /> ";
              
}
              
catch (Exception $e){
                      
echo "Failed <br />";
 
              
}
          }      
 
  }
  
  ?>

è un’importazione fatta al volo ed il codice non è il mio.

un CSV di esempio è questo:

catIdcatNameparentId
225
MACRO NEW, 2
226
micro1225
227
micro2225

ci ho messo un po’ le mani ma fin qui funziona tutto.

mi servirebbe di personalizzarlo ancora in modo da poter inserire anche le traduzioni per le varie storeview.

In pratica ho un website con più storeview e vorrei poter popolare l’albero con le traduzioni nelle varie lingue, ma non riesco a farlo funzionare

ho provato a fare così per inserirlo nello storeview con id 1 e 6 ed aggiungendo
come ulteriore campo nel CSV la traduzione del nome, ma non funziona

createCategory($data,1);
          
sleep(0.5);
          
          
$data['general']['name'$line[3];
          
createCategory($data,6);
          
sleep(0.5);

idee?

 
Magento Community Magento Community
Magento Community
Magento Community
 
StudioZeroPixel
Sr. Member
 
Avatar
Total Posts:  154
Joined:  2010-02-01
Italy
 

Finalmente un pò di codice anche in Italia(no) !!!

mi ero stancato di sbatterci la testa da solo .....

Allora noi abbiamo fatto una cosa simile usando le API ma credo che il concetto non cambi molto.

è tutto basato sulle store view.

1) crei la categoria nella storeview indice 0 o codice “admin”
che corrisponde alli impostazioni predefinite

2) cambi store view
3) Aggiorni solo la descrizione/nome della categoria

ripeti 2 e 3 per ogni lingua che hai.

se vuoi ti dico le funzioni API che ho usato ma dovresti usare l’equivalente visto il codice che usi..

a disposizione e felice di dare una mano.

ciao

 
Magento Community Magento Community
Magento Community
Magento Community
 
gaepezz
Jr. Member
 
Total Posts:  2
Joined:  2010-06-12
 
hippoglollum - 07 June 2010 08:32 AM

Ho il seguente codice per importare le categorie tramite CSV....

<?php
 
    define
('MAGENTO'realpath(dirname(__FILE__)));
    require_once 
MAGENTO '/../app/Mage.php';
 
    
umask(0);
    
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
        
$count 0;
 
    
$file fopen('../var/import/categorie.csv''r');
    while ((
$line fgetcsv($file)) !== FALSE{ $count++;
      
//$line is an array of the csv elements
 
      
if (!empty($line[0]) && !empty($line[1])) 
 
          $data[
'general']['path'$line[0];
          
$data['general']['name'$line[1];
          
$data['general']['meta_title'"";
          
$data['general']['meta_description'"";
          
$data['general']['is_active'1;
          
$data['general']['url_key'"";
          
$data['general']['display_mode'"PRODUCTS";
          
$data['general']['is_anchor'0;
 
          
$data['category']['parent'$line[2]// 3 top level
          
$storeId 0;
           
          
createCategory($data,$storeId);
          
          unset(
$data);
        
}
 
    }  
 
 
  
function createCategory($data,$storeId{
 
      
echo "Starting {$data['general']['name']} [{$data['category']['parent']}] ...";
 
      
$category Mage::getModel('catalog/category');
      
$category->setStoreId($storeId);
 
      
# Fix must be applied to run script
      #http://www.magentocommerce.com/boards/appserv/main.php/viewreply/157328/
      
          
if (is_array($data)) {
              $category
->addData($data['general']);
 
              if (!
$category->getId()) {
 
                  $parentId 
$data['category']['parent'];
                  if (!
$parentId{
                      
if ($storeId{
                          $parentId 
Mage::app()->getStore($storeId)->getRootCategoryId();
                      
}
                      
else {
                          $parentId 
Mage_Catalog_Model_Category::TREE_ROOT_ID;
                      
}
                  }
                  $parentCategory 
Mage::getModel('catalog/category')->load($parentId);
                  
$category->setPath($parentCategory->getPath());
                     
                    echo 
$parentId " -- ".$parentCategory->getPath();
                    
              
}
 
                    
/**
                     * Check "Use Default Value" checkboxes values
                     */
                    
if ($useDefaults $data['use_default']{
                        
foreach ($useDefaults as $attributeCode{
                            $category
->setData($attributeCodenull);
                        
}
                    }              
 
              $category
->setAttributeSetId($category->getDefaultAttributeSetId());
 
              if (isset(
$data['category_products']) &&
                  !
$category->getProductsReadonly()) {
                  $products 
= array();
                  
parse_str($data['category_products']$products);
                  
$category->setPostedProducts($products);
              
}
 
              
try {
                  $category
->save();
                  echo 
"Suceeded <br /> ";
              
}
              
catch (Exception $e){
                      
echo "Failed <br />";
 
              
}
          }      
 
  }
  
  ?>

è un’importazione fatta al volo ed il codice non è il mio.

un CSV di esempio è questo:
catIdcatNameparentId
225
MACRO NEW, 2
226
micro1225
227
micro2225

ci ho messo un po’ le mani ma fin qui funziona tutto.

mi servirebbe di personalizzarlo ancora in modo da poter inserire anche le traduzioni per le varie storeview.

In pratica ho un website con più storeview e vorrei poter popolare l’albero con le traduzioni nelle varie lingue, ma non riesco a farlo funzionare

ho provato a fare così per inserirlo nello storeview con id 1 e 6 ed aggiungendo
come ulteriore campo nel CSV la traduzione del nome, ma non funziona
createCategory($data,1);
          
sleep(0.5);
          
          
$data['general']['name'$line[3];
          
createCategory($data,6);
          
sleep(0.5);


idee?

Ciao sono nuovo di Magento, fin ora usavo VirtueMart con Joomla.

Saresti così gentile da indicarmi dove devo inserire questo codice per importare le categorie da CSV?

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top