Osservatore di eventi per un negozio specifico
-
29-09-2020 - |
Domanda
Io uso questo osservatore di eventi su un multistore per una struttura URL personalizzata Produttore nell'URL del prodottochiave .
Il problema è ora che ho bisogno di questo per un solo ID del negozio specifico.Come posso impostare un osservatore di eventi personalizzato per l'ID del negozio specifico?
Soluzione
Puoi semplicemente controllare all'interno dell'osservatore se si è sulla vista del negozio giusto.
public function updateurl($observer)
{
$storeId = your store id here;
if (Mage::app()->getStore()->getId() == $storeId) {
//your code goes here.
}
}
. Altri suggerimenti
In questo caso, ti suggerisco di utilizzare catalog_product_save_after
.
E se si desidera per un particolare negozio , quindi utilizzare $observer->getEvent()->getProduct()->getStoreId()
che fornisce il tuo ID del tuo prodotto.
Scopri perché ti suggerisco che utilizzi $observer->getEvent()->getProduct()->getStoreId()
a causa di questo collegamento Come posso ottenere il contesto del negozio corretto nel prodotto Salva Observer?
Quindi è necessario inserire la condizione di seguito per il tuo osservatore
if ($observer->getEvent()->getProduct()->getStoreId() == 'Your_Match_Store_id') {
}
.
Observer
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);
}
}
}
}
.