Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
build_forumbits_forum Hook
#1
Hey, 
ich bin gerade an einem Plugin erstellen. Soweit funktioniert auch alles. Mir kam jetzt die Idee, das ich gerne über einer bestimmten Kategorue bzw Forum ein Random Thema anzeigen lassen will. 

Um es einmal zu verdeutlichen:
Die Themen, welche in diesem Forum erstellt werden um Gesuche. Wenn diese erstellt werden, müssen die User noch zusätzliche Information angeben. Und diese werden dann mit den ganzen anderen normalen MyBB Infos in der Spalte Threads gespeichert. 
Eins dieser Gesuche soll dann mit seinen Infos zusätzlich random angezeigt werden. Wie es aussehen soll, habe ich einmal unten als Bild angehangen.

Ich weiß ich kann, das funktioniert auch, in inc/fuctions_forumlist.php unter
PHP-Code:
$bgcolor alt_trow(); 
einfügen
PHP-Code:
if($forum['fid'] == "16") {
        
$searchs =$db->query("SELECT * FROM ".TABLE_PREFIX."threads t
LEFT JOIN "
.TABLE_PREFIX."users u
ON (u.uid = t.uid)
WHERE fid = '17'
AND visible = 1
         ORDER BY RAND() LIMIT 1
        "
);   
    
        while (
$wanted $db->fetch_array ($searchs)) {
    
        
//Erstmal alles leeren
        
$tid "";
        
$prefix "";
        
$subject "";
        
$age "";
        
$home "";
        
$social "";
        
$work "";
        
$relation "";
        
$avatar "";
        
$relationship "";
        
$trigger "";
        
        
//Füllen wir mal alles mit Informationen
        
$tid $wanted['tid'];
        
$prefix $wanted['wanted_status'];
        
$subject $wanted['subject'];
        
$age $wanted['wanted_age'];
        
$home $wanted['wanted_home'];
        
$social $wanted['wanted_social'];
        
$work $wanted['wanted_work'];
        
$relation $wanted['wanted_relation'];
        
$avatar $wanted['wanted_avatar'];
        
$relationship $wanted['wanted_relationship'];
        
$trigger $wanted['wanted_trigger'];
        
    
$user format_name($wanted['username'], $wanted['usergroup'], $wanted['displaygroup']);
    
$username build_profile_link($user$wanted['uid']); 
    
     eval(
"\$wanted_index_bit .= \"".$templates->get("wanted_index_bit")."\";");
        }
    
    eval(
"\$wanted_index .= \"".$templates->get("wanted_index")."\";");
    
    } 

und dann die Variable {$wanted_index} dann in forumbit_depth2_cat packen.

Ich habe dann bei der Doku über Plugins einen Hook für genau diese php geshen und dachte ich kann dann einfach eine Funktion mit diesem Hook bauen und in mein Plugin werfen.

