Event Observer para loja específica
-
29-09-2020 - |
Pergunta
Eu uso este Event Observer em um multistore para uma estrutura de URL personalizada Fabricante na chave de URL do produto.
O problema é que agora preciso disso apenas para um ID de loja específico.Como posso definir um Event Observer personalizado para um ID de loja específico?
Solução
você pode simplesmente verificar dentro do observador se está na visualização correta da loja.
public function updateurl($observer)
{
$storeId = your store id here;
if (Mage::app()->getStore()->getId() == $storeId) {
//your code goes here.
}
}
Outras dicas
Neste caso, estou sugerindo que você use catalog_product_save_after
.
E se você quiser para uma determinada loja então use $observer->getEvent()->getProduct()->getStoreId()
que fornecem o ID da loja do seu produto.
veja por que eu sugiro que você use $observer->getEvent()->getProduct()->getStoreId()
por causa deste link Como posso obter o contexto correto da loja no observador de salvamento do produto?
Então você precisa colocar a condição abaixo no seu 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);
}
}
}
}