Seite 1 von 1

[3.1.10] Extension Hello World mit Datenbank Integration

Verfasst: 07.12.2016 16:44
von SqlMaster
Hallo,
ich bin dabei mein Forum auf 3.1.10 umzustellen und habe für die Version ein kleines MOD geschrieben welches eine Seite erstellt um Daten aus einer Tabelle anzuzeigen.

Nun wollte ich die den MOD in eine Extension umschreiben und habe mir die Thematik angesehen.
Der Alte code stand in einem php File im Basisverzeichnis

Code: Alles auswählen


 
 $sql = "SELECT a.username, a.user_email, DATE_FORMAT( DATE_ADD( '1970-01-01 01:00:00', INTERVAL user_regdate SECOND ) , '%d.%m.%Y' )  AS Registrierdatum, a.user_email, b.* 
     FROM phpbb_users a, phpbb_profile_fields_data b 
     WHERE a. user_id = b.user_id 
    order by a.user_regdate desc ";
 
 $result = $db->sql_query_limit($sql,50,0);
 
 while($row = $db->sql_fetchrow($result)) {  
  $template->assign_block_vars('block_name', array(
        'USERNAME'        => $row['username'],
        'USER_EMAIL'      => $row['user_email'],
        'REGDATE'      => $row['Registrierdatum'],
        'NAME'      => $row['pf_name'],
        'VORNAME'      => $row['pf_vorname'],
        'STRASSE'      => $row['pf_strasse'],
        'PLZ'      => $row['pf_postleitzahl'],
        'ORT'      => $row['pf_ort'],
        'TELE'      => $row['pf_telefon'],
    ));
 
Grundlage für meinen Test war das Hello World Beispiel.
laut meinem Verständnis dachte ich, das der Code in die main.php müsste. Aber wohin damit? und in welche methode?


Wer kann meinen Knoten lösen


Grüße
Jan

Re: [3.1.10] Extension Hello World mit Datenbank Integration

Verfasst: 07.12.2016 20:18
von waldkatze
Das Schreiben von Extensionen ist leider viel aufwendiger als unter phpBB 3.0.x
Der große Vorteil ist, die Installation ist für den Anwender viel leichter geworden.

Am besten nimmst du dazu eine vorhandene Extension um die Zusammenhänge zu verstehen.
Lade dir als Beispiel mal eine relativ einfache Extension mit Datenbankzugriff: Download
Schau dir bitte ausgiebig den Quellcode an. Dann versteht man die Zusammenhänge.

Bitte auch sehr aufmerksam lesen: https://www.phpbb.com/extensions/writing/

Erläuterung:
composer.json hier gibst den Pfad zur Extension an

config legt die Pfade in deiner Extension fest

controller hier fügst du deine Programmdaten ein

event hier fügst Daten in das System von phpBB ein

language hier liegen die Sprachdateien

migrations entspricht der install.php mit phpBB 3.0.x

styles hier fügst du alles zu Templates ein

Re: [3.1.10] Extension Hello World mit Datenbank Integration

Verfasst: 07.12.2016 22:47
von canonknipser

Re: [3.1.10] Extension Hello World mit Datenbank Integration

Verfasst: 07.12.2016 22:49
von gn#36
Oder eine Schritt-für-Schritt Anleitung in unserer KB: KB:ext_erstellen

Da ist auch ein Teil dabei, der eine eigene Seite in phpBB einbindet. Die DB Klasse wird in der Anleitung nicht benutzt. Du kannst sie aber einbinden, hierfür ist in der Konfiguration '@dbal.conn' zu verwenden, im Konstruktor kommt dann ein Objekt des Typs \phpbb\db\driver\driver_interface an (versteht man erst nach lesen des Artikels).

Re: [3.1.10] Extension Hello World mit Datenbank Integration

Verfasst: 08.12.2016 16:18
von SqlMaster
Vielen Dank für die Beispiele.

Ich habe das hinbekommen.
Nun kommt die Kür.

In meiner alten Mod hatte ich einen Link, mit welchem ich direkt zur Administration eines Users gesprungen bin

Code: Alles auswählen

  <td><a href="{U_EDIT_SELF}">{block_name.USERNAME}</a>    </td>   
Das funktioniert jetzt nicht mehr.
Kann mir da jemand einen Tipp geben, wie ich das anstellen muss.
Grüße
Jan

Re: [3.1.10] Extension Hello World mit Datenbank Integration

Verfasst: 08.12.2016 18:58
von waldkatze
Ich habe das jetzt nicht getestet. Aber die folgende Zeile in der memberlist.php könnte dir weiterhelfen:

Code: Alles auswählen

'U_CANONICAL'	=> generate_board_url() . '/' . append_sid("memberlist.$phpEx", 'mode=viewprofile&u=' . $user_id, true, ''),