Ereignisbeobachter für ein bestimmtes Geschäft
-
29-09-2020 - |
Frage
Ich verwende diesen Event Observer in einem Multistore für eine benutzerdefinierte URL-Struktur Hersteller im Produkt-URL-Schlüssel.
Das Problem ist jetzt, dass ich dies nur für eine bestimmte Shop-ID benötige.Wie kann ich einen benutzerdefinierten Ereignisbeobachter für eine bestimmte Geschäfts-ID festlegen?
Lösung
Sie können einfach den Beobachter überprüfen, wenn Sie sich in der rechten Seite aufbewahren.
generasacodicetagpre.Andere Tipps
In diesem Fall empfehle ich Ihnen die Verwendung catalog_product_save_after
.
Und wenn Sie möchten für ein bestimmtes Geschäft dann benutze $observer->getEvent()->getProduct()->getStoreId()
die die Shop-ID Ihres Produkts angeben.
Sehen Sie, warum ich Ihnen diese Verwendung empfehle $observer->getEvent()->getProduct()->getStoreId()
wegen diesem Link Wie kann ich im Product Save Observer den richtigen Store-Kontext abrufen?
Daher müssen Sie Ihrem Beobachter die folgende Bedingung stellen
if ($observer->getEvent()->getProduct()->getStoreId() == 'Your_Match_Store_id') {
}
Beobachter
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);
}
}
}
}