[SUCHE] Username -> Profil im Beitrag

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Eclipse16V
Mitglied
Beiträge: 576
Registriert: 27.11.2002 17:04
Wohnort: Gießen
Kontaktdaten:

[SUCHE] Username -> Profil im Beitrag

Beitrag von Eclipse16V »

Gibt es schon einen Mod der folgendes kann:

Wenn jemand einen Beitrag schreibt und in diesem Beitrag einen Usernamen von einem anderen User nennt soll es so sein das im Beitrag dieser Username automatisch mit einem Link zum UserProfil versehen wird.
Ich hoffe Ihr versteht was ich meine.

Kleines Beispiel
Vorher (jetzt):
Das ist ein Test von Eclipse16V und mal sehen ob es geht.
Nacher (mod):
Das ist ein Test von Eclipse16V und mal sehen ob es geht.
Würde mich freuen wenn es so einen Link gibt bzw. wenn ihn jemand für mich schreiben könnte. Mache auch den Tester.
www.Eclipse16V.de
Erste Eclipse16V IG Deutschlands
shape
Mitglied
Beiträge: 108
Registriert: 11.01.2004 13:09

Beitrag von shape »

Ja, das ist ne geniale Idee, daran hätte ich auch Interesse.
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Es ist natürlich blöd, wenn sich einer z.B. "ich" genannt hat. Dann ist der Text voller Profil-Links! :wink: Ich weiß nicht ob es so ein Mod gibt, sehr kompliziert ist sowas aber nicht. Ich hatte mal sowas für Kürzel wie IMHO gemacht, wo dann per mouseover im tool tip der Klartext angezeigt wurde.
Tuxman
Mitglied
Beiträge: 2284
Registriert: 24.05.2003 13:32
Kontaktdaten:

Beitrag von Tuxman »

Vielleicht als BBcode...? [User]ich[/User]...?
Werd mal schauen, vielleicht fällt mir ja was ein, falls nicht jemand schneller ist... 8)
tux. Ehemaliger Moderator ohne Sondertitel.
tuxproject.de
Benutzeravatar
Eclipse16V
Mitglied
Beiträge: 576
Registriert: 27.11.2002 17:04
Wohnort: Gießen
Kontaktdaten:

Beitrag von Eclipse16V »

Besten Dank schon mal an euch das Ihr euch drum kümmern wollt.
www.Eclipse16V.de
Erste Eclipse16V IG Deutschlands
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Also, ich habe mal eben einen Code eingebaut. in der functions_post.php muss man in der Funktion prepare_post die Variable $db mit bei global... aufnehmen. Dann am Ende der Funktion vor dem return folgenden Code einfügen:

Code: Alles auswählen

if (!empty($message)) {
  $words = split("[/.-\,\!? ]",$message);
  foreach($words as $word) {
    $sql = "SELECT user_id FROM ".USERS_TABLE." WHERE username = '".$word."' LIMIT 1";
    if ( !($result = $db->sql_query($sql)) )
      message_die(GENERAL_ERROR, 'Cannot read userdata','',__LINE__,__FILE__,$sql);
    if( $row = $db->sql_fetchrow($result) ) {
      $message = ereg_replace($word,"<a href=\"profile.".$phpEx."?mode=viewprofile&u=".$row["user_id"]."\">".$word."</a>",$message);
    }
  }
}
Getestet habe ich es, es funktioniert. Allerings kann man das nicht so lassen, da beim editieren des Postings dann der HTML-Code drinsteht. Man muss da also noch etwas mehr Hand anlegen, dass soll erst einmal eine Anregung von mir sein. Allerdings ist das auch sehr Datenbank-intensiv, jedes Wort im Posting wird in der User-Tabelle gesucht. Irgendwelche Verzögrungen konnte ich allerdings nicht feststellen.

Nachtrag: Man könnte den Usernamen auch beim Anzeigen eines Posting auswerten, dann hätte man das HTML-Problem nicht, aber eine gehörige Datenbanklast. Ist also nicht sinnvoll. Aber man könnte das wie BBCode behandeln, nur eben, dass dieser BBCode dann beim Editieren nicht mit angezeigt wird.
Benutzeravatar
Eclipse16V
Mitglied
Beiträge: 576
Registriert: 27.11.2002 17:04
Wohnort: Gießen
Kontaktdaten:

Beitrag von Eclipse16V »

Gibt es schon was neues?
www.Eclipse16V.de
Erste Eclipse16V IG Deutschlands
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Von meiner Seite aus nicht, momentan fehlt mir etwas die Zeit. Vielleicht kann das ja ein anderer mit BBCode kombinieren. Ansonsten mache ich das auch, nur ich kann leider nicht sagen wann.
Tuxman
Mitglied
Beiträge: 2284
Registriert: 24.05.2003 13:32
Kontaktdaten:

Beitrag von Tuxman »

Ich war schon am Basteln, aber leider hab ich im Moment keinen PC... bin mal auf deine Lösung gespannt, makue. :)
tux. Ehemaliger Moderator ohne Sondertitel.
tuxproject.de
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Na, ok, dann mal kurz und schmerzlos. Das mit dem BBCode habe ich mir gespart. 2 Dateien müssen modifiziert werden:

includes/functions_post.php

suchen:

Code: Alles auswählen

  return;
}

//
// Post a new topic/reply/poll or edit existing post/poll
//
davor(!) einfügen:

Code: Alles auswählen

  // add by makue 10.06.04 (Profillink für Usernamen im Posting)
  if (!empty($message)) {
    $words = split("[/.-\,\!? ]",$message);
    foreach($words as $word) {
      $word = trim($word);
      if (strlen($word)>2) {
        $sql = "SELECT user_id FROM ".USERS_TABLE." WHERE username = '".$word."' LIMIT 1";
        if ( !($result = $db->sql_query($sql)) )
          message_die(GENERAL_ERROR, 'Cannot read userdata','',__LINE__,__FILE__,$sql);
        if( $row = $db->sql_fetchrow($result) ) {
          $message = ereg_replace($word,"<a class=\"gen\" href=\"profile.".$phpEx."?mode=viewprofile&u=".$row["user_id"]."\" target=\"_blank\">".$word."</a >",$message);
        }
      }
    }
  }
  // end of add 
gemeint ist das Ende der Funktion prepare_post. Also vor dem return am Ende der Funktion einfügen.

posting.php

suchen:

Code: Alles auswählen

  $message = str_replace('<', '<', $message);
  $message = str_replace('>', '>', $message);
  $message = str_replace('<br />', "\n", $message);
danach einfügen:

Code: Alles auswählen

  // add by makue 10.06.04 (Profillink für Usernamen im Posting)
  $message = preg_replace("/<a class=\"gen\" href=\"profile\.php\?mode=viewprofile&u=.+\" target=\"_blank\">/","", $message);
  $message = str_replace("</a >","", $message);
  // end of add
Getestet habe ich es, läuft perfekt, ich lasse das jetzt auch drin. Ich muss aber auch erwähnen, dass es bei längeren Postings beim Absenden zu einer Verzögerung kommt. Bei mir dauert es bei einem Posting mit 1000 Wörtern etwa 10 Sekunden. Ich werde das nun doch wieder rauswerfen...

Dann lieber doch ein BBCode den man per Hand einfügen muss.

Sorry, noch ein Nachtrag: Das mit der Verzögerung lag an was anderem. Also eigentlich spürt man es doch nicht. :) Am besten ihr testet es selbst.
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“