Importar productos a Virtuemart usando CSV

March 12th, 2010 | Joomla |

Importar productos a Virtuemart usando CSV

Subir productos a Virtuemart individualmente es algo muy fácil, hasta intuitivo; pero cuando tengas que subir unos 600 productos éste método ya se va a transformar en una tortura, y ni hablar si lo precios de los productos cambian cada cierto tiempo.

Por suerte, para solucionar el problema de subir una gran cantidad de productos a Virtuemart, existe CSV Improved. Éste software es un componente que se instala en Joomla y lo que nos permite hacer es importar/exportar/actualizar nuestro catálogo de productos usando un archivo CSV.
NOTA: CSV Improved trabaja con PHP 5+, para saber tu versión de PHP revisa en Help – System info – PHP Information.

¿Qué es CSV?

Un fichero CSV son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, las columnas se representan generalmente con ; (punto y coma), las filas con saltos de línea y los textos generalmente se delimitan con comillas.

Ejemplo:

“001″;”Magdalena”;”galletitas sabor dulce de leche, cubiertas de chocolate”;”4,5″
“002″;”Pepitos”;”galletita de vainilla con chips de chocolate”;”3,9″

Este ejemplo nos mostraría una tabla de 2 filas, con 4 columnas. En la primer columna estaría el ID del producto, en la segunda el nombre del producto, en la tercera la descripción y en la cuarta el precio.

Instalación de CSV Improved

Antes de instalar el componente en sí, tenemos que hacer un paso extra si estás usando la versión de Joomla 1.5+, que es activar el plugin System-Legacy para que pueda funcionar CSV Improved. Lo único que hay que hacer es ir a Extensions – Plugin Manager y una vez dentro buscar el plugin System-Legacy y activarlo.

Ahora lo único que necesitas es bajar el componente desde su sitio web y después instalarlo como cualquier otro componente en Joomla. Desde Extensions – Install/Uninstall seleccionamos el archivo que nos bajamos y listo.

Si en el momento de la instalación les sale algún error como “Failed to move file” o algo similar, este post les será de ayuda.

CSV Improved se maneja con plantillas, hay una plantilla para importar productos, otra para exportar, otra para actualizar… hasta podemos crear nuestra propia plantilla, lo que se mostrará en este tutorial es como crear una nueva plantilla y en base a ella importar productos.

Antes de hacer una nueva plantilla veamos como funciona una que ya viene por defecto en CSVImproved. La pueden ubicar desde Components | CSVImproved | Templates, la plantilla en cuestión se llama “CSVI Product Import“. Para ver como está compuesta seleccionen la plantilla y después clickeen en Fields. Van a ver algo como esto:

template field CSV Improved
Click para agrandar

Lo que nos quiere decir esa plantilla es que cuando importemos productos usando esa plantilla, interpretará que en la primer columna aparecerá el número SKU del producto, en la tercera la categoría, en la cuarta el nombre y así sucesivamente.

Volviendo al tutorial, vamos a crear una plantilla nueva con pocas columnas para simplificar un poco las cosas. Una vez dentro de “Templates” seleccionen la opción New, lo primero que aparece es para elegir el tipo de plantilla que vamos a crear, en nuestro caso seleccionamos Import; en la pestaña siguiente vamos a tildar la opción de Overwrite existing data, para que cuando tengamos que actualizar algún producto, lo podamos importar de nuevo y así modificar los campos necesarios, también tildamos la opción Skip first line y Show Preview. En la pestaña System Limits no tocamos nada y en General Settings le ponemos el nombre que queramos, por ejemplo, Importar productos, en Field delimiter colocamos ; (punto y coma) y en text delimiter ” (comillas). Y guardamos.

