Seite 1 von 1

Letzte Forenbeiträge

Verfasst: 17.08.2010 03:32
von dms281
Hallo zusammen,
ich bin in Sachen PHP und HTML ein blutiger Anfänger (Noob) und verzweifle langsam bei meinen erfolglosen Versuchen das gewünschte Ziel zu erreichen.

Ich verwende MKPortal in Verbindung mit PHPbb3 und habe einen Block für das MKP gefunden welcher mir die letzten Forenbeiträge im Portal anzeigt. Zu sehen unter http://www.gft-funclan.de
Ansich bin ich mit diesem Block absolut zufrieden, allerdings würde ich gern folgendes Ändern:

Derzeit wird angezeigt: Titel des Beitrags - Letzter Beitrag von (Username) - Datum - Anzahl der Antworten
Nun würde ich gern zwischen den Spalten "Titel des Beitrages" und "Letzter Beitrag von" noch eine Spalte einfügen, in der der Name des Forums erscheint in dem der Beitrag steht.
(Am besten wäre es natürlich wenn man hier ebenso wie im Beitragsnamen die Zeichenzahl begrenzen könnte die angezeigt wird.)

Hoffe hier ist jemand so nett mir zu helfen, ich denke mal für jemanden der sich auskennt ist das eine Kleinigkeit. :roll:

Der Code des Blocks sieht wie folgt aus:

Code: Alles auswählen

<?php
/*
---------------------------------------------------------------------------
Config:
--------------------------------------------------------------------------*/
$prefix        = "phpbb_";    // Database prefix
$limit         = 6;         // Number of forum posts to show in block 
$cutoff        = 30;         // Number of characters to display in title
$startformat   = "long";      // Formats the start date. 
                              //Options are short, time, small, normal, long or leave blank for default.
$lastformat    = "short";     // Formats the last post date.
                              //Options are short, time, small, normal, long or leave blank for default.
/*------------------------------------------------------------------------
Forum images Config:
--------------------------------------------------------------------------*/
$img_first_topic    ="<img src=\"$mkportals->forum_url/styles/subsilver2/imageset/topic_read.gif\" boder=\"0\">";
$img_last_topic     ="<img src=\"$mkportals->forum_url/styles/subsilver2/imageset/icon_topic_latest.gif\" boder=\"0\">";
                              //images are from phpbb3 default template subsilver2 you also can use your own template images
                              //empty images canbe used by "" eg: $img_first_topic ="";
/*-------------------------------------------------------------------------
Language Setting:
--------------------------------------------------------------------------*/
$lang_topic_title        ="Titel des Beitrags";
$lang_last_post          ="Letzter Beitrag";
$lang_last_post2         =" ";
$lang_last_post_date     ="Datum";
$lang_views              ="Aufrufe";
$lang_replies            ="Antw.";
$lang_go_to_last_post    ="Gehe zum letzten Beitrag ...";
$lang_topic_started_by   ="Thema gestartet von:";
$lang_on                 ="am";
$lang_by                 ="von";
$lang_last_poster        ="Benutzer:";
/*------------------------------------------------------------------------*/
global $auth;
$content = "
<tr>
  <td>

    <table class=\"moduleborder\" cellspacing=\"1\" width=\"100%\">
      <tr>
    <th class=\"modulex\" width=\"35%\" style=\"padding-left: 10px;\">$lang_topic_title</th>
    <th class=\"modulex\" width=\"43%\" style=\"padding-left: 10px;\">$lang_last_post</th>
    <th class=\"modulex\" width=\"12%\" style=\"padding-left: 10px;\">$lang_last_post_date</th>

    <th class=\"modulex\" width=\"5%\">$lang_replies</th>
      </tr>
";

     $DB->query("SELECT forum_id FROM ".$prefix."forums");
     while( $f = $DB->fetch_row() ) {
         if ($auth->acl_get('f_read', $f['forum_id']))  {
                 $good[] = $f['forum_id'];
        }
        }

     if ( count($good) > 0 ) {
             $qe = " AND t.forum_id  IN(".implode(',', $good ).") ";
        }

        $DB->query("SELECT t.topic_last_post_id, t.topic_id, t.topic_title, t.topic_views, t.topic_replies, t.topic_time, t.topic_last_post_time, t.topic_first_poster_name, t.topic_last_poster_name, t.topic_last_poster_id, topic_poster, t.forum_id
        
                FROM ".$prefix."topics t
                LEFT JOIN ".$prefix."forums f ON (t.forum_id = f.forum_id)
                WHERE topic_approved != 0 AND topic_approved = 1 AND (topic_moved_id = 0 or topic_moved_id='') $qe
                GROUP BY t.topic_title
                ORDER BY t.topic_last_post_id DESC LIMIT 0,$limit");        

         while ( $post = $DB->fetch_row() ) {
        $post['title'] = strip_tags($post['title']);
        $post['topic_title'] = str_replace( "!" , "!" , $post['topic_title'] );
        $post['topic_title'] = str_replace( """, "\"", $post['topic_title'] );
            if (strlen($post['topic_title']) > $cutoff) {
                $post['topic_title'] = substr( $post['topic_title'],0,($cutoff - 3) ) . "...";
                $post['topic_title'] = preg_replace( '/&(#(\d+;?)?)?(\.\.\.)?$/', '...',$post['topic_title'] );
            }         

        $title = $post['topic_title'];
         $tid = $post['topic_id'];        
        $tlastid = $post['topic_last_post_id'];
              $views = $post['topic_views'];
        $posts = $post['topic_replies'];
        $starter = $post['topic_first_poster_name'];
        $lastname = $post['topic_last_poster_name'];
        $lastid = $post['topic_last_poster_id'];
        $forum_id = $post['forum_id'];
        $startdate  = $this->create_date($post['topic_time'], $startformat);
        $lastdate  = $this->create_date($post['topic_last_post_time'], $lastformat);

        $content .= "
<!-- topic begin -->
      <tr>
    <td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\">
      $img_first_topic <a style=\"text-decoration: none; font-weight: bold;\" href=\"$mkportals->forum_url/viewtopic.php?f=$forum_id&t=$tid\" title=\"$lang_topic_started_by $starter $lang_on $startdate\">$title</a>
    </td>
    <td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\">
      <a href=\"$mkportals->forum_url/viewtopic.php?f=$forum_id&t=$tid&p=$tlastid#p$tlastid\" title=\"$lang_go_to_last_post\">$img_last_topic $lang_last_post2</a> $lang_by <a href=\"$mkportals->forum_url/memberlist.php?mode=viewprofile&u=$lastid\" title=\"$lang_last_poster $lastname\"><b>$lastname</b></a>
    </td>
    <td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\">$lastdate</td>

    <td class=\"modulecell\" style=\"padding-right: 10px; text-align: right;\"> $posts </td>                
    </td>
      </tr>
<!-- topic end -->   
        ";
}

$content .= "
    </table>

  </td>
</tr>
";  

          unset($prefix);
          unset($limit);
          unset($cutoff);
          unset($startformat);
          unset($lastformat);
          unset($perms);
          unset($good);
          unset($qe);
          unset($post);
          unset($tid);
          unset($title);
          unset($views);
          unset($posts);
          unset($startdate);
          unset($lastdate);
          unset($starter);
          unset($lastname);
          unset($lastid);
          unset($tlastid);
          unset($forum_id);
          unset($img_last_topic);
          unset($img_first_topic);          
          unset($lang_topic_title);
          unset($lang_last_post);
          unset($lang_last_post_date);
          unset($lang_views);
          unset($lang_replies);
          unset($lang_go_to_last_post);
          unset($lang_topic_started_by);
          unset($lang_on);
          unset($lang_by);
          unset($lang_last_poster);           

?> 

Re: Letzte Forenbeiträge

Verfasst: 17.08.2010 11:58
von aurora876
MKPortal - was genau ist das?
ist das eine mod fürs phpbb oder wie?

Re: Letzte Forenbeiträge

Verfasst: 17.08.2010 15:10
von dms281
http://www.mkportal.it/
MKPortal ist ein Portalsystem, welches sich mit vielen bekannten Foren (phpbb2, phpbb3, ipb, smf, vb...) verknüpfen lässt. Leider ist der offizielle Support und die Weiterentwicklung ende letzten Jahres eingestellt worden was ich schade finde da es ein klasse System ist. Meine Frage habe ich bewusst hier gestellt da es sich ja direkt auf die Funktionen des PHPbb3 bezieht und ihr mir wahrscheinlich am ehesten weiterhelfen könnt. Der Block ist ja soweit funktionstüchtig, es geht mir nun einfach darum eine weitere Spalte einzufügen in die dann der jeweilige Forenname eingefügt wird. Ich weis nur leider nicht wie und besonders an welcher Stelle ich dies einfügen muss und wie ich den jeweils dazugehörigen Forennamen auslesen kann.

Re: Letzte Forenbeiträge

Verfasst: 17.08.2010 16:29
von dms281
Hmm, ich glaube ich bewege mich in die richtige Richtung, bin ja ganz überrascht dass ich das soweit hinbekommen habe.
Der Forenname wird nun angezeigt und ich habe es sogar geschafft dass die länge des Forennamens gekürzt wird. Allerdings habe ich noch ein winziges Problem:

Im Beitragsnamen werden Umlaute (ÄÖÜ) korrekt angezeigt, im Forennamen allerdings erscheint nur die Raute. Habe leider noch nicht herausgefunden wo das Problem liegt.
Das Script sieht derzeit wie folgt aus, ich hoffe ich habe den Code nicht zu sehr vergewaltigt :roll:

Code: Alles auswählen

<?php
/*
---------------------------------------------------------------------------
Config:
--------------------------------------------------------------------------*/
$prefix        = "phpbb_";	// Database prefix
$limit         = 6; 		// Number of forum posts to show in block 
$cutoff        = 28; 		// Number of characters to display in title
$cutoff2       = 24; 		// Number of characters to display in forum name
$startformat   = "long";      // Formats the start date. 
                              //Options are short, time, small, normal, long or leave blank for default.
$lastformat    = "short";     // Formats the last post date.
                              //Options are short, time, small, normal, long or leave blank for default.
/*------------------------------------------------------------------------
Forum images Config:
--------------------------------------------------------------------------*/
$img_first_topic    ="<img src=\"$mkportals->forum_url/styles/subsilver2/imageset/topic_read.gif\" boder=\"0\">";
$img_last_topic     ="<img src=\"$mkportals->forum_url/styles/subsilver2/imageset/icon_topic_latest.gif\" boder=\"0\">";
                              //images are from phpbb3 default template subsilver2 you also can use your own template images
                              //empty images canbe used by "" eg: $img_first_topic ="";
/*-------------------------------------------------------------------------
Language Setting:
--------------------------------------------------------------------------*/
$lang_topic_title        ="Titel des Beitrags";
$lang_last_post          ="Letzter Beitrag";
$lang_last_post2         =" ";
$lang_last_post_date     ="Datum";
$lang_views              ="Aufrufe";
$lang_replies            ="Antw.";
$lang_go_to_last_post    ="Gehe zum letzten Beitrag ...";
$lang_topic_started_by   ="Thema gestartet von:";
$lang_on                 ="am";
$lang_by                 ="von";
$lang_last_poster        ="Benutzer:";
$lang_forum_name         ="Forum:";
/*------------------------------------------------------------------------*/

$content = "
<tr>
  <td>

    <table class=\"moduleborder\" cellspacing=\"1\" width=\"100%\">
      <tr>
	<th class=\"modulex\" width=\"30%\" style=\"padding-left: 10px;\">$lang_topic_title</th>
	<th class=\"modulex\" width=\"25%\" style=\"padding-left: 10px;\">$lang_forum_name</th>
	<th class=\"modulex\" width=\"25%\" style=\"padding-left: 10px;\">$lang_last_poster</th>
	<th class=\"modulex\" width=\"15%\" style=\"text-align: center;\">$lang_last_post_date</th>
	<th class=\"modulex\" width=\"5%\">$lang_replies</th>
      </tr>
";

 	$DB->query("SELECT forum_id, forum_password FROM ".$prefix."forums");
 	while( $f = $DB->fetch_row() ) {
 		if ($f['forum_password'] != "" ) {
            		$bad[] = $f['forum_id'];
        	} else {
         		$good[] = $f['forum_id'];
        	}
    	}

 	if ( count($bad) > 0 ) {
     		$qe = " AND forum_id NOT IN(".implode(',', $bad ).") ";
    	}

		$DB->query("SELECT t.topic_last_post_id, t.topic_id, t.topic_title, t.topic_views, t.topic_replies, t.topic_time, t.topic_last_post_time, t.topic_first_poster_name, t.topic_last_poster_name, topic_poster, t.forum_id, f.forum_name
		
			    FROM ".$prefix."topics t
			    LEFT JOIN ".$prefix."forums f ON (t.forum_id = f.forum_id)
			    WHERE topic_approved != 0 AND topic_approved = 1 AND (topic_moved_id = 0 or topic_moved_id='') $qe
			    GROUP BY t.topic_title
			    ORDER BY t.topic_last_post_id DESC LIMIT 0,$limit");		

 		while ( $post = $DB->fetch_row() ) {
		$post['title'] = strip_tags($post['title']);
		$post['topic_title'] = str_replace( "&#33;" , "!" , $post['topic_title'] );
		$post['topic_title'] = str_replace( """, "\"", $post['topic_title'] );
			if (strlen($post['topic_title']) > $cutoff) {
				$post['topic_title'] = substr( $post['topic_title'],0,($cutoff - 3) ) . "...";
				$post['topic_title'] = preg_replace( '/&(#(\d+;?)?)?(\.\.\.)?$/', '...',$post['topic_title'] );
			}
      
      if (strlen($post['forum_name']) > $cutoff2) {
				$post['forum_name'] = substr( $post['forum_name'],0,($cutoff2 - 3) ) . "...";
				$post['forum_name'] = preg_replace( '/&(#(\d+;?)?)?(\.\.\.)?$/', '...',$post['forum_name'] );
			} 		

		$title = $post['topic_title'];
 		$tid = $post['topic_id'];		
		$tlastid = $post['topic_last_post_id'];
    $views = $post['topic_views'];
		$posts = $post['topic_replies'];
		$starter = $post['topic_first_poster_name'];
		$lastname = $post['topic_last_poster_name'];
		$lastid = $post['topic_poster'];
		$forum_id = $post['forum_id'];
		$forum_name = $post ['forum_name'];
		$startdate  = $this->create_date($post['topic_time'], $startformat);
		$lastdate  = $this->create_date($post['topic_last_post_time'], $lastformat);

		$content .= "
<!-- topic begin -->
      <tr>
	<td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\">
	  $img_first_topic <a style=\"text-decoration: none; font-weight: bold;\" href=\"$mkportals->forum_url/viewtopic.php?f=$forum_id&t=$tid\" title=\"$lang_topic_started_by $starter $lang_on $startdate\">$title</a>
	</td>
	<td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\"> $forum_name </td>
  <td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\">
	  <a href=\"$mkportals->forum_url/viewtopic.php?f=$forum_id&t=$tid&p=$tlastid#p$tlastid\" title=\"$lang_go_to_last_post\">$img_last_topic $lang_last_post2</a> $lang_by <a href=\"$mkportals->forum_url/memberlist.php?mode=viewprofile&u=$lastid\" title=\"$lang_last_poster $lastname\"><b>$lastname</b></a>
	</td>
	<td class=\"modulecell\" style=\"padding-left: 10px; text-align: left;\">$lastdate</td>
	
	<td class=\"modulecell\" style=\"padding-right: 10px; text-align: right;\"> $posts </td>		    	
	</td>
      </tr>
<!-- topic end -->   
		";
}

$content .= "
    </table>

  </td>
</tr>
";  

          unset($prefix);
          unset($limit);
          unset($cutoff);
          unset($startformat);
          unset($lastformat);
          unset($perms);
          unset($good);
          unset($bad);
          unset($qe);
          unset($post);
          unset($tid);
          unset($title);
          unset($views);
          unset($posts);
          unset($startdate);
          unset($lastdate);
          unset($starter);
          unset($lastname);
          unset($lastid);
          unset($tlastid);
          unset($forum_id);

          unset($img_last_topic);
          unset($img_first_topic);
          
          unset($lang_topic_title);
          unset($lang_last_post);
          unset($lang_last_post_date);
          unset($lang_views);
          unset($lang_replies);
          unset($lang_go_to_last_post);
          unset($lang_topic_started_by);
          unset($lang_on);
          unset($lang_by);
          unset($lang_last_poster);           

?>
EDIT:
Schaut so aus als hätte ich es hinbekommen. Ich habe folgendes eingefügt um die Umlaute in den Griff zu bekommen:

Code: Alles auswählen

		$post['forum_name'] = str_replace( "ü", "&uuml;", $post['forum_name'] );
    $post['forum_name'] = str_replace( "ö", "&ouml;", $post['forum_name'] );
    $post['forum_name'] = str_replace( "ä", "&auml;", $post['forum_name'] );    
Das von mir angestrebte Ergebnis ist damit erreicht, ich hoffe nur wie gesagt dass ich den Code nicht allzusehr vergewaltigt habe.
Für Kritik oder Verbesserungsvorschläge bin ich natürlich immer offen :wink:

Re: Letzte Forenbeiträge

Verfasst: 17.08.2010 18:35
von aurora876
dms281 hat geschrieben:http://www.mkportal.it/
MKPortal ist ein Portalsystem, welches sich mit vielen bekannten Foren (phpbb2, phpbb3, ipb, smf, vb...) verknüpfen lässt.
ok, allerdings nutzen die meisten das board3portal für ihr forum ;)

Re: Letzte Forenbeiträge

Verfasst: 17.08.2010 19:24
von dms281
ok, allerdings nutzen die meisten das board3portal für ihr forum ;)
Ich kenne das Board3Portal und habe es auch ausprobiert. Leider kommt es an die Benutzerfreundlichkeit des MKPortal meiner Meinung nach nicht heran. Schaut euch das MKP mal an, eine wirklich gelungene Sache und sehr schade dass es nicht mehr weiterentwickelt wird. :( Gibt auch noch eine Deutsche Support Community dazu die auch noch aktiv ist, aber viele Downloads von der Entwicklerseite sind leider schon nicht mehr verfügbar.