Nicht so ganz verstanden [EXTENSION]

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.
MrExilGame
Mitglied
Beiträge: 4
Registriert: 03.11.2014 12:05

Nicht so ganz verstanden [EXTENSION]

Beitrag von MrExilGame »

Hallo,

auch ich wollte nun für meine Community die ich gerade aufbaue eine Extension schreiben und habe mir das "Hello World" von NickVergessen angeschaut, leider muss ich bemerken das mir in der neuen Doku sämtliche Zusammenhänge nicht ins Auge springen wollen. Zusammenhänge und alles sehen mir mehr aus wie Zusammen gehauener PHP Salat anstatt nach guter Struktur die ich verstehe (das soll nicht böse gemeint sein sondern nur wie ich mich durch die Englische Doku fühle). Daher würde ich euch doch vielleicht mal bitten mir vielleicht ein paar Fragen zu beantworten :)
  1. Was sind die wichtigen Dateien für die Extension und wo sehe ich ausser an dem Beispiel wo was rein gehört ?
  2. Wie kann ich eine Extension dazu bringen zum Beispiel eine Boardfunktion zu erweitern (gibt es da eine Hookfunktion oder ähnliches ?)
  3. Hat jemand vielleicht ein Deutsches Tutorial wodurch ich mich ein wenig in die PHPBB Extension Welt einarbeiten kann ? (was auch aktuell ist)
Ich wäre für eure Hilfe sehr dankbar daher sich in der Anfangszeit meiner Community natürlich noch kein ehrenamtlicher Coder findet der im Team mitwirken möchte und ich somit die ersten Dinge am besten selber programmieren muss. (Ich kann programmieren und habe auch schon WBB Plugins geschrieben, ich muss das System nur erstmal verstehen ^^ )

Liebe Grüße
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von Elsensee »

Ja, ich muss dir Recht geben. Es ist schwer, in dieses System reinzukommen, aber sobald man drin ist, ist es plötzlich so logisch. :D

Einen deutschen Artikel hierzu kenne ich nicht, nur den englischen: https://www.phpbb.com/extensions/writing/
Weiter unten gibt es auch noch einige Links ins phpBB Development Wiki, wo man auch noch Zusatzinformationen zu den Routen findet.
Aber es ist eine gute Idee, den mal zu übersetzen und ihn dann hier in der KB oder gar im phpBB Development Wiki reinzustellen, auch wenn man von Extension-Entwicklern erwarten kann, dass sie wenigstens grundlegende Englischkenntnisse besitzen. :wink:

Aber ich kann dir ja schon mal deine ersten beiden Fragen beantworten: :wink:
Die ext.php ist eher unwichtig und wirst du wahrscheinlich niemals benötigen. Die composer.json ist hingegen elementarer Bestandteil, genauso wie die config/services.yml. Die config/routing.yml ist eher optional und nur notwendig, wenn du möchtest, dass deine Extension eine eigene Seite anzeigt. Wichtiger für dich wäre da vermutlich die Datei event/main_listener.php, wo du festlegen kannst, auf welche Events du hören möchtest und was dann an der Stelle geschieht. Eine Auflistung der Events findest du im phpBB Development Wiki. Template-Events kannst du ebenfalls benutzen, dafür musst du einen Ordner event in einem Style-Ordner in deiner Extension anlegen. Wie das genau funktioniert, steht auf der verlinkten Seite. :wink:
Migrations sind auch noch sehr interessant, aber recht umfangreich.
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
nachtelb
Mitglied
Beiträge: 6
Registriert: 04.11.2014 09:13

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von nachtelb »

Vielen Dank Elsensee, es ist enorm, wie man mit so wenig Text soviel Grundverständnis vermitteln kann. (Ich mein das ernst.) Danke.
Ich hab schon drei Extensions zum Laufen gebracht aber konnte jetzt gleich mal kräftig löschen nach deiner Info. :)