Ahora si volvemos a la vista de Templates vamos a ver nuestra nueva plantilla, lo único (y más importante) que le falta son los campos, entonces la seleccionamos y clickeamos en Fields. Uno por uno vamos a ir agregando los siguientes campos:

  • ID (product_sku)
  • Nombre (product_name)
  • Descripción (product_desc)
  • Precio (product_price)
  • Categoría (category_path)
  • Imagen miniatura (product_thumb_image)
  • Imagen completa (product_full_image)
  • Publicado? (product_publish)

Ya tenemos casi todo listo, lo que nos falta es el archivo CSV con los datos de los productos. De acuerdo a la plantilla que hicimos, nuestro CSV se debería ver similar al siguiente:

productos.csv

“SKU”;”NOMBRE”;”DESCRIPCION”;”PRECIO”;”CATEGORÍA”;”LINK DE LA MINIATURA”; “LINK DE LA IMAGEN COMPLETA”;”PUBLICADO Y=SI N=NO”;
“001″;”Magdalena”;”galletitas sabor dulce de leche, cubiertas de chocolate”;”4,5″;”Galletitas”;”http://img694.imageshack.us/img694/71/thumbha.jpg”;”http://img16.imageshack.us/img16/466/galletitaschocolate.jpg”;”Y”;
“002″;”Pepitos”;”galletita de vainilla con chips de chocolate”;”3,9″;”Galletitas”;”http://img694.imageshack.us/img694/71/thumbha.jpg”;”http://img16.imageshack.us/img16/466/galletitaschocolate.jpg”;”Y”;
“003″;”Oreo”;”galletita de chocolate”;”4,9″;”Galletitas”;”http://img694.imageshack.us/img694/71/thumbha.jpg”;”http://img16.imageshack.us/img16/466/galletitaschocolate.jpg”;”Y”;
“004″;”Balde x3L Bajo Cero”;”helado de 3 litros sabor Vainilla, Chocolat y Frutilla”;”39,9″;”Helados”;”http://img694.imageshack.us/img694/71/thumbha.jpg”;”http://img16.imageshack.us/img16/466/galletitaschocolate.jpg”;”Y”;
“005″;”Palito Bombón”;”Palito bombón helado cubierto de chocolate”;”1,9″;”Helados”;”http://img694.imageshack.us/img694/71/thumbha.jpg”;”http://img16.imageshack.us/img16/466/galletitaschocolate.jpg”;”Y”;

Recuerden que la primer línea es solo para orientarnos, CSVImproved no la leerá ya que marcamos la opción “Skip first line” cuando creamos la plantilla.

Para ver si en verdad funciona, desde Components | CSVImproved | Import seleccionamos la plantilla que acabamos de hacer y después elegimos el CSV que creamos y finalmente Importamos. Antes de importar nos va a mostrar una vista previa (porque activamos Show Preview cuando creamos la plantilla) le damos a continuar y listo.

Si miramos ahora nuestra tienda se verá parecida a esta:

vista previa de nuestra tienda

Noten que las categorías que pusimos en el archivo CSV “Helados” y “Galletitas” se agregaron automáticamente, pero sin foto. Si queremos agregarle alguna foto lo podemos hacer desde Virtuemart.

Si ahora entramos a la categoría “Galletitas” vamos a ver esto:

Vista de la categoría "Galletitas"

En la imagen se ven las miniaturas que colocamos en el CSV (que son todas iguales, porque justamente en el CSV las puse todas iguales) y si clickeamos en la miniatura se abre el otro link de la imagen en grande.

Si clickeamos algún producto, se nos abre lo que se llama “Flypage” que es la página que muestra más en detalle nuestro producto. Es ahí donde aparece la descripción que agregamos en nuestro archivo CSV.

vista de la Flypage

Usando OpenOffice Calc

Para automatizar un poco más el proceso de la creación del CSV, voy a usar la hoja de cálculo OpenOffice Calc, hagan lo siguiente, abran el archivo que creamos anteriormente “productos.csv” con OpenOffice Calc. Vamos a ver algo como esto:

Usando open office calc para abrir archivos CSV

Lo más importante de este paso es elegir correctamente el Separador de columnas y el Separador de texto. En este caso elegí como separador de columnas el ; (punto y coma) y como Separador de texto (comillas). En la parte inferior se muestra una vista previa para saber como nos quedará el documento. Una vez hecho esto, se nos abre la hoja de cálculo y ya podemos escribir en la correspondientes celdas los nombres de productos, precios, descripción, etc. Ya no nos tenemos que preocupar de delimitar el texto con comillas, o separar las columnas con ; (punto y coma) porque de eso se va a encargar la hoja de cálculo.

Un caso real

Ahora supongamos que nuestro cliente nos entrega un reporte que su sistema genera, el reporte está en formato excel y consta de muchísimas filas, una por producto, que contiene el precio, nombre, stock y demás información sobre los productos. Lo único que tendríamos que hacer es abrir ese reporte generado por el sistema, “copiar” por ejemplo la columna que tiene el ID del producto y luego “pegarla” en nuestra hoja de cálculo CSV. Después hacemos lo mismo con otra columna que podría decir el nombre del producto, y hacemos lo mismo, la “copiamos” y la “pegamos” en nuestro CSV. Eso mismo hacemos con todo lo que queramos (siempre y cuando lo hallamos definido en nuestra plantilla) podemos poner información detallada del producto, precio, stock, URL de la imagen en miniatura, quien es el proveedor del producto, etc.

¿Qué pasaría si el precio de los productos subió un 15%?, podemos usar la misma plantilla. Todas las columnas que no sean la del precio la vamos a dejar igual que antes, pero a la columna del precio la cambiamos por la del nuevo reporte (copiando y pegando). Subimos de nuevo el “productos.csv” y vamos a ver como hizo un “update” y cambió los precios de los productos.


Cualquier comentario que enriquezca el tutorial es bien recibido ;)

Comentarios (56)

  1. felipe says:

    para meter una imagen, se hace con el campo product_image y con product_thumb_image para la imagen redimensionada, pero no se como meter más de una a cada producto y que aparezca redimensionada de forma automática con el csv

  2. felipe says:

    Se hace añadiendo los campos product_image y product_thumb_image para la imagen redimensionada en el csv,  pero no se como se hace para meter mas de una imagen para cada producto.

  3. HOla ya intale el componente csv imprved y fui haciendo los pasos como aqui los mostraban pero al pasar a la pestaña Configuraciones donde tenia que seleccionar la opcion Overwrite existing data, solo me sale un aviso que dice

    Not Acceptable
    An appropriate representation of the requested resource /tienda/administrator/index.php could not be found on this server.
    Alguien podria decirme que tengo que hacer.
    Gracias

  4. mi caso es el siguiente mis clientes me entregan un listado de sus productos en excel, cada columna contiene un elemento que constituye el producto es decir: ID columna a , nombre del producto columna b , etc.
    Mi pregunta es la siguiente cuando de click en aceptar en el officecalc, tendre ese mismo orden en la hoja de calculo?

  5. Felipe says:

    Al menos a mi, el officecalc, cuando abro un documento csv con el, al cerrar el documento me pregunta si quiero mantener el mismo formato o quiero guardarlo como ODF creo que es lo que dice, y yo le marco mantener el formato.

  6. gustavo a says:

    buenas subo sin ningun inconveniente los productos por medio de excel convirtiendo el archivo en la extension csv. pero tengo una pregunta importante, como hago para que esos productos queden dentro de una subcategoria, ejemplo: en la web-site tengo varias categorias, son las siguientes; productos escolares- productos de oficina – productos de computacion y otros mas, cada uno de ellos tiene una subcategoria, ejemplo; productos escolares (morrales-cuadernos-libros-lapiceros) asi cada uno de las categorias, como puedo subir los productos a las subcategorias, ya que debo subir cerca de  2000 productos, agradesco su ayuda y colaboracion; mi correo roottgus@hotmail.com 

Escribe un comentario