core event?

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

core event?

Beitrag von chris1278 »

Hallo bei der listener.php steht ja das hier:

Code: Alles auswählen

public static function getSubscribedEvents()
	{
	return array(
		'core.page_header'	=> 'anwendungsskript',
		);
	}
Kann man das selbe event auch für zwei verschiedene mehrmals benutzen ich meine als beispiel etwa so:

Code: Alles auswählen

public static function getSubscribedEvents()
	{
	return array(
		'core.page_header'	=> 'anwendungsskript1',
		'core.page_header'	=> 'anwendungsskript2',
		);
	}
Oder muss immer ein anderes event dort genommen werden.

Gibts da irgendwo vieleicht eine Seite wo man mehr infos bekommt welche Core events es überhaupt gibt. So eine liste welche es gibt und wofür die sind wäre echt super.
Kizu
Mitglied
Beiträge: 543
Registriert: 11.05.2007 15:19
Wohnort: Bremen
Kontaktdaten:

Re: core event?

Beitrag von Kizu »

Moin,

meinst du eine Liste wie diese hier?
https://wiki.phpbb.com/Event_List

Die Funktion "anwendungsskript" definierst du ja selber. Ich sehe keinen Sinn darin, dass du zweimal das selbe Event abgreifst, du könntest auch einfach in einer Funktion beide Funktionen durchführen.

MfG, Daniel
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7870
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: core event?

Beitrag von Kirk »

Hi
Das kann man, lies dir mal diesen Beitrag von Luke durch.
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: core event?

Beitrag von chris1278 »

Kirk danke die Info hat geholfen.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: core event?

Beitrag von LukeWCS »

Kizu hat geschrieben: 22.07.2021 17:50 Ich sehe keinen Sinn darin, dass du zweimal das selbe Event abgreifst, du könntest auch einfach in einer Funktion beide Funktionen durchführen.
Hängt vom Szenario ab. Nehmen wir folgendes an:

Wir benötigen für mehrere Events mehrere Funktionalitäten, aber nicht für jedes Event alle davon, sondern nur jeweils einen Teil. Für Event 1 brauchen wir Funktionalität A und B, aber nicht C. Für Event 2 brauchen wir Funktionalität B und C, aber nicht A. Und für Event 3 brauchen wir nur C. In so einem Fall teilt man die Funktionalitäten in 3 separate Funktionen auf und definiert entsprechend multiple Hooks pro Event.

Wenn aber alle Funktionalitäten nur für ein einziges Event benötigt werden, ist eine Aufteilung in mehrere Funktionen wenig sinnvoll und man sollte zusammenfassen. Die Wahl der Methode hängt eben vom Szenario ab.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Kizu
Mitglied
Beiträge: 543
Registriert: 11.05.2007 15:19
Wohnort: Bremen
Kontaktdaten:

Re: core event?

Beitrag von Kizu »

Moin,
LukeWCS hat geschrieben: 23.07.2021 00:27 Wir benötigen für mehrere Events mehrere Funktionalitäten, aber nicht für jedes Event alle davon, sondern nur jeweils einen Teil. Für Event 1 brauchen wir Funktionalität A und B, aber nicht C. Für Event 2 brauchen wir Funktionalität B und C, aber nicht A. Und für Event 3 brauchen wir nur C. In so einem Fall teilt man die Funktionalitäten in 3 separate Funktionen auf und definiert entsprechend multiple Hooks pro Event.
Ich würde dann vermutlich eher die Funktionalitäten in separate Funktionen auslagern und einfach eine Event-Funktion (oder besser: eine Methode, da wir ja hier von Objekten sprechen) pro Event bauen, die dann die anderen Funktionen aufruft.

MfG, Daniel
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: core event?

Beitrag von chris1278 »

Hi mal eine Frage. Wie man mehrere Publkic functionen mittels aray auf ein und das selbe core event nutzt hab ich schoon nachvollziehen können. Ich habe jetzt eine Extension gemacht wo ich metainformationen in die overall_header_dead_append.html lege und das ganze sollte dann aiuch mit der acp_overall_header_head_append.html im acp funktionieren. Nun hatte ich festgestellt das das core event core.page_header allein nicht ausreicht um auch den gewünschten effekt im acp zu laden. Da die Variabeln aus dem listner.php dort nicht geladen werden. nun habe ich das so gelöst:

Code: Alles auswählen

public static function getSubscribedEvents()
	{
		return array(
			'core.page_header'				=> 	'metainfo',
			'core.adm_page_header'			=> 	'metainfo',
		);
	}
Das funktioniert so wie es soll. Nicht wundern das bei beiden die Funktion metainfo geladen wird, das ist beabsichtig da in beiden event dateien das gleiche steht.

Ist es möglich aus den zwei core events ein einzelnes zu machen bzw. die in einem zusammenzulegen. Ähnlich wie das hier:

Code: Alles auswählen

'core.page_header_after'		=>	array(array('show_randompics'), array('add_randompics')),
Nur das man hier nicht 2 funktionen sondern 2 core events für eine funktion nutzen kann.
69bruno
Mitglied
Beiträge: 445
Registriert: 05.06.2020 08:21

Re: core event?

Beitrag von 69bruno »

Was stört dich daran, je event eine Zeile anzugeben ?
Forum: cruiser-lounge.de
PHPBB-Version: 3.3.11 / Debian-Linux 10 / PHP-Version: 8.1
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: core event?

Beitrag von LukeWCS »

Moin
chris1278 hat geschrieben: 23.08.2021 07:11 Ist es möglich aus den zwei core events ein einzelnes zu machen bzw. die in einem zusammenzulegen. Ähnlich wie das hier:
Ich habe mir die entsprechende Core Datei angeschaut, die das assoziative Array von getSubscribedEvents() verarbeitet. Dort sind 3 Varianten pro Event Hook vorgesehen:
  • Der Parameter enthält einen Funktionsnamen (string).
  • Der Parameter enthält ein Array mit Funktionsnamen (string) sowie Priorität (int).
  • Der Parameter enthält ein Array von Arrays.
Alle möglichen Varianten beziehen sich also nur auf den Parameter, nicht auf das Event.

edit:
Wenn man die entsprechende Doku Seite sichtet, findet man auch alle 3 von mir genannten Varianten.
https://area51.phpbb.com/docs/dev/3.2.x ... t-listener

Weitere Überlegung: Beim Event Name wäre sowas rein technisch auch nicht möglich, weil wir hier ein assoziatives Array haben. Also eine Liste mit Schlüsseln und Werten. Der Schlüssel muss immer eindeutig sein, er kann also gar nicht mehrere Varianten enthalten.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Antworten

Zurück zu „Extension Bastelstube“