Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Associate products and categories, by category name instead of id. 
 
Diego Abad
Jr. Member
 
Total Posts:  13
Joined:  2008-03-31
 

hello folks,

I need to relate the products to categories, but I want to do with the category name.
I made a script in PHP, but I do not know if this is the right way to do it.

I have an csv file with skus and category names.

#!/bin/php
<?php
function buscar_categoria($cat,$nombre){
        
if($cat['name']==$nombre){
                 
return $cat['category_id'];
        
}
        
else {
                $num_hijos
=count($cat['children']);
                if (
$num_hijos 0){
                        
for ($i 0$i $num_hijos$i++)
                        
{
                                $cat_aux
=buscar_categoria($cat['children'][$i],$nombre);
                                if (
$cat_aux!=0{
                                        
return $cat_aux;
                                
}
                        }
                }
                
else return 0;
        
}
}


try{
    $proxy 
= new SoapClient('http://192.168.0.124/hierro/index.php/api/soap/?wsdl');
           
$sessionId $proxy->login('soap''soapsoap');
    echo 
"Auntenticado.\n";
    
//Primero cargo las categorias y los grupos de clientes
    
$allCategories $proxy->call($sessionId'category.tree');
    
$grupo_clientes=$proxy->call($sessionId'customer_group.list');
    
//El primer paso es leer el archivo CSV que contiene los productos
    
$productos file("productos.csv");
    echo 
"Cargado el archivo csv de los productos.\n";

    
/*El siguiente paso es usar la función explode para separar los campos de cada línea,
    esto dentro de un bucle que lee línea por línea.*/
    
echo "Cargando categorias y precios.\n";
    foreach (
$productos as $linea_num => $linea){
        $producto
=explode(";",$linea);
        
//$producto[0]=sku
        //$producto[1]=category_name
        
echo "Cargando el producto ",$producto[0],"\n";
        
//Luego que se tienen separados los campos de un producto, se procede a cargarlos mediante una llamada al API
        
echo "\tAsignando categoría.\n";
        
$proxy->call($sessionId'product.update', array($producto[0], array('categories'=> array(buscar_categoria($allCategories,$producto[1])), 'price' => $producto[2]), null));
        echo 
"Producto actualizado\n";
    
}    
    }catch 
(Exception $e){
        
echo "Ocurrió un error a continuación se muestra un detalle: "$e->getMessage();
    
}
?>
File Attachments
cargar.php  (File Size: 2KB - Downloads: 30)
 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top