Smarty Variablen / Assigns in Plugin

Guten Tag zusammen,

ich möchte in einem eigenem Plugin die aktuelle Kategorie-ID auslesen.
Grundsätzlich funktioniert das auslesen mancher Werte und auch die Darstellung im Template,
nur für den Wert den ich eigentlich brauche (Kategorie ID) nicht.

Ich weiß, dass mir die Kategorie ID im Template bereits zur Verfügung steht, möchte aber zu den Kategorien noch Zusatzinfos laden und brauche für mein Plugin an dieser Stelle die ID.

Folgenden Foreneintrag habe ich bereits gesehen, gelesen und versucht umzusetzten: https://forum.shopware.com/discussion/12462/geloest-aktuelle-catid-in-plugins

public static function getSubscribedEvents() {
    return [
      'Enlight_Controller_Action_PostDispatch_Frontend_Listing' => 'onPostDispatchFrontendListing',
      //Auch schon probiert als Event: Enlight_Controller_Action_PostDispatch
    ];
}

public function onPostDispatchFrontendListing(Enlight_Event_EventArgs $args){
    $controller = $args->get('subject');
    $view = $controller->View();

    // Keine Ausgabe im Template
    $currentCatId = $view->sCategoryCurrent;
    $view->assign('cat_id', $currentCatId);

    // Keine Ausgabe im Template
    $currentCatId_A = $view->getAssign('sCategoryCurrent');
    $view->assign('cat_id_a', $currentCatId_A);

    // Keine Ausgbae im Template
    $currentCatId_B = $view->sCategoryInfo['id'];
    $view->assign('cat_id_b', $currentCatId_B);

    // Ausgabe im Template funktioniert.
    $articles = $view->sArticles;
    $view->assign('articles',$articles);
      
    // Ausgabe im Template funktioniert.
    $view->assign('test', 'test');
}

Für Ideen & Vorschläge wäre ich dankbar.

@sschumacher schrieb:

Guten Tag zusammen,

ich möchte in einem eigenem Plugin die aktuelle Kategorie-ID auslesen.
Grundsätzlich funktioniert das auslesen mancher Werte und auch die Darstellung im Template,
nur für den Wert den ich eigentlich brauche (Kategorie ID) nicht.

Ich weiß, dass mir die Kategorie ID im Template bereits zur Verfügung steht, möchte aber zu den Kategorien noch Zusatzinfos laden und brauche für mein Plugin an dieser Stelle die ID.

Folgenden Foreneintrag habe ich bereits gesehen, gelesen und versucht umzusetzten: https://forum.shopware.com/discussion/12462/geloest-aktuelle-catid-in-plugins

public static function getSubscribedEvents() {
return [
‘Enlight_Controller_Action_PostDispatch_Frontend_Listing’ => ‘onPostDispatchFrontendListing’,
//Auch schon probiert als Event: Enlight_Controller_Action_PostDispatch
];
}

public function onPostDispatchFrontendListing(Enlight_Event_EventArgs $args){
$controller = $args->get(‘subject’);
$view = $controller->View();

// Keine Ausgabe im Template
$currentCatId = $view->sCategoryCurrent;
$view->assign(‘cat_id’, $currentCatId);

// Keine Ausgabe im Template
$currentCatId_A = $view->getAssign(‘sCategoryCurrent’);
$view->assign(‘cat_id_a’, $currentCatId_A);

// Keine Ausgbae im Template
$currentCatId_B = $view->sCategoryInfo[‘id’];
$view->assign(‘cat_id_b’, $currentCatId_B);

// Ausgabe im Template funktioniert.
$articles = $view->sArticles;
$view->assign(‘articles’,$articles);

// Ausgabe im Template funktioniert.
$view->assign(‘test’, ‘test’);
}

Für Ideen & Vorschläge wäre ich dankbar.

Hallo,

was gibt denn $args->get(‘subject’); zurück? Ansich müsste doch die Kategorie-ID bereits dort enthalten sein. Am besten einfach mal ein print_r() machen und ein die() danach etc.

Beste Grüße

Sebastian

Erstmal danke für die Antwort :slight_smile:

Bei

print_r($controller);

die();

Bekomme ich zwar eine Teilausgabe aber dann…

…hängen sich alle Browser bei mir auf.

 

MIttlerweile habe ich eine andere Lösung gefunden:

$currentCatId = $view->sCategoryContent['id'];

liefert die gesuchte ID.

Ich wär dennoch froh wenn mir jemand sagen kann, warum ich auf manche Assigns der View einfach nicht zugreifen kann / darf.

Grüße
Stefan