MyBB.de Forum

Normale Version: Plugin entwickeln - Erste Schritte, ein paar Fragen.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Guten Abend!

Vorab muss ich sagen, dass ich bisher mit PHP sehr wenig am Hut hatte, und nur Java & ein bisschen Python kann. Jedoch bräuchte ich ein Plugin für mein Forum, und was gibt es für eine bessere Möglichkeit sich mit dem Forum, PHP, und so weiter, zu beschäftigen? Meiner Meinung nach keine. (Also, doch, natürlich gibt es bessere Möglichkeiten - Nur gefiel mir jene am meisten.)

Aber nun habe ich, zu eurem Leidwesen (Ich werde euch Löcher in den Bauch fragen Big Grin!), ein paar Anfänger-Fragen:

- Wie kann ich, jedesmal wenn ein User (Gast oder User, beides muss zählen!(Dazu auch noch ob er gebannt ist)) einen Thread anschaut, eine Funktion aufrufen?
- Wie bekomme ich von dieser Funktion aus dann die ID des Threads?
- Wie kann ich sehen ob der Benutzer ein registrierter oder unregistrierter User ist, und je nachdem seine ID bekommen?
- Wie kann ich einen Beitrag parsen? Also quasi wie einen MyCode, nur dass es eben keiner ist.
- Öhm ja, die paar anderen habe ich vergessen.

Was ich machen will:

Das Plugin soll auf die Datenbank des Forums zugreifen, und dort eine Table erstellen.
Wenn ein User jetzt auf einen Button - Der MyCode - klickt, der je nachdem ob der User angemeldet ist, und ob er bereits auf den Button geklickt hat, in die Datenbank, unter der Thread-ID, die ID des Users in eine ArrayList einfügen. Zusätzlich soll es dann noch einen "MyCode" geben, welcher je nach Thread die jeweilige Liste aller User anzeigt.

Ein grobes Gerüst habe ich mir in meinem Hirn, falls ich eins habe, schon gemacht; Allerdings habe ich wie gesagt keine Ahnung in PHP, und noch weniger von der MyBB API.


Hoffe, es klingt nicht allzu dumm, und ihr könnt mir etwas helfen Smile!

LG
(11.02.2013, 20:12)Javatic schrieb: [ -> ]- Wie kann ich, jedesmal wenn ein User (Gast oder User, beides muss zählen!(Dazu auch noch ob er gebannt ist)) einen Thread anschaut, eine Funktion aufrufen?
- Wie bekomme ich von dieser Funktion aus dann die ID des Threads?
- Wie kann ich sehen ob der Benutzer ein registrierter oder unregistrierter User ist, und je nachdem seine ID bekommen?
All diese Infos erhältst Du eigentlich über die Seite bzw. Datei online.php. Mit Hilfe dieser Datei solltest Du all die notwendigen Codeschnipsel finden können.

(11.02.2013, 20:12)Javatic schrieb: [ -> ]- Wie kann ich einen Beitrag parsen? Also quasi wie einen MyCode, nur dass es eben keiner ist.
Da sollte Dir eigentlich diese Datei weiter helfen können.

(11.02.2013, 20:12)Javatic schrieb: [ -> ]- Öhm ja, die paar anderen habe ich vergessen.
Kein Problem. Big Grin

Ich finde es toll, mal wieder jemanden zu lesen, der sich mit der Erstellung von Plugins beschäftigen will. Ein Weg dort rein zu finden sind die Plugins selbst, die ganz gut zeigen, was die Autoren wie umgesetzt haben. Ein anderer Weg sind aber auch die MyBB Dateien selbst, die zeigen wie MyBB bestimmte Dinge umsetzt (wie z.B. in der online.php).
(11.02.2013, 20:12)Javatic schrieb: [ -> ]- Wie kann ich, jedesmal wenn ein User (Gast oder User, beides muss zählen!(Dazu auch noch ob er gebannt ist)) einen Thread anschaut, eine Funktion aufrufen?

Du suchst Hooks, in dem Fall z.B. den showthread_start hook. Am besten du schaust dir in so einem Hook dann mal die globalen Variablen an ($GLOBALS). Einfach viele Debugmeldungen einbauen dann merkst du schon wie der Hase läuft...
(Sorry für meine späte Antwort; Hatte noch zu tun..)

Vielen Dank für die Antworten!

Werde ich sofort mal ausprobieren, und einfach nur wild rumversuchen, ich melde mich dann Wink

Edit: Schritt 1 ( Lasse bestimmte Sachen durch Plugin parsen): Accomplished Big Grin!
So; Gleich die nächsten Fragen: Kann ich, während der Methode die vom Parser-Hook aufgerufen wird, herausfinden für wen es geparst wird? Geht das auch mit Online.php? Wenn ja, wie?

Also hier (Pseudocode) :
Code:
$plugins->add_hook("parse_message", "methode");

function methode($message){
    $parsefor = (kriegeusername() == null)?"gast":kriegeusername();

     if($parsefor = gast"){return $message}else{/*noch ein paar if abfragen, replace zeugs mit regex und so weiter*/}
    return $message;
    
}

Achja, und zudem müsste ich irgendwie herausfinden, ob es im Startpost ist, und welche ID der Thread hat...
Du kannst dir praktisch immer $mybb->user anschauen, Gäste und Suchmaschinen haben da 0 als $mybb->user['uid']. Wie gesagt einfach mal $GLOBALS ausgeben lassen dann siehst du schon was es gibt...

Das sollte dann in den meisten Fällen klappen. Da sich jeder einen Parser klonen und aus welchen Gründen auch immer parsen kann, ist es halt nicht so wirklich eindeutig. Aber das sind so Dinge bei denen man bei MyBB einfach so ... hinwegsieht. Wink
Vielen Dank! Fragt sich jetzt nur noch wo ich $mybb finde xD.. Sorry, bin auf dem Gebiet kompletter Neuling Sad

Globals ausgeben geht leider nicht; Wenn ich print_r($GLOBALS) mache, zeigt er mir erst das ganze dokument für ~2sek an, dann stellt er den ganzen inhalt mittig mit grauem hintergrund, und dann ändert sich plötzlich URL und bringt mich auf einen 404-Fehler..
Probiers mal mit
PHP-Code:
echo '<pre>'.htmlspecialchars(print_r($GLOBALStrue)).'</pre>'
oder sowas in der Art. Siehe auch die Dokumentation auf php.net zu print_r, in den Kommentaren stehen oft auch Anwendungsbeispiele drin...

$mybb ist in MyBB immer definiert, musst halt in einer Funktion mit global $mybb; angeben daß du es nutzen willst...
Die Klasse MyBB wird in der Datei /inc/class_core.php definiert und in der global.php wird der Konstruktor aufgerufen.
Vielen Dank, es funktioniert! Die Anzahl der Fragen nimmt ab, ich glaube allzu viel mehr Wissen brauche ich nicht, um mein Projekt durchzuführen Big Grin

Nur noch eine Sache, welche wohl am wichtigstem ist: Wie gehe ich mit dem $db Objekt um? Wie kann ich gucken ob eine Datenbank für das Plugin bereits erstellt ist, wie erstelle ich eine, wie speicher & lese ich davon aus? Ich habe für MyBB speziell leider kein Tutorial gefunden... Und wie stecke ich einen Array in eine Datenbank?

Zudem:
Wie kann ich bei einem onclick von einem a-tag eine PHP-Funktion aufrufen lassen? Ich will beim klicken auf ein Bild etwas in die DB speichern..
Seiten: 1 2 3