Esto funciona bien en Magento CE 1.6 y versiones posteriores:
$event =Mage::getSingleton('index/indexer')->logEvent(
$product,
$product->getResource()->getType(),Mage_Index_Model_Event::TYPE_SAVE,false);Mage::getSingleton('index/indexer')->getProcessByCode('catalog_url')// Adjust the indexer process code as needed->setMode(Mage_Index_Model_Process::MODE_REAL_TIME)->processEvent($event);
Los códigos indexadores disponibles se pueden ver usando la consulta:
En Magento EE 1.13 es diferente, allí el indexador recoge automáticamente las entidades cambiadas en cada ejecución cron (cada minuto).
ACTUALIZAR
La respuesta anterior es 100% correcta de todos modos, creo que la información a continuación puede agregar algo más.
Si necesita cambiar solo algunos valores de atributos en un producto y actualizar automáticamente la tabla de índice relativo, puede usar esta función:
Mage::getSingleton('catalog/product_action')->updateAttributes();
si desea gestionar la reindexación por su cuenta, utilice el modelo de recurso en su lugar: Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
Por ejemplo, uso la siguiente función para actualizar rápidamente solo ciertos atributos en un producto.
Copiaré el comentario del usuario 5973 aquí, porque se eliminará. @Vinai, ¿estás diciendo que EE 1.13+ no tiene estos problemas de rendimiento al reindexar datos relacionados con el producto? ¿Dónde podemos confirmar que el indexador EE recoge automáticamente las entidades modificadas y procesa solo esas?
Fabian Blechschmidt
En EE 1.13, el indexador utiliza los activadores de MySQL para recoger cualquier cambio en un nivel de base de datos y registrar las ID de entidad actualizadas en una tabla de registro de cambios. Estos registros de cambios se procesan a través de cronjobs.
Vinai
2
Supongo que quiere decir que desea reindexar un producto después de editarlo en la interfaz de usuario administrativa. El método más fácil es simplemente configurar el modo indexador para "actualizar al guardar". Debería hacer esto para todos los indexadores relacionados con los productos que está utilizando, que probablemente incluyen: Atributos del producto, Precios del producto, Datos planos del producto, Categoría Productos, Estado del stock.
Sin embargo, esto probablemente ralentizará el ahorro de productos.
Asegúrese de no hacer esto en la interfaz de usuario ni en los scripts de actualización, y la tienda actualmente cargada es "admin". De lo contrario, $ product-> save () no funcionará en absoluto. Compruebe primero que guardar un producto tiene efecto.
Además de la respuesta de @ feversocial, también asegúrese de tener todo lo que se necesita para cargar en el producto antes de llamar a $ product-> save (). De lo contrario, el ahorro en realidad puede eliminar cosas del producto que he experimentado por las malas.
Como guardar el producto sin una SKU, lo que rompe todas las reescrituras de URL y hace que todo el sitio redirija a esta página de producto: S: P
Buen punto, por eso creo que es mejor usar el catolog/product_actionenfoque para que no se arriesgue al problema anterior
Fra
1
Esta información puede ser útil para comprender un poco mejor todo el escenario.
Si necesita cambiar solo un valor de atributo y actualizar automáticamente la tabla de índice relativo, puede usar esta función:
Mage::getSingleton('catalog/product_action')->updateAttributes();
si desea gestionar la reindexación por su cuenta, utilice el modelo de recurso en su lugar: Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
Por ejemplo, uso la siguiente función para actualizar rápidamente solo ciertos atributos en un producto.
Supongo que quiere decir que desea reindexar un producto después de editarlo en la interfaz de usuario administrativa. El método más fácil es simplemente configurar el modo indexador para "actualizar al guardar". Debería hacer esto para todos los indexadores relacionados con los productos que está utilizando, que probablemente incluyen: Atributos del producto, Precios del producto, Datos planos del producto, Categoría Productos, Estado del stock.
Sin embargo, esto probablemente ralentizará el ahorro de productos.
Alternativamente, quizás este enlace ayude. Consulte los comentarios y también describe cómo actualizar el stock. http://www.magentocommerce.com/answers/discussion/239/reindex-one-product-at-a-time/p1
fuente
Asegúrese de no hacer esto en la interfaz de usuario ni en los scripts de actualización, y la tienda actualmente cargada es "admin". De lo contrario, $ product-> save () no funcionará en absoluto. Compruebe primero que guardar un producto tiene efecto.
fuente
Además de la respuesta de @ feversocial, también asegúrese de tener todo lo que se necesita para cargar en el producto antes de llamar a $ product-> save (). De lo contrario, el ahorro en realidad puede eliminar cosas del producto que he experimentado por las malas.
Como guardar el producto sin una SKU, lo que rompe todas las reescrituras de URL y hace que todo el sitio redirija a esta página de producto: S: P
fuente
catolog/product_action
enfoque para que no se arriesgue al problema anteriorEsta información puede ser útil para comprender un poco mejor todo el escenario.
Si necesita cambiar solo un valor de atributo y actualizar automáticamente la tabla de índice relativo, puede usar esta función:
Mage::getSingleton('catalog/product_action')->updateAttributes();
si desea gestionar la reindexación por su cuenta, utilice el modelo de recurso en su lugar:
Mage::getResourceSingleton('catalog/product_action')->updateAttributes();
Por ejemplo, uso la siguiente función para actualizar rápidamente solo ciertos atributos en un producto.
fuente