Observador de eventos para tienda específica
-
29-09-2020 - |
Pregunta
Utilizo este evento Observador en una multiestore para una estructura de URL personalizada Fabricante en URL del productollave .
El problema es ahora que necesito esto para un solo ID de tienda específico.¿Cómo puedo configurar un observador de eventos personalizados para ID de tienda específica?
Solución
Solo puede verificar dentro del observador si está en la vista de la tienda correcta.
public function updateurl($observer)
{
$storeId = your store id here;
if (Mage::app()->getStore()->getId() == $storeId) {
//your code goes here.
}
}
Otros consejos
En este caso, le estoy sugiriendo que use catalog_product_save_after
.
Y si quiere para una tienda en particular , use $observer->getEvent()->getProduct()->getStoreId()
que le dé la identificación de su tienda de productos.
Vea por qué le sugiero que use $observer->getEvent()->getProduct()->getStoreId()
debido a este enlace ¿Cómo puedo obtener el contexto de la tienda correcta en el producto Guardar Observador?
, por lo que debe poner la siguiente condición para su observador
if ($observer->getEvent()->getProduct()->getStoreId() == 'Your_Match_Store_id') {
}
Observador
class MageStack_24869_Model_Observer
{
public function updateurl($observer)
{
if ($observer->getEvent()->getProduct()) {
if ($observer->getEvent()->getProduct()->getStoreId() == 'Your_Match_Store_id') {
$product = $observer->getEvent()->getProduct();
$url = '';
if (!is_null($product->getData('country_of_manufacture'))) {
$url .= $product->getAttributeText('country_of_manufacture') . '-';
}
if (!is_null($product->getData('sku'))) {
$url .= $product->getData('sku') . '-';
}
if(!is_null($product->getData('name'))) {
$url .= $product->getData('name');
}
$product->setData('url_key', $url);
}
}
}
}