Копировать и вставить категорию в Magento

Я хочу скопировать свою первую категорию во вторую категорию в Magento. Что мне делать?

Спасибо, Уэсли.

По коду:

<?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(); 

Если вы хотите сделать это программным способом, вы можете использовать Magento API. Использование:

 catalog_category.info - to read a category catalog_category.create - to create a new one by copying data from existing. 

Вот документы для категории API

Я бы не клонировал объект категории, а делал что-то вроде этого (используя Magento API – http://www.magentocommerce.com/wiki/doc/webservices-api/catalog_category ):

  • получить категорию, которая должна быть скопирована

     $source_category = Mage::getModel('catalog/category')->load($id); 
  • Создайте новую категорию с помощью 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. */ ) ); 
  • Получите продукты категории источников и поместите их в новую категорию, опять же с API.

     $products = $CategoryApi->assignedProducts(source_category->getId()); foreach($products as $product) { $CategoryApi->assignProduct($product->getId()) } 
  • Выше должно быть сделано рекурсивно для каждой подкатегории.

Примечание. Использование API гарантирует, что ваш код будет работать, когда вы обновите ядро ​​Magento.

Все ответы здесь не были полными. Я сделал сценарий, который делает общее создание новой категории, подкатегорий и назначение продуктов для них.

 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); } } } 

Вы не можете с интерфейсом администратора, вам нужно. создать сценарий с категорией api.

Извините, вы не можете скопировать / вставить категорию непосредственно в панель администратора Magento через интерфейс, который Catalog Products может предлагать с помощью кнопки «Дублировать».

Полагаю, вам нужно будет написать сценарий, получая данные о категории, сначала загрузив модель категории с требуемым идентификатором категории.

Это сообщение на форуме содержит инструкции и код для импорта ваших категорий из файла CSV.

Удачи, JD

Я думаю, вы хотите экспортировать продукты из определенного кота и импортировать их в другой. если это так, используйте следующие шаги:

  • Войти в magento backend
  • перейдите в Систему -> Импорт / Экспорт
  • Создайте новый расширенный профиль для вашей кошки
  • экспортировать его

теперь импортируйте его таким же образом

Иногда нам нужно скопировать одни и те же продукты в другую категорию (например, у нас есть два магазина с одинаковой категорией или внутри одного магазина, чтобы скопировать продукты категории в другое место)

Добавление продукта из back-end очень трудоемкий процесс, вы можете сделать это с помощью кода.

Вы можете создать файл в корневом каталоге copy-products.php со следующим кодом для копирования продукта:

 <?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(); } ?>