:::: MENU ::::

Asignar productos a un Website en Magento

Asignar productos a un Website en Magento
0 votos, 0.00 media (0% puntos)

Hoy os dejamos un pequeño snippet que permite asignar un conjunto de productos a uno o varios Websites dentro de vuestra instalación de Magento.

Solemos utilizarlo cuando dentro de una misma instalación se necesita abrir al público un nuevo Website. En ese caso, normalmente parte del catálogo es compartido entre los dos Websites y es una forma rápida de llenar el nuevo catálogo ya que en caso contrario deberás hacerlo probablemente producto a producto.

La asignación se realiza con una simple llamada como esta, donde ambos parámetros son arrays con los identificadores del website/s y de los productos en cuestión.

    Mage::getModel('catalog/product_website')->addProducts($websiteIds, $ids);

A continuación os dejamos también un script un poco más elaborado, para copiar ids de productos de una serie de categorías. Simplemente crea un archivo con el siguiente contenido en tu carpeta raíz y llámalo desde el navegador:

    require_once 'app/Mage.php';
    Mage::app('admin');

    // Almacén de ids de productos que queremos copiar al nuevo website
    $ids = array();

    // Lista de categorías cuyos productos queremos copiar
    $categories = array(224, 4, 5, 6, 7, 226, 32,  228, 233);

    // Obtenemos todos los ids de los productos de esas categorías
    foreach ($categories as $id) {
        $category = Mage::getModel('catalog/category')->load($id);
        $products = Mage::getModel('catalog/product')->getCollection()->addCategoryFilter($category);
        foreach ($products as $product) {
            $ids[] = $product->getId();
        }
    }
    
    // Website o websites a los que queremos asignar los productos
    $websiteIds = array(1);

    // Eliminamos posibles ids de producto duplicados (o fallará la siguiente llamada)
    $ids = array_unique($ids);

    // Asignación de productos a websites
    Mage::getModel('catalog/product_website')->addProducts($websiteIds, $ids);
    
    echo 'done';



Hey! Qué opinas sobre el artículo?