# $view-\>sCategories über Subscriber editieren?

**URL:** <https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295>\
**Category:** Programmierung\
**Created:** [20. September 2018 um 11:20 UTC](https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295 "2018-09-20T11:20:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![floatax](https://avatars.discourse-cdn.com/v4/letter/f/9de0a6/32.png) [@floatax](https://forum.shopware.com/u/floatax)\
**Post date:** [20. September 2018 um 11:20 UTC](https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295/1 "2018-09-20T11:20:50Z")

</div>

Hallo Gemeine,

ich möchte in einem Plugin gern den Menü-Baum auf der linken Seite verändern und dort bestimmte Kategorien je nach einer Vorauswahl des Users entfernen oder einfügen.

Ich könnte hier einfach die entsprechenden Smarty-Templates nutzen, aber ich denke es wäre effektiver, früher anzugreifen - nämlich an dem Punkt, in dem die Kategorien für die Sidebar abgerufen werden.

Wie ich gesehen habe, werden die Sidebar-Kategorien in dem Shopware ControllerBase Plugin gesucht und festgelegt. Dieses hat einen Subscriber zu&nbsp;Enlight\_Controller\_Action\_PostDispatch, in dessen Listener die verschiedenen aktiven und anzuzeigenden Kategorien geholt werden:

```
$view->sCategoryStart = $shop->getCategory()->getId();
$view->sCategoryCurrent = $this->getCategoryCurrent($view->sCategoryStart);
$view->sCategories = $this->getCategories($view->sCategoryCurrent);
$view->sMainCategories = $view->sCategories;

```

Genau diese Variablen möchte ich nun gern überschreiben. Im besten Falle möchte ich sogar genau diese 4 Zeilen durch meine eigenen ersetzen, was ohne ein direktes Editieren der Source-Files aber natürlich nicht möglich ist.

Also habe ich einen Subscriber auf genau das gleiche Event wie die ControllerBase registriert:&nbsp;Enlight\_Controller\_Action\_PostDispatch. Leider jedoch kann ich die sCategories Variable der View-Klasse weder aufrufen, noch irgendwie ändern:

```
public static function getSubscribedEvents()
{
    return [
		'Enlight_Controller_Action_PostDispatch' => 'onPostDispatch';  
	];
}

public function onPostDispatch(Enlight_Event_EventArgs $args)
{

    $view = $args->getSubject()->View();

    var_dump($view->sCategories); // => NULL
    var_dump($view->sMainCategories); // => NULL

    $view->sCategories = [];
    $view->sMainCategories = [];

}

```

Habt ihr eine Idee, wie ich die entsprechenden Kategorien in der Sidebar anpassen kann?

Beste Grüße  
Chris

---

<div class="post-metadata">

**Author:** ![ffetech](https://avatars.discourse-cdn.com/v4/letter/f/c77e96/32.png) [@ffetech](https://forum.shopware.com/u/ffetech)\
**Post date:** [3. Dezember 2018 um 21:59 UTC](https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295/2 "2018-12-03T21:59:02Z")

</div>

Hallo Zusammen,

ich hätte die gleiche Frage. Die View-Variable sCategories und sMainCategories&nbsp;ist zum Zeitpunkt des Events&nbsp;Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend&nbsp;nicht befüllt. Dagegen die z .B. die Variable sArticles ist schon befüllt.

Woran könnte das liegen? Wo ist der Unterschied zwischen der Variablen sCategories und sArticles?

Beste Grüße

Flo

---

<div class="post-metadata">

**Author:** ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)\
**Post date:** [4. Dezember 2018 um 19:57 UTC](https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295/3 "2018-12-04T19:57:28Z")

</div>

Hallo @ffetech,  
weil sCategories und sMainCategories würde hier befullt: [shopware/Bootstrap.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php#L82) nach dem Event Enlight\_Controller\_Action\_PostDispatch [shopware/Bootstrap.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php#L38) und Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend notifed bevor Enlight\_Controller\_Action\_PostDispatch wie du kannst hier sehen: [shopware/Action.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Library/Enlight/Controller/Action.php#L216) deshalb du kannst nicht diese Variable finden beim Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend also was du kannst machen ist, benutzen Enlight\_Controller\_Action\_PostDispatch und mache das Position nach dem ControllerBase/Bootstrap.php subscribe Position. oder after hacken das sGetCategories funktion hier: [shopware/Bootstrap.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php#L131)

---

<div class="post-metadata">

**Author:** ![ahmadsaad](https://avatars.discourse-cdn.com/v4/letter/a/65b543/32.png) [@ahmadsaad](https://forum.shopware.com/u/ahmadsaad)\
**Post date:** [4. Dezember 2018 um 19:57 UTC](https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295/4 "2018-12-04T19:57:28Z")

</div>

Hallo @ffetech,

weil sCategories und sMainCategories würde hier befullt:  
[shopware/Bootstrap.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php#L82)

nach dem Event Enlight\_Controller\_Action\_PostDispatch  
[shopware/Bootstrap.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php#L38)

und Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend notifed bevor Enlight\_Controller\_Action\_PostDispatch wie du kannst hier sehen:  
[shopware/Action.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Library/Enlight/Controller/Action.php#L216)

deshalb du kannst nicht diese Variable finden beim Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend

also was du kannst machen ist, benutzen Enlight\_Controller\_Action\_PostDispatch und mache das Position nach dem ControllerBase/Bootstrap.php subscribe Position, oder after hacken das sGetCategories funktion hier:  
[shopware/Bootstrap.php at 5.5 · shopware/shopware · GitHub](https://github.com/shopware/shopware/blob/5.5/engine/Shopware/Plugins/Default/Core/ControllerBase/Bootstrap.php#L131)

VG,

Tel.: +49 755&nbsp;- 183 990 00 | Web:&nbsp;[http://enbit.de/](http://enbit.de/)

---

<div class="post-metadata">

**Author:** ![ffetech](https://avatars.discourse-cdn.com/v4/letter/f/c77e96/32.png) [@ffetech](https://forum.shopware.com/u/ffetech)\
**Post date:** [4. Dezember 2018 um 20:21 UTC](https://forum.shopware.com/t/view-scategories-uber-subscriber-editieren/55295/5 "2018-12-04T20:21:47Z")

</div>

Hallo @ahmadsaad,

vielen, vielen, vielen Dank 🙂 So funktioniert es 🙂

```
public static function getSubscribedEvents()
{
  return [
    'Enlight_Controller_Action_PostDispatch' => array('onPostDispatch', 101),
        ];

}

```

wenn man die Priorität auf **101** setzt, da die Priorität in Bootstrap.php auf 100 gesetzt ist.

```
public function install()
{
    $this->subscribeEvent(
       'Enlight_Controller_Action_PostDispatch',
       'onPostDispatch',
        100
   );
   return true;
}

```

&nbsp;
