Quiero copiar mi primera categoría a una segunda categoría en Magento. ¿Qué debo hacer?Categoría copiar y pegar en Magento
Gracias, Wesley.
Quiero copiar mi primera categoría a una segunda categoría en Magento. ¿Qué debo hacer?Categoría copiar y pegar en Magento
Gracias, Wesley.
No se puede con la interfaz de administrador, es necesario. para crear una secuencia de comandos con la categoría api.
oh, ¿podría darme un guión, por favor? – Wesley
Lo sentimos, no se puede copiar/pegar Categoría directamente en el panel de administración de Magento a través de la interfaz, que Catalog Products puede ofrecer con la ayuda del botón "Duplicar".
Supongo que tendrá que escribir una secuencia de comandos recuperando los detalles de la categoría cargando primero el modelo de categoría con la ID de categoría requerida.
Este forum post contiene instrucciones y código para importar sus categorías de un archivo CSV.
Buena suerte, JD
creo que quiere exportar productos de un gato específico e importarlo a otro. si es así que utilice los pasos detallados a continuación:
ahora impórtelo de la misma manera
Si desea hacerlo de forma programática, puede utilizar la API de Magento. Uso:
catalog_category.info - to read a category
catalog_category.create - to create a new one by copying data from existing.
Aquí están los documentos para category API
Gran idea. Necesitaba crear algunas categorías dentro de un script de instalación (dentro de magento), y usar Mage :: getModel ('catalog/category_api_v2') -> create() funcionó muy bien. El único problema es que el segundo parámetro ($ categoryData) debe ser un objeto, no una matriz. Era más fácil que imaginar cómo crear una categoría de la manera "normal". – shaune
Por código:
<?php
$category = Mage::getModel('catalog/category')
->load(123); // The ID of the category you want to copy.
$copy = clone $category;
$copy->setId(null) // Remove the ID.
->save();
¿Esto también asociará los productos de la primera categoría con la segunda? Parece dudoso – clockworkgeek
No estoy seguro. No lo creo. Pero puede buclear fácilmente '$ category-> getProductCollection()' y agregar la nueva categoría a cada producto: '$ product-> setCategoriesIds (array_merge ($ product-> getCategoriesIds(), array ($ copy-> getId()))) '. – joksnet
no me clonar la categoría de objeto, sino más bien hacer algo como esto (utilizando la API de Magento - http://www.magentocommerce.com/wiki/doc/webservices-api/catalog_category):
obtener la categ ORY cual debe ser copiado
$source_category = Mage::getModel('catalog/category')->load($id);
crear una nueva categoría mediante la API
$CategoryApi = new Mage_Catalog_Model_Category_Api();
$parent_id = /* Location for the new category */
$new_category_id = $CategoryApi->create(
$parent_id,
array(
/* Attributes to fill with source category values. */
)
);
Obtener la categoría de productos de origen y colocarlos en la nueva categoría, de nuevo con la API.
$products = $CategoryApi->assignedProducts(source_category->getId());
foreach($products as $product)
{
$CategoryApi->assignProduct($product->getId())
}
anterior debe hacerse recursivamente para cada subcategoría.
Nota: El uso de la API garantiza que su código seguirá funcionando cuando actualice el núcleo de Magento.
En algún momento tenemos que copiar mismos productos a otra categoría. (Como tenemos dos tiendas con una misma categoría o dentro de la misma tienda necesidad de copiar los productos de la categoría a otro lugar)
Adición de producto de servicios de fondo es muy proceso que consume tiempo puede hacerlo por código.
Puede crear un archivo en el directorio raíz de copia-products.php con el siguiente código para copiar producto:
<?php
require_once ("app/Mage.php");
umask(0);
// Initialize Magento
Mage::app();
$category = Mage::getModel('catalog/category');
$category->load('24'); // Category id you want to copy
$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*');
foreach ($collection as $product) {
$product->getId();// Now get category ids and add a specific category to them and save?
$categories = $product->getCategoryIds();
$categories[] = 29; // Category id you want to add
$product->setCategoryIds($categories);
$product->save();
}
?>
Todas las respuestas aquí no estaban completos. Hice un guion que hace el total Creando la nueva categoría, subcategorías y asignándoles los productos.
public function run()
{
$categoryId = 123;
// Change this if you want the copy to be under another category than the default
$baseCategoryId = 2;
$category = Mage::getModel('catalog/category')->load($categoryId);
$defaultCategory = Mage::getModel('catalog/category')->load($baseCategoryId);
$this->duplicate($category, $defaultCategory, 1);
}
private function duplicate($categoryToClone, $parentCategory, $level)
{
// This will clone the clild and assign it to the new parent
$newCategory = clone $categoryToClone;
$newCategory->setPath($parentCategory->getPath())
->setParentId($parentCategory->getId())
->setId(null);
// Optional, Only change the new with suffix with "new" for the first
if ($level == 1) {
$newCategory->setUrlKey($categoryToClone->getUrlKey() . '-new')
->setName($categoryToClone->getName() . '(new)');
}
// Assign all products from the cloned category to the new
$newCategory->setPostedProducts($categoryToClone->getProductsPosition());
$newCategory->save();
// Applies the changes to the subcategories infinite levels
$subcategories = $categoryToClone->getChildrenCategories();
if (count($subcategories) > 0) {
foreach ($subcategories as $subcategory) {
$this->duplicate($subcategory, $newCategory, ++$level);
}
}
}
Copiar cómo. Programado en su script, o en la interfaz de administración de Magento? –
Oh, no importa administrador o script. – Wesley