Ist das für mich als Anfänger machbar?

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
[o0]
Mitglied
Beiträge: 65
Registriert: 13.04.2009 19:33
Kontaktdaten:

Ist das für mich als Anfänger machbar?

Beitrag von [o0] »

Hallo,

ich spiele mit dem Gedanken eine eigene Mod zu schreiben. Konkret geht es darum, zeigen zu können welche und wieviele Filme der IMDB Top 250 ein User schon gesehen hat.. dies soll (aus Platzgründen in einer Art Spoiler) im Profil des Users als Liste aufgeführt sein (was er schon gesehen hat durchgestrichen). Zum Einstellen stelle ich mir eine eigene Seite im UCP vor, auf der der User eine Liste aller in den Top 250 aufgeführten Filmen sieht und ankreuzen kann was er (neu) gesehen hat.
Damit die Liste sich selbstständig aktualisiert, sollte das Update-Script automatisch ausgeführt werden (ähnlich wie beim User Reminder Script, dort wird afaik durch den ersten Besucher eines Tages das Script ausgeführt).

Nicht so wichtig aber vielleicht ganz nett wäre noch folgende Funktion: In einem Thread soll irgendwo zwischen "Beiträge:" und "Registriert:" stehen wieviele Filme er schon gesehen hat, also zB "IMDB: 76/250".

Das Script selber habe ich schon mehr oder weniger fertig, ich weiß nur noch nicht wie ich das in phpbb integrieren soll.. die Vorlage für eine eigene Seite hab ich mir schon angeschaut, ich denke das Script erstmal auf einer eigenen Seite einzubauen dürfte weniger Probleme machen und kann wenn es läuft immer noch in die memberlist.php portiert werden. (Wer sich die Funktion des Scripts nicht vorstellen kann, so sieht das ganze in einer schmucklosen Test-HTML Datei aus (im Profil eben ohne die Checkboxen, soll ja kein anderer ändern können) =P)

Konkret fallen mir also spontan folgende Probleme ein:

- Wie die ID des Users dem das Profil gehört herausfinden? (Damit in der Datenbank die gesehenen Filme des richtigen Users als gesehen markiert bzw ausgelesen werden können - im UCP ähnliches Problem)
- Wie das Script integrieren? (Tabellenstruktur etc)
- Kann ich einfach die Sprachdatei sowie die Templatedatei weglassen wenn ich den kompletten Text sowie die Struktur hart code oder gibt das irgendwelche Probleme? (Ich will doch nur eine kleine Mod basteln, diese Aufspaltung in drei Dateien wirkt für einen Anfänger fast schon erschlagend :o )
- Wie kriege ich das in das UCP?

Seht das erstmal als rhetorische Fragen an, ich erwarte (noch) keine Antworten.. mich interessiert erstmal primär ob das für mich als absoluten Anfänger was das Schreiben von phpbb Mods angeht überhaupt machbar ist oder ob ich sowieso nach ein paar Stunden völlig überfordert aufgeben werde. HTML, CSS, PHP und mySQL Kenntnisse sind vorhanden, an den Grundkenntnissen sollte es also nicht scheitern :wink:

Vielen Dank schonmal für eure Antworten ;]
http://www.parallelplanet.de/ - klein, aber fein..
(Immer auf der Suche nach Mitgliedern =P)
Boecki91
Ehemaliges Teammitglied
Beiträge: 4744
Registriert: 18.06.2006 15:21

Re: Ist das für mich als Anfänger machbar?

Beitrag von Boecki91 »

Man kann alles, und das was du vorhast ist denke ich schon machbar.

zu den Fragen:
  1. Guck dir mal ein Profil-URL in phpBB3 an und gucke dann was man request_var() alles machen kann ;) oder wenn du im UCP bist frag die Userid-des Users ab.
  2. Da das Pro User ist würde ich eine Spalte in der Usertabelle hinzufügen
  3. Durch unsere Mod-DB-Kontrollen kommst du dann nicht durch,aber solange du einen Style hast und nur eine Sprache geht das, das mit den Sprachdateien ist aber einfach wenn man es einmal verstanden hat
  4. http://wiki.phpbb.com/Creating_modules
Und Jetzt Lesestoff: :D

http://wiki.phpbb.com/Main_Page
http://www.phpbb.com/mods/ -> Writing Mods

Wer Mods schreiben will muss etwas Englisch können
Standart: Am besten mit beiden Beinen auf dem Boden
Standardmäßig antworte ich nicht auf PMs
Benutzeravatar
[o0]
Mitglied
Beiträge: 65
Registriert: 13.04.2009 19:33
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von [o0] »

Danke für die Links.. das wird echt alles viel komplizierter als gedacht x_X

