Magento 1.X – Asignar productos relacionados con script

Aquí os dejo un Artículo para Magento 1.X que muestra cómo asignar directamente desde un script los relacionados a un producto trabajando con los SKU. Es un script, por lo que debéis tener claro qué hace y hacer una copia de seguridad por lo que pudiera pasar.

Tutorial Magento

Atención: este script elimina los relacionados anteriores. No me hago responsable de lo que hagáis con este script. Haced copias de seguridad antes. Si lo utilizáis es sobre vuestra responsabilidad.

Utilizando las librerías que nos proporciona Magento, haremos nuestro propio script que va relacionando los productos almacenados en una tabla ($relateds) a los productos de otra tabla ($skus). Utilizaremos la función:

  • $product->setRelatedLinkData($param);

para asignar los relacionados. Y una vez asignados, utilizamremos la función:

  • $product->save();

Para aplicar los cambios realizados. Y como ya hemos comentado, eso hará que se eliminen los anteriores relacionados.

<?php
    echo "<br />Debug > Comienza";
    echo "<br />Asignamos productos relacionados<br />-----------------------------------------------------";
    // Load Magento
    require_once 'app/Mage.php';
    Mage::app();
    // Array con los skus de los productos a los que queremos asignar relacionados
    $skus = array('A26','A27','A28','A3','A36','A360','A38','A44','A91','A92','A94','A95','A96','A97');
    // Array con los skus de los relacionados que queremos asignar a cada uno de los anteriores productos
    $relateds = array(
      array('B25','B29','B92'),
      array('B61','B370','K23'),
      array('B21','B11','B37'),
      array('B30','B31','B24','B20'),
      array('C44','K57','B2','B54'),
      array('Q-88','K22','B59'),
      array('Z44','ZM-11','B2'),
      array('Z36','Q8','V11','B57'),
      array('Z94','V5','B25','B12'),
      array('Z26','Z29','B8'),
      array('B91','B61'),
      array('Z36','Q-83','K12'),
      array('X2','Z15'),
      array('V5','Z20','K9'));
 
    $indexskus= 0;
    // Para todos los productos a los que asignar relacionados
    foreach ($skus as $sku){
      echo "<br />SKU: ". $sku ." ----------------------------------";
      // Averiguamos el ID del producto
      $productId = Mage::getModel('catalog/product')->getResource()->getIdBySku($sku);
      // Creamos el producto
      $product = Mage::getModel('catalog/product')->load($productId);
 
      $position= 1;
      // Para todos los productos relacionados del producto que estamos tratando
      foreach ($relateds[$indexskus] as $related) {
        // Averiguamos el ID del producto relacionado
	$relatedId = Mage::getModel('catalog/product')->getResource()->getIdBySku($related);
 
        // Posición que ocupará el producto relacionado (yo lo hago consecutivo)
	$param[$relatedId]= array('position'=>$position);
	echo "<br />>: ". $sku ." -> ". $related;
	$position++;
      }
      // Asignamos los productos relacionados al producto que estamos tratando
      $product->setRelatedLinkData($param);
      // Guardamos el producto
      $product->save();
 
      $indexskus++;
    }
 
    echo "<br />Debug > Finaliza";
    ?>

Atención: lo vuelvo a repetri, este script elimina los relacionados anteriores. No me hago responsable de lo que hagáis con este script. Haced copias de seguridad antes. Si lo utilizáis es sobre vuestra responsabilidad.

Espero que hayáis encontrado interesante el artículo para Magento 1.X que muestra cómo asignar directamente desde un script los relacionados a un producto trabajando con los SKU.


Más información