Ich brauche die Extensions nur, um Template-Code über Template-Events einzubauen. Alles andere würde mich momentan überfordern. Wie sieht in diesem Fall meine main-listener aus? Kann sie ganz entfallen oder was bleibt davon übrig? Ich brauche auch keine Sprachvariablen, da ich nur deutschsprachige Seiten betreue. Aktuell sieht die Datei bei mir so aus:

Code: Alles auswählen

namespace nachtelb\linkbuttons\event;

/**
* @ignore
*/
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
* Event listener
*/
class main_listener implements EventSubscriberInterface
{
	static public function getSubscribedEvents()
	{
		return array(
			'core.user_setup'						=> 'load_language_on_setup',
			'core.page_header'						=> 'add_page_header_link',
		);
	}

	/* @var \phpbb\controller\helper */
	protected $helper;

	/* @var \phpbb\template\template */
	protected $template;

	/**
	* Constructor
	*
	* @param \phpbb\controller\helper	$helper		Controller helper object
	* @param \phpbb\template			$template	Template object
	*/
	public function __construct(\phpbb\controller\helper $helper, \phpbb\template\template $template)
	{
		$this->helper = $helper;
		$this->template = $template;
	}

	public function load_language_on_setup($event)
	{

	}

	public function add_page_header_link($event)
	{

	}
}
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von Elsensee »

Wenn du nur Template-Events nutzen möchtest, brauchst du tatsächlich nichts weiter als die composer.json und einen styles Ordner. (Oder einen adm Ordner, wenn du die Template-Events im Administrations-Bereich nutzen möchtest)
Mehr dazu kannst du im hier im phpBB Development Wiki finden. :wink:

Wie du dort auch sehen kannst, könntest du anstelle des Stylenamens all nehmen, dann gilt das für alle Styles. :)
nachtelb hat geschrieben:Vielen Dank Elsensee, es ist enorm, wie man mit so wenig Text soviel Grundverständnis vermitteln kann. (Ich mein das ernst.) Danke.
Danke. Es freut mich immer, so etwas zu hören. :)
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
nachtelb
Mitglied
Beiträge: 6
Registriert: 04.11.2014 09:13

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von nachtelb »

Yippeah. :) Hat geklaaapt. Dankeschön! Nur noch Code den ich versteh im Ordner.
Wens interessiert: https://github.com/nachtelb/nachtelb-li ... extension/
MrExilGame
Mitglied
Beiträge: 4
Registriert: 03.11.2014 12:05

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von MrExilGame »

Also entschuldigung das ich so lange nicht geantwortet habe, viel Ausbildungsstress brachte mich dazu die Zeit nicht zu finden. Ich danke erst einmal für deine Antwort und werde es mir heute mal versuchen ein wenig mehr rein zu kloppen :)
MrExilGame
Mitglied
Beiträge: 4
Registriert: 03.11.2014 12:05

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von MrExilGame »

Also es sind für mich doch kleine neue Fragen aufgekommen. Ich versuche sie in Beispielen zu nennen wenn ich sie Komplex finde um sie zu normal zu fragen. Hoffe das ich eine Antwort bekomme :)
  • Wo baue ich den Language Code ein ? in der Main oder im Template ? Und wie baue ich sie ein den in der Englischen Beschreibung steht es nicht wenn ich es richtig übersetzt bekomme (kann auch falsch liegen)
  • Du hast von der Event geredet. Nehmen wir nun mal als Beispiel ich würde gerne dem Userprofil ein Bereich hinzufügen wo ich zum Beispiel wie in einem englischen DEV Plugin ein Banner einbauen möchte den der User bestimmen kann. Wie gehe ich dann vor ? Also wie ist das mit den Event´s zu handhaben ? (Ufff hoffe das ist so erklärt das ihr es versteht und nicht denkt ich will Code geschenkt haben.
  • Bei https://www.phpbb.com/extensions/writing/#a-including nennt er einen Code (2 Beispiel nicht erstes) wie ist das gemeint ich komme in dem Bereich mit dem Übersetzen nicht so weiter
(Habe mir das Hello World auch runter geladen und für manches schon als Orientierung genommen nur diese Punkte ergeben sich mir auch nicht wirklich durch das anschauen... Daher ich die Language a gerne multi machen würde als in dem Fall das ich aussuchen kann ob deutsch oder englisch)
Wäre lieb wenn ihr mir hier helft. Liebe Grüße
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von gn#36 »

Wo baue ich den Language Code ein ? in der Main oder im Template ? Und wie baue ich sie ein den in der Englischen Beschreibung steht es nicht wenn ich es richtig übersetzt bekomme (kann auch falsch liegen)
Sprachdateien gehören in language/[iso-code-der-sprache]/sprachdateiname.php innerhalb deiner Extension. Also zum Beispiel language/de/hello_world.php.
In deiner Extension kannst du die Variablen dann mit $user->add_lang_ext('vendor/extensionname', 'sprachdateiname'); laden (vorausgesetzt, du hast $user geladen, natürlich).
Du hast von der Event geredet. Nehmen wir nun mal als Beispiel ich würde gerne dem Userprofil ein Bereich hinzufügen wo ich zum Beispiel wie in einem englischen DEV Plugin ein Banner einbauen möchte den der User bestimmen kann. Wie gehe ich dann vor ? Also wie ist das mit den Event´s zu handhaben ? (Ufff hoffe das ist so erklärt das ihr es versteht und nicht denkt ich will Code geschenkt haben.
Das kommt ganz darauf an. Du kannst im Prinzip ein neues Modul im UCP (User Control Panel) anlegen, dann hast du ein neues Tab oder einen neuen Menüeintrag unter einem bestehenden Tab welchen du im Prinzip wie bei phpBB 3.0 auch schon erstellen kannst. Mehr oder weniger der größte Unterschied ist, dass die Dateien ucp_modulname.php und ucp_modulname_info.php dann in der Extension liegen und du die Datenbankänderungen in Migrations bereitstellst (siehe Konvertierung von Mods in Extensions).
Bei kleineren Dingen reicht dir aber vielleicht ja auch schon ein Custom Profile Field aus.
Bei https://www.phpbb.com/extensions/writing/#a-including nennt er einen Code (2 Beispiel nicht erstes) wie ist das gemeint ich komme in dem Bereich mit dem Übersetzen nicht so weiter
Da geht's um das Auslagern von mehrfach verwendetem Code in separate Dateien. Wenn du also eine umfangreichere Extension schreibst, die zentrale Komponenten in mehreren Dateien verwendet, dann solltest du die in eine separate Klasse auslagern. PHP unterstützt sog. namespaces, mit denen man z.B. Klassen mit identischem Namen von einander unterscheiden kann. In phpBB sollen alle Klassen in Extensions in entsprechenden Namespaces liegen, wobei der Namespace identisch ist mit dem Pfad zur Datei. Also wenn die Datei unter ext/acme/demo/spezialklasse.php liegt, dann sollte die darin befindliche Klasse, dann ist der Namespace dazu acme\demo und die Klasse muss spezialklasse heißen. Wäre die Klasse in dem Ordner ext/acme/demo/controller, dann hat sie den Namespace acme\demo\controller. Auf die Weise kann phpBB für alle Klassen die z.B. in der services.yml referenziert werden die jeweilige Datei automatisch finden.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
MrExilGame
Mitglied
Beiträge: 4
Registriert: 03.11.2014 12:05

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von MrExilGame »

Danke ich werde deine Informationen für mich versuchen umzusetzen und mich dann mal wieder melden wenn ich vielleicht irgendwo ein Stop habe. Aber auf jedenfall Herzlichen Dank.
Benutzeravatar
HabNurNeFrage
Ehemaliges Teammitglied
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: Nicht so ganz verstanden [EXTENSION]

Beitrag von HabNurNeFrage »

Hi,

gibt es eine Möglichkeit, per Extension vorhandenen Code aus dem Template zu löschen?

Sagen wir, ich will die Login-Box im Index unten löschen, weil ich sie an anderer Stelle haben möchte.
Ist das überhaupt ohne Code-Änderungen möglich und wenn ja, wie läuft das ab?

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };
Antworten

Zurück zu „Extension Bastelstube“