Pregunta

Actualmente estoy trabajando con un cliente que tiene un gran catálogo con cientos de categorías.Estamos en el proceso de reestructurar su árbol de categorías y descubrimos que el área de administración de Magento está tardando demasiado en hacerlo.

¿Existe alguna manera de modificar los pedidos de categorías y los ID principales de las categorías mediante programación utilizando algún tipo de script o tal vez a través de la API?

Encontré la siguiente pregunta de pila de otro usuario al realizar una tarea similar, pero se publicó hace un tiempo y me preguntaba si había una mejor manera de hacerlo.

https://stackoverflow.com/questions/3986344/magento-move-a-category-programmatically

Gracias por tu ayuda :-)

¿Fue útil?

Solución

La ubicación de cada categoría en el árbol se establece mediante su ruta que puede ver definida en la tabla de la base de datos. catalog_category_entity.El camino es sólo un / Lista separada de identificadores de categoría que definen la ubicación de la categoría.Esto siempre empezará con 1 siendo la categoría de nivel más alto que en realidad no se muestra en la vista de categorías.Después de eso, verá la identificación de todas las categorías que conducen a la categoría que le interesa.Por ejemplo, en la demostración, la ruta para la categoría de zapatos para hombre en ropa es 1/3/18/5/16.Para establecer una nueva ubicación para esta categoría, simplemente puede cambiar esta ruta, por lo que configurarla en 1/3/18/5 cambiaría la ubicación de la categoría para que esté debajo de ropa en lugar de zapatos.

Entonces, para cambiar la ubicación de esta categoría particular en el árbol, simplemente puedes hacer:

$category = Mage::getModel('catalog/category')->load(16);
$category->setPath('1/3/18/5')->save();

Y la categoría se habrá trasladado a una categoría secundaria de ropa en lugar de zapatos.Sin embargo, una nota importante.Hay varios otros pasos que debe seguir para editar la categoría, de modo que también se deba cambiar otra lógica relacionada con la determinación de la ubicación de la categoría (por ejemplo, la llamada a getLevel() en la categoría ahora estaría mal.Entonces, junto con la ruta, también necesitarás actualizar parent_id, position, level y children_count.Todos estos se pueden actualizar con la misma técnica que para path (es decir. setChildrenCount()).

Si necesita actualizar muchas categorías con algo más que una configuración de árbol bastante simple, determinar cuáles debe ser cada uno de estos valores para cada categoría no será una tarea fácil.Mi consejo sería seguir la forma de hacer las cosas del administrador para asegurarse de que toda la información termine siendo correcta, y si desea probar este método de todos modos, pruebe primero en un entorno seguro, pruebe después y proceda con precaución.

Otros consejos

Lo que Jonathan sugirió que funcionó muy bien y me permitió actualizar la orden de las categorías muy rápidamente.También encontré que cambiar los modos de guardado de índice de 'Actualizar en Guardar' a 'Actualización manual' también aceleró el área de administración y me permitió guardar los cambios sin tener que esperar horas.Para cuando descubrí esto, ya había escrito un script que usaba el método anterior para actualizarlos.Espero que esto ayude: -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top