Magento - перемещение категории программно - PullRequest
5 голосов
/ 21 октября 2010

Как переместить категорию в другую категорию со всеми дочерними категориями?

Я пробовал следующее решение:

$nodeId = 2269;
$parentId = 2268;

$tree = Mage::getResourceModel('catalog/category_tree')->load();
$node = $tree->getNodeById($nodeId);
$parentNode = $tree->getNodeById($parentId);

$parentChildren = explode(',', $parentNode->getChildren());
$afterId = array_pop($parentChildren);
$prevNode = $tree->getNodeById($afterId);
if (!$prevNode || !$prevNode->getId()) {
    $prevNode = null;
}

$tree->move($node, $parentNode, $prevNode);

Однако мой результат несколько искажен.Если я перехожу в корневую категорию, перемещение работает, но если я перехожу в дочернюю категорию, я получаю ошибочные результаты и исчезающие категории.

Это значения пути к полю в базе данных:

Old: 1/2/3/2175/2269
New: 1/2/3/2175/2226/2268/2269
Correct: 1/2/3/2226/2268/2269

Ответы [ 2 ]

17 голосов
/ 26 октября 2010

Решение было довольно простым, оно не мешает. Однако кажется, что этот метод медленнее.

$categoryId = 2269;
$parentId = 2268;

$category = Mage::getModel('catalog/category')->load($categoryId);
$category->move($parentId, null);
1 голос
/ 30 января 2015
$parent = Mage::getModel('catalog/category')->load('REPLACE_WITH_PARENT_ID');
$category = Mage::getModel('catalog/category');
$category->addData(array('name' => 'YOUR_CATEGORY_NAME', 'path' => $parent->getPath()));
$category->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...