Magento-以编程方式移动类别

Magento-以编程方式移动类别,magento,Magento,如何将一个类别移动到另一个包含所有子类别的类别 我尝试了以下解决方案: $nodeId = 2269; $parentId = 2268; $tree = Mage::getResourceModel('catalog/category_tree')->load(); $node = $tree->getNodeById($nodeId); $parentNode = $tree->getNodeById($parentId); $parentChildren = expl

如何将一个类别移动到另一个包含所有子类别的类别

我尝试了以下解决方案:

$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

解决方案很简单,这个不会弄乱路径。然而,这种方法感觉比较慢

$categoryId = 2269;
$parentId = 2268;

$category = Mage::getModel('catalog/category')->load($categoryId);
$category->move($parentId, null);

我相信这个方法比较慢,因为它必须遍历并将所有旧产品重定向到新的URL。
$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();