# Core Funktion überschreiben

**URL:** <https://forum.shopware.com/t/core-funktion-uberschreiben/59004>\
**Category:** Programmierung\
**Created:** [9. April 2019 um 10:05 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004 "2019-04-09T10:05:06Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![vivatec](https://avatars.discourse-cdn.com/v4/letter/v/ea666f/32.png) [@vivatec](https://forum.shopware.com/u/vivatec)\
**Post date:** [9. April 2019 um 10:05 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/1 "2019-04-09T10:05:06Z")

</div>

Hallo,

ich möchte den SQL-Befehl in der Funktion Core-\>sAdmin-\>sGetOpenOrderData() anpassen.

Wie gehe ich da am besten vor?

Mich an das Event ‚Shopware\_Modules\_Admin\_GetOpenOrderData\_FilterResult‘ zu hängen bringt in dem Fall ja nix, da da ja die Abfrage schon ausgeführt wurde…

Wie kann ich das also lösen?

Besten Dank für eure Tipps!

---

<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:** [11. April 2019 um 16:35 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/2 "2019-04-11T16:35:49Z")

</div>

Hallo @vivatec‍,

Dies hängt davon ab, was Sie anpassen möchten.

schuae mal die Shopware Hooks( ::before, ::after, ::replace ) hier:

[https://developers.shopware.com/developers-guide/event-guide/#hooks](https://developers.shopware.com/developers-guide/event-guide/#hooks)

VG,

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

---

<div class="post-metadata">

**Author:** ![vivatec](https://avatars.discourse-cdn.com/v4/letter/v/ea666f/32.png) [@vivatec](https://forum.shopware.com/u/vivatec)\
**Post date:** [4. Juni 2019 um 11:34 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/3 "2019-06-04T11:34:33Z")

</div>

Hallo,

danke für die Antwort. Leider komme ich damit nicht weiter. Ich weiß nicht, an welcher Stelle ich das einbauen müsste.

Also die Anforderung wäre, dass ich den SQL-Befehl anpasse, alles weitere in dieser Funktion kann so bleiben.

Lässt sich das realisieren?

---

<div class="post-metadata">

**Author:** ![h\_lohaus](https://avatars.discourse-cdn.com/v4/letter/h/a587f6/32.png) [@h\_lohaus](https://forum.shopware.com/u/h_lohaus)\
**Post date:** [4. Juni 2019 um 11:43 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/4 "2019-06-04T11:43:53Z")

</div>

Hi,

da es dafür kein weiteres Event gibt, musst du wohl es kopieren + überschreiben.

Gruß Heiner

---

<div class="post-metadata">

**Author:** ![vivatec](https://avatars.discourse-cdn.com/v4/letter/v/ea666f/32.png) [@vivatec](https://forum.shopware.com/u/vivatec)\
**Post date:** [4. Juni 2019 um 13:41 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/5 "2019-06-04T13:41:48Z")

</div>

Ok.

Also muss ich trotzdem nen Hook auf diese Funktion setzen und “replace” verwenden, richtig?  
Aber wie genau muss ich das denn bauen, wenn ich das in einem Plugin haben möchte?

Also&nbsp;beispielsweise einen Controller erweitern, krieg&nbsp;ich wohl hin.  
Aber für so ne Core-Funktion? Muss das dann direkt in die myPlugin.php mit rein?

Und den Hook so in etwa?

&nbsp;

```
class MyPlugin extends Plugin
{
	public static function getSubscribedEvents()
    {
        return [
            'sAdmin::sGetOpenOrderData::replace' => 'myCallback'
        ];
    }

    public function myCallback(\Enlight_Event_EventArgs $args){
        ...
    }

...

}

```

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![hsoebbing](https://avatars.discourse-cdn.com/v4/letter/h/898d66/32.png) [@hsoebbing](https://forum.shopware.com/u/hsoebbing)\
**Post date:** [4. Juni 2019 um 13:50 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/6 "2019-06-04T13:50:37Z")

</div>

Das sieht schon sehr gut aus! Aus den $args kriegst Du die Parameter der originalen Funktion, die kannst Du jetzt komplett neu implementieren.

---

<div class="post-metadata">

**Author:** ![Lukaschel](https://avatars.discourse-cdn.com/v4/letter/l/e56c9b/32.png) [@Lukaschel](https://forum.shopware.com/u/Lukaschel)\
**Post date:** [5. Juni 2019 um 21:35 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/7 "2019-06-05T21:35:26Z")

</div>

Du solltest bei deiner myCallback Funktion als Übergabewert Enlight\_Hook\_HookArgs $args angeben.

---

<div class="post-metadata">

**Author:** ![marquez71](https://avatars.discourse-cdn.com/v4/letter/m/958977/32.png) [@marquez71](https://forum.shopware.com/u/marquez71)\
**Post date:** [16. Oktober 2020 um 19:23 UTC](https://forum.shopware.com/t/core-funktion-uberschreiben/59004/8 "2020-10-16T19:23:08Z")

</div>

Hallo,

ich möchte das Thema nochmal aufgreifen, weil ich vor einem ähnlichen Problem stehe.

Was ist denn der Unterschied zwischen:

_Enlight\_Event\_EventArgs $args_  
und:  
_Enlight\_Hook\_HookArgs $args_

Ich habe einen separaten Post aufgemacht [https://forum.shopware.com/discussion/72260/plugin-programmiert-was-mache-ich-falsch/](https://forum.shopware.com/discussion/72260/plugin-programmiert-was-mache-ich-falsch/), weil ich scheinbar beim replace was falsch mache, und dann bei der Ausgabe im Frontend eine Exception bekomme:  
&nbsp;

```
Fatal error: Uncaught TypeError: Argument 1 passed to Shopware_Controllers_Frontend_Account::applyTrackingUrl() must be of the type array, null given, called in [SHOPWARE_PATH]/engine/Shopware/Controllers/Frontend/Account.php on line 137 and defined in [SHOPWARE_PATH]/engine/Shopware/Controllers/Frontend/Account.php:751 Stack trace:
#0 [SHOPWARE_PATH]/engine/Shopware/Controllers/Frontend/Account.php(137): Shopware_Controllers_Frontend_Account->applyTrackingUrl(NULL)
#1 [SHOPWARE_PATH]/engine/Library/Enlight/Controller/Action.php(193): Shopware_Controllers_Frontend_Account->ordersAction()
#2 [SHOPWARE_PATH]/engine/Library/Enlight/Controller/Dispatcher/Default.php(549): Enlight_Controller_Action->dispatch('ordersAction')
#3 [SHOPWARE_PATH]/engine/Library/Enlight/Controller/Front.php(222): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_R in [SHOPWARE_PATH]/engine/Shopware/Controllers/Frontend/Account.php on line 751

```

Aber soweit ich das gesehen habe in der Dokumentation, wird doch bei Plugins auf Enlight\_Event\_EventArgs verwiesen.

Macht das einen Unterschied ?

Wäre gut, wenn hierzu mal jemand was sagen könnte, und vielleicht doch was zu meinem Post schreiben kann zum lösen.

Danke.  
&nbsp;