PHP-Code:
$plugins->add_hook("build_forumbits_forum""wanted_build_forumbits_forum");
function 
wanted_build_forumbits_forum($forum)
{
    global 
$db$mybb$templates;
    
    
// EINSTELLUNGEN ZIEHEN
    
$wanted_area $mybb->settings['wanted_area'];

    if(
$forum['fid'] == "16") {
        
// GESUCHE AUSLESEN    
        
$searchs =$db->query("SELECT * FROM ".TABLE_PREFIX."threads t
LEFT JOIN "
.TABLE_PREFIX."users u
ON (u.uid = t.uid)
WHERE fid = '17'
AND visible = 1
         ORDER BY RAND() LIMIT 1
        "
);   
    
        while (
$wanted $db->fetch_array ($searchs)) {
    
        
//Erstmal alles leeren
        
$tid "";
        
$prefix "";
        
$subject "";
        
$age "";
        
$home "";
        
$social "";
        
$work "";
        
$relation "";
        
$avatar "";
        
$relationship "";
        
$trigger "";
        
        
//Füllen wir mal alles mit Informationen
        
$tid $wanted['tid'];
        
$prefix $wanted['wanted_status'];
        
$subject $wanted['subject'];
        
$age $wanted['wanted_age'];
        
$home $wanted['wanted_home'];
        
$social $wanted['wanted_social'];
        
$work $wanted['wanted_work'];
        
$relation $wanted['wanted_relation'];
        
$avatar $wanted['wanted_avatar'];
        
$relationship $wanted['wanted_relationship'];
        
$trigger $wanted['wanted_trigger'];
        
    
$user format_name($wanted['username'], $wanted['usergroup'], $wanted['displaygroup']);
    
$username build_profile_link($user$wanted['uid']); 
    
     eval(
"\$wanted_index_bit .= \"".$templates->get("wanted_index_bit")."\";");
        }
    
    eval(
"\$wanted_index .= \"".$templates->get("wanted_index")."\";");
    
    }



Aber es wird mir nichts angezeigt. Also ich hab auch kein Problem, dass alles in manuell dann in die php einzubinden, aber ich dachte mal, ob mein Gedanke mit dem Hook doch funktioniert und ich einfach nur zu unerfahren mit MyBB

Liebe Grüße


Angehängte Dateien Thumbnail(s)
   
Zitieren
#2
Einerseits verstehe ich in Deinem abstraktem Satzbau und der Grammatik dieses Threads nur Bahnhof.
Andererseits glaube ich nicht, dass Du hier ein eigenes Plugin erstellst, sondern eher eins aus dem RPG-Bereich für Dich nutzbar machen möchtest. Ein paar Dinge aus dem Code kommen mir bekannt vor... Wink

Sorry, aber ich habe hier wirklich nicht verstanden, worum´s eigentlich geht. Rolleyes
Zitieren
#3
Ich entschuldige mich für meinen Satzbau und meine Grammatik, aber was nicht stimmt, dass ich einfach ein anderes (RPG-)Plugin genommen und es nun anpassen will. Das es sicherlich andere mit den selben Grundfunktionen will ich nicht abstreiten und ich kenne sogar zwei. Und sind auch einige RPGs sich ähnlich von ihren Profilfeldern/Angaben und genau auf diese habe ich mich, welche ich für mein Board benutze bzw. benötige, beschränkt. Aber ich habe es trotzdem selbst aufgesetzt.
Und ja ich gebe zu, dass die Anleitung zu der If-Abfrage für die inc/fuctions_forumlist.php aus dem SG von jemanden habe, der diese gepostet habe. Aber sonst habe ich es alleine geschrieben und kein fertiges verwendet habe.

Ich versuche es in einem besseren Satzbau zu erklären.
In meinem RPG-Board habe ich verschieden Kategorien und Unterforen erstellt. Unter anderem ein Kategorie find whatever is missing (fid 15) und mit dem Unterforum have you seen ...? (fid 16) und weitere Unterforen (fid 17, 18, 20, 21) innerhalb von Unterforum 16.
Ich habe die Datenbank threads um weitere Spalten erweitert (wie zB social und home). Wenn man nun ein neues Thema eröffnet in den Foren 17, 18, 20, 21 bekommt man neue Eingabefelder zusehen, welche man ausfüllen muss. Mit dem absenden werden diese Felder (wie social) gespeichert.
Diese Informationen werden im Thema oben angezeigt.

Ich würde gerne auf dem Index ein zufälliges Thema und seine Informationen aus den Foren 17, 18, 20, 21 anzeigen lassen. Also sprich jedes mal wenn ich die Seite neu lade, wird mir dort ein anderes angezeigt.
Diese Anzeige will ich aber nicht im Header oder im Footer haben, sondern über dem Unterforum 16 (wenn es ein Problem ist, geht auch über der Kategorie 15). Also dort soll ein Link zu dem Thema genieriet werden und eben die Zusatzinformationen angezeigt werden für das entsprechende Thema. 

Mit der Anleitung für die If-Abfrage für die inc/functions_forumlist.php funktioniert es auch. Doch würde ich es gerne so machen, dass ich nichts in der inc/functions_forumlist.php bearbeiten muss. Deswegen dachte ich, wenn ich den Hook benutze und so die Funktion schreibe, dass es genauso funktionieren würde. Das ich meine Variable für den Index genauso verwenden kann, als hätte ich die Änderung inc/functions_forumlist.php eingebunden. (zu Testzwecken habe ich nur die fid 17 angeben)

Meine Frage ist, ob dieser Gedanke richtig war und wenn ja, wie ich mein Vorgehen umsetzen kann? Und wenn meine Idee bzw der Hook nicht der richtig war, ob dies möglich ist oder ob ich auf die Änderung manuelle Bearbeitung von der inc/functions_forumlist.php zurückgreifen muss.
Zitieren
#4
Big Grin 
Ich wollte dir natürlich nichts unterstellen. Mir kam eben nur etwas Code bekannt vor. Wink 

Mach doch die Variable $wanted_index einfach global verfügbar. Dann kannst du sie hinbasteln, wo du willst.
Suche in der global.php nach:

PHP-Code:
eval('$header = "'.$templates->get('header').'";'); 

darüber fügst du ein:
PHP-Code:
eval('$wanted_index = "'.$templates->get('wanted_index').'";'); 
Sollte eigentlich so funktionieren und du bist nicht eingeschränkt. Wink
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  global_start Hook verhindert "schon gelesen Funktion" Guenni 2 1.347 31.08.2021, 18:15
Letzter Beitrag: itsmeJAY
  Hook für Schnellantwort itsmeJAY 3 1.907 26.07.2019, 07:23
Letzter Beitrag: StefanT
  Inlineeditor - mit Hook Zeit des Posts überprüfen cthulhu 3 2.995 08.10.2016, 17:22
Letzter Beitrag: cthulhu
  Welcher Hook um Abbonierte Themen zu erweitern? baeckerman83 4 2.942 11.09.2015, 11:34
Letzter Beitrag: baeckerman83
  Plugin - Template und Hook baeckerman83 6 3.030 28.08.2015, 20:55
Letzter Beitrag: baeckerman83