Nach fast 2 Stunden hab ich erst sowas.. die User ID kann ich holen und soweit ich das beurteilen kann auch benutzen. Ich hab nur noch keine Ahnung wie ich die Daten in die Tabelle kriege und weswegen dieser phpBB Debugger rumheult :lol:
http://www.parallelplanet.de/ - klein, aber fein..
(Immer auf der Suche nach Mitgliedern =P)
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von tas2580 »

Der Debugger heult weil du Daten ausgibst bevor du den Header ausgibst. Das Problem hast du wenn du keine Template Datei benutzt. Um irgendwas vernünftig im Foren Design auszugeben sollte man das Template System unbedingt nutzen.
So schwer ist das nicht, wenn du PHP kannst solltest du eigentlich schnell verstehen wie das Funktioniert, schau dir einfach die Links von Boecki91 an.

Code: Alles auswählen

$template->assign_vars(array(
    'VAR1'        => $var1,
    'VAR2'        => $var2
 )); 
Das würde die PHP Variablen $var1 und $var2 als {VAR1} und {VAR2} ans Template schicken, in UCP Modulen gibst du die Template Datei mit $this->tpl_name = 'dateiname'; an.

An die Daten des aktuell angemeldeten Users kommst du über $user->data['SPALTENNAME'], also $user->data['user_id'] ist die ID des Users der die Seite aufruft. Du kannst hier jede Spalte die es in der User Tabelle (phpbb_users) gibt verwenden.

Ich würde das so aufbauen:
1. Tabelle mit allen Filmen (film_id, filmname)
2. Tabelle für welcher User hat welchen Film gesehen (user_id, film_id)
3. Ein ACP oder MCP Modul um Filme hinzuzufügen oder löschen.
4. Ein UCP Modul über das die User angeben können welche Filme sie schon gesehen haben.
5. Eine Seite im Profil oder sonst wo um die Daten auszugeben.

Dabei solltest du dich immer an die Standards im von Boecki91 verlinkten Wiki halten. Wenn du den Mod später nicht veröffentlichen willst kannst du auf Sprachdateien verzichten, aber bei Template und Datenbank ist es einfach deutlich leichter wenn man die phpBB Klassen verwendet.

Gruß Tobi
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Benutzeravatar
[o0]
Mitglied
Beiträge: 65
Registriert: 13.04.2009 19:33
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von [o0] »

Den Aufbau habe ich auch genauso geplant, nur das man die Filme nicht per Hand hinzufügen muss sondern das dies automatisch geschieht.

Danke für die Tips, jetzt sieht es schonmal so aus, find ich schonmal nicht schlecht dafür das ich ein totaler Anfänger auf diesem Gebiet bin :-?

Ein paar Sachen kriege ich aber trotz den Links nicht hin, entweder das steht da nirgends, ich bin blind oder weiß einfach nicht nach was ich suchen muss.
Wie ihr seht ist der "Aktualisieren" Button über dem Formular, wie kann das sein?
So sieht jetzt meine Hauptdatei bzw. meine Template- bzw. meine Language-Datei aus. Eigentlich müsste der Button ja ganz unten im Formular sein wo er hingehört o_0

Problem 2: Wie ihr seht sind im Moment alle Titel durchgestrichen (eigentlich sollte die ganze Zeile durchgestrichen sein aber das geht wohl nicht =/), wie kann ich nur das durchstreichen lassen, das gesehen wurde? Das sollte ja mit diesem "<!-- IF x -->y<!-- ELSE -->z<!-- ENDIF -->" gehen, nur wie man das macht hab ich noch nicht rausgefunden.
http://www.parallelplanet.de/ - klein, aber fein..
(Immer auf der Suche nach Mitgliedern =P)
Benutzeravatar
igorw
Mitglied
Beiträge: 107
Registriert: 02.08.2008 13:04
Wohnort: Winterthur

Re: Ist das für mich als Anfänger machbar?

Beitrag von igorw »

[o0] hat geschrieben:Wie ihr seht ist der "Aktualisieren" Button über dem Formular, wie kann das sein?
Das liegt daran, dass die form sich zwar innerhalb der Tabelle befindet, jedoch weder in einem <tr>, noch einem <td>. Es empfiehlt sich, den form um die gesamte tabelle zu legen.
[o0] hat geschrieben:Problem 2: Wie ihr seht sind im Moment alle Titel durchgestrichen (eigentlich sollte die ganze Zeile durchgestrichen sein aber das geht wohl nicht =/), wie kann ich nur das durchstreichen lassen, das gesehen wurde? Das sollte ja mit diesem "<!-- IF x -->y<!-- ELSE -->z<!-- ENDIF -->" gehen, nur wie man das macht hab ich noch nicht rausgefunden.
Das ist nicht mal so kompliziert. Bei $template->assign_block_vars( musst du angeben, ob der film deleted ist. Dann kannst du das im template überprüfen, etwa so:

Code: Alles auswählen

<span <!-- IF block_name.IS_DELETED -->style="text-decoration: line-through"<!-- ENDIF -->>
Mir ist aufgefallen, dass du die standard-mysql funktionen verwendest. phpBB besitzt eine so-genannte "DBAL", die "database abstraction layer". Diese sollte stattdessen verwendet werden. In englisch gibts einige dokumentation dazu:

http://wiki.phpbb.com/Dbal
http://wiki.phpbb.com/Using_the_phpBB3.0_DBAL
Benutzeravatar
[o0]
Mitglied
Beiträge: 65
Registriert: 13.04.2009 19:33
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von [o0] »

Oh, okay. Hab den Button jetzt in <tr> sowie <td> Tags gepackt und klappt auch soweit. Die DBAL verwende ich noch nicht, da ich noch auf eine extra Datenbank dafür zurückgreife (sicher ist sicher), aber die nachher wenn alles läuft wegzulassen und stattdessen in die phpbb DB zwei Tabellen anzulegen dürfte ja das kleinste Problem sein.

Zu dem <!-- IF x -->: Und was muss ich da bei $template->assign_block_vars angeben? Ich übergeb die Daten für die Tabelle ja erst relativ weit unten mit einer foreach Schleife, ich müsste also auch vorher schon beim Auslesen der Daten das ganze abspeichern.

Vielen Dank für deine Hilfe :]
http://www.parallelplanet.de/ - klein, aber fein..
(Immer auf der Suche nach Mitgliedern =P)
Benutzeravatar
[o0]
Mitglied
Beiträge: 65
Registriert: 13.04.2009 19:33
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von [o0] »

So, bin wieder ein Stück weiter und um ein paar Probleme reicher =P

Mittlerweile kann man die eigenen Liste ansehen und nach belieben verändern, allerdings habe ich jetzt das (aktuellste) Problem, das das ich einfach keinen Button zum Aufrufen der Seite eines anderen Users hinkriege. (Also so ein Button in dieser Leiste mit den PN, Homepage, ICQ usw Symbolen).

Bislang habe ich folgendes eingefügt/gemacht:
viewtopic_body.php hat geschrieben:

Code: Alles auswählen

<ul class="profile-icons">
          //hier stehen die anderen Icons
          <!-- IF postrow.U_IMDB --><li class="imdb-icon"><a href="{postrow.U_IMDB}" title="{L_IMDB}"><span>{L_IMDB}</span></a></li><!-- ENDIF -->
</ul>
colours.css hat geschrieben:

Code: Alles auswählen

.imdb-icon, .imdb-icon a			{ background-image: url("{IMG_ICON_CONTACT_IMDB_SRC}"); }
buttons.css hat geschrieben:

Code: Alles auswählen

.imdb-icon, .imdb-icon a			{ background: none top left no-repeat; }
ul.profile-icons li.imdb-icon	{ width: {IMG_ICON_CONTACT_IMDB_WIDTH}px; height: {IMG_ICON_CONTACT_IMDB_HEIGHT}px; }
Der Button ist fertig gebastelt und liegt unter dem Namen "icon_contact_imdb.gif" im imageset Ordner des Styles, da das aber alles so gar nicht klappt, befürchte ich das ich in mindestens einer Datei noch was einfügen muss :-?

Wenn das mit dem Icon dann klappt, wäre der nächste Schritt dann auch die korrekte Liste des jeweiligen Users anzuzeigen - das kann mein Script noch nicht, aber da hab ich schon eine Idee..
Wenn ihr zusätzlichen Quelltext braucht, einfach sagen =/

mfg
http://www.parallelplanet.de/ - klein, aber fein..
(Immer auf der Suche nach Mitgliedern =P)
Benutzeravatar
[o0]
Mitglied
Beiträge: 65
Registriert: 13.04.2009 19:33
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von [o0] »

Kann mir denn da keiner helfen? Ich kriegs alleine nicht hin und nen Tutorial oder sowas finde ich auch nicht.. wenn da jemand was wüsste würde mir das ja schon reichen^^
http://www.parallelplanet.de/ - klein, aber fein..
(Immer auf der Suche nach Mitgliedern =P)
HJW
Mitglied
Beiträge: 1291
Registriert: 20.04.2007 20:48
Wohnort: 45481 Mülheim an der Ruhr
Kontaktdaten:

Re: Ist das für mich als Anfänger machbar?

Beitrag von HJW »

Hallo,

erstmal gibt es ja keine viewtopic_body.php sondern eine viewtopic_body.html. Dann ist vor dem <ul class="profile-icons"> ja noch eine Abfrage. Werden denn die anderen Icons angezeigt. Was passiert, wenn du <!-- IF postrow.U_IMDB --><!-- ENDIF --> wegnimmst. Wenn dann dein Icon nicht angezeigt wird, wird U_IMDB in der viewtopic.php wohl nicht richtig definiert sein.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“