Magento – Cambiar los sku de los productos por lote con script php

Por diferentes motivos, nos puede interesar el SKU de productos dentro de nuestro Magento. Cuando solo es un par de ellos, no hay problem, pero cuando queremos cambiar centenares de productos, ya es otra historia. Por suerte, se puede hacer mediante un script .php

Primero preparemos cada uno de los pasos a seguir:

1. Creamos un fichero .csv llamado sku2sku.csv en la que una columna sea el actual sku, y la otra columna el sku nuevo

2. Almacenamos el fichero sku.csv en la raiz de nuestro magento

3. Creamos un fichero .php llamado sku2sku.php con el siguiente código y también lo almacenamos en la raiz (en el mismo lugar que el csv)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php 
  include_once './app/Mage.php';
  Mage::app();
 
  $updates_file="./sku2sku.csv";
 
  $sku_entry=array();
 
  $updates_handle=fopen($updates_file, 'r');
  if($updates_handle) { 
      while($sku_entry=fgetcsv($updates_handle, 1000, ",")) { 
	  $old_sku=$sku_entry[0];
	  $new_sku=$sku_entry[1];
	  echo "<br />--> Updating ".$old_sku." to ".$new_sku." - ";
	  try {
	      $get_item = Mage::getModel('catalog/product')->loadByAttribute('sku', $old_sku);
	      if ($get_item) {
		  $get_item->setSku($new_sku)->save();
		  echo "successful";
	      } else {
		  echo "item not found";
	      }
	  } catch (Exception $e) { 
	      echo "Cannot retrieve products from Magento: ". $e->getMessage() ." ";
	      return;
	  }
      }
  }
 
  fclose($updates_handle);
  ?>

4. Ejecutamos el fichero, y esperamos. No es immediato y tarda su tiempo. Esto puede dar problemas, y es que pasado un tiempo, el servidor nos puede dar error por “Tiempo agotado”

Por último indicar que esto lo hacemos en local y con Magento 1.9.X, no sabemos si funciona en versiones superiores.

No nos hacemos responsables de que ejecutéis este código. Haced copias de seguridad de las bases de datos, y tened en cuenta que es cosa vuestra el ejecutarlo o no en vuestro servidor.

Información relacionada

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*