Random Quotes

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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.
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Random Quotes

Beitrag von musashi »

Hi,

wie kann man denn den "Schon gewusst" Mod so umbauen, dass das so eine Art Random Quote wird?
Sprich anstatt einen Text in die schon_gewusst.txt manuell einzufügen, sollte der Mod sich stündlich ein zufälliges Posting, welches eingegeben wurde aussuchen und zitieren.

Ein Beispiel bietet das turtleboard: http://boards.turtled.com/bestof_rq.htm ... 2003-12-08
Zuletzt geändert von musashi am 01.07.2004 11:21, insgesamt 1-mal geändert.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

http://phpbbhacks.com/viewhack.php?id=431
..könntest auch das dafür benutzen.
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Beitrag von musashi »

Ja, aber imho holt sich dieses Script kein Posting, sondern Quotet zB irgendwelche Zitate, die man mal festgelegt hat (oder?)
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

aso.. hatte das mit "Posting" überlesen. Dann versuch´s ma mit folgendem..

Code: Alles auswählen

$sql = "SELECT p.*, pt.* FROM ". POSTS_TABLE ." p, ". POSTS_TEXT_TABLE ." pt
           WHERE p.post_id = pt.post_id ORDER BY rand() LIMIT 1";
if( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Error getting random post.', '', __LINE__, __FILE__, $sql);
}
if( $row = $db->sql_fetchrow($result) )
{
	include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);

	$bbcode_uid = $row['bbcode_uid'];
	$message = $row['post_text'];

	if( !$board_config['allow_html'] && $userdata['user_level'] != ADMIN )
	{
		if( $row['enable_html'] )
		{
			$message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message);
		}
	}

	if( $board_config['allow_bbcode'] )
	{
		if( $bbcode_uid != '' )
		{
			$message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
		}
	}

	$message = make_clickable($message);

	if( $board_config['allow_smilies'] )
	{
		if( $row['enable_smilies'] )
		{
			$message = smilies_pass($message);
		}
	}

	$orig_word = array();
	$replacement_word = array();
	obtain_word_list($orig_word, $replacement_word);
	if( count($orig_word) )
	{
		$message = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $message . '<'), 1, -1));
	}

	$message = str_replace("\n", "\n<br />\n", $message);

	$template->assign_vars(array(
                'MESSAGE' => $message,
	));
}
..kann z.B. in der index.php vor $template->pparse('body');
eingefügt werden. Es kann dann mit {MESSAGE} in der index_body.tpl aufgerufen werden.
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Beitrag von musashi »

Zwar schon a bissl her, dennoch DANKE :)
Das Prinzip funzt wunderbar, nur ein paar Kleinigkeiten hätte ich noch:

Die Quote sollte keine Zeilenumbrüche machen
Die Quote sollte zB maximal nach 90 Zeichen abgebrochen werden und dann nen Link zu dem entsprechenden Posting haben
Eine Quote/ Stunde aus den letzten 50 Postings reicht.
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

$message = str_replace("\n", "\n<br />\n", $message);
$message = ( strlen($message) < $length ) ? $message : substr(stripslashes($message), 0, $length) . ' ... (<a href="'. append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $row['post_id']) . '#' . $row['post_id'].'">kompletter Beitrag</a>)';
..füge die blaue Zeile unterhalb der grünen Zeile ein, wenn der Beitrag nach xx Zeichen abgetrennt werden soll und ein Link auf den kompletten Beitrag hinweisen soll.
include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
..unterhalb dieser Zeile fügst du dann noch $length = '20'; (Wert für Beitragslänge) ein.
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Beitrag von musashi »

Klappt alles bis auf den Zeilenumbruch nach den XXX Zeichen.
Außerdem wäre es echt cool, wenn es mit Einer RQ/Stunde und nem Archiv mit Datum klappen würde und BBCode nicht dargestellt wird, sondern alles immer als normaler Text. Sonst sieht das zum Teil albern aus.

Bei sehr kurzen Beiträgen zB nur ein Wort, macht er die Verlinkung zum Beitrag selber nicht hin. *edit* Das liegt wohl nicht an der Länge des Beitrags, sondern daran, dass in allen Beiträgen, wo das auftaucht, Sonderzeichen wie

Code: Alles auswählen

... / [ ] ( )
am Ende der XXX Zeichen sind.

Ist es möglich den poster noch mit anzeigen zu lassen? Also zB so:
Musashi: Klappt alles bis auf den Zeilenumbruch nach den XXX Zeichen.... [Beitrag anzeigen]
Zum anschauen & testen kannst Du unter -> http://www.legoquake.de/forum User: test PW: test benutzen. (Ist zwar nicht das Forum wo's letztendlich rein soll, aber zum testen reichts.

Ein weiteres Problemchen ist, dass auch Posts aus privaten Foren in der RQ angezeigt werden.
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Beitrag von musashi »

*vorsichtig nach oben schubs und wegrenn* :)
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Beitrag von musashi »

Möchte das Thema noch einmal aufgreifen - evtl. kann ja jemand die fehlenden Bausteine ergänzen.
Wir haben an code:

index.php
Suche:

Code: Alles auswählen

$template->pparse('body');
Darüber füge ein:

Code: Alles auswählen

//Random Quote
$sql = "SELECT p.*, pt.* FROM ". POSTS_TABLE ." p, ". POSTS_TEXT_TABLE ." pt
           WHERE p.post_id = pt.post_id ORDER BY rand() LIMIT 1";
if( !($result = $db->sql_query($sql)) )
{
   message_die(GENERAL_ERROR, 'Error getting random post.', '', __LINE__, __FILE__, $sql);
}
if( $row = $db->sql_fetchrow($result) )
{
   include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
   $length = '20';

   $bbcode_uid = $row['bbcode_uid'];
   $message = $row['post_text'];

   if( !$board_config['allow_html'] && $userdata['user_level'] != ADMIN )
   {
      if( $row['enable_html'] )
      {
         $message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message);
      }
   }

   if( $board_config['allow_bbcode'] )
   {
      if( $bbcode_uid != '' )
      {
         $message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
      }
   }

   $message = make_clickable($message);

   if( $board_config['allow_smilies'] )
   {
      if( $row['enable_smilies'] )
      {
         $message = smilies_pass($message);
      }
   }

   $orig_word = array();
   $replacement_word = array();
   obtain_word_list($orig_word, $replacement_word);
   if( count($orig_word) )
   {
   $message = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $message . '<'), 1, -1));
   }

   $message = str_replace("\n", "\n<br />\n", $message);
   $message = ( strlen($message) < $length ) ? $message : substr(stripslashes($message), 0, $length) . ' ... (<a href="'. append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $row['post_id']) . '#' . $row['post_id'].'">kompletter Beitrag</a>)';
   $template->assign_vars(array(
                'MESSAGE' => $message,
   ));
} 
//Random Quote
ToDo's
  • Die Random Quote wird derzeit pro Abruf des Forums generiert. Das sollte maximal 1x (evtl. zur Vollen Stunde?) geschehen.
  • Der Verfasser der jeweiligen Quote sollte vor der Quote erscheinen, evtl. mit Link auf sein Profil
  • Kann man die aufgerufenen stündlichen quotes irgendwie speichern damit man die später mal wieder anschauen und evtl. tagesweise abrufen kann?
Würde mich freuen wenn wir das irgendwie hinbekommen :)
www.dsaforum.de - DAS DSA Fanforum
musashi
Mitglied
Beiträge: 1585
Registriert: 04.12.2003 12:50
Wohnort: Wien
Kontaktdaten:

Beitrag von musashi »

Und noch was - warum kann ich das nicht in der overall_header mit {MESSAGE} aufrufen? *grübel*
www.dsaforum.de - DAS DSA Fanforum
Antworten

Zurück zu „phpBB 2.0: Mod Support“