Comment déplacer une catégorie vers une autre catégorie avec toutes les catégories enfants?Magento - Déplacer une catégorie par programme
J'ai essayé la solution suivante:
$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);
Cependant, mon résultat est un peu tordu. Si je passe à la catégorie racine, le déplacement fonctionne, mais si je passe à une catégorie enfant, j'obtiens des résultats erronés et des catégories qui disparaissent.
Ce sont les valeurs du chemin du champ dans la base de données:
Old: 1/2/3/2175/2269
New: 1/2/3/2175/2226/2268/2269
Correct: 1/2/3/2226/2268/2269
Je crois que cette méthode est plus lente, car il doit passer par et rediriger tous les anciens produits vers la nouvelle URL. –