Seite 1 von 3

Heise Newsticker ohne Portal

Verfasst: 12.04.2004 17:52
von REincarnation
Hallo zusammen,

ich suche eine Möglichkeit zum Einbinden des Heise Newstickers in meinem Board. Allerdings möchte ich keine Box wie vielleicht in einem Portal, sondern einen Ticker unter dem Header, welcher scrollt. Ähnlich wie bei http://www.oxpus.de/phpBB/portal.php

Ich habe direkt auf der Seite schon gesucht, aber nichts gefunden. Auch die Suche hier war bisher erfolglos. Kann jemand helfen?

Verfasst: 12.04.2004 18:19
von Firestarter

Verfasst: 12.04.2004 18:35
von REincarnation
Das habe ich auch gefunden. Nur wie bindet man dieses rdf-Dokument ein und wie wird daraus ein Scrollbarer Newsticker. Bei www.oxpus.de habe ich folgendes gefunden.

Tpl-Datei wo die News erscheinen sollen:

Code: Alles auswählen

<table width="100%" border="0" cellpadding="0" cellspacing="0"> 
      <tr><td class="row2" align="center" height="15"><span class="genmed"><b>Heise - Newsticker</b></span></td></tr> 
      <tr><td align="center"><span class="gensmall"> 
      <marquee id="heise" behavior="scroll" direction="left" scrolldelay="50" scrollamount="3" onMouseOver="stop()" onMouseOut="start()"> 
      <!-- BEGIN newsticker --> 
      {newsticker.heise_Ticker} 
      <!-- END newsticker --> 
      </marquee></span></td></tr> 
      </table>
...und dann noch die Definition in der portal.php (welche ja in meinem normalen Board nicht vorhanden ist)
Und in der Index.php weiss ich nicht an welche Stelle der Code muss.

Code: Alles auswählen

$content = implode ("", file ("http://www.heise.de/newsticker/heise.rdf")); 
preg_match_all("|<item>(.*)</item>|Uism",$content, $items, PREG_PATTERN_ORDER); 
for ($i=0;$i<count($items[1]);$i++) 
{ 
  preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER); 
$template->assign_block_vars('newsticker',array( 
    'heise_Ticker' => "<a href='".$regs[3][0]."' target='_blank' style='color: #0000FF' class='mainmenu'><b>".$regs[1][0]."</b></a> <img src='images/dot.gif' border='0'>")); 
}
Jetzt nur die Frage wo und wie ich es bei mir einbauen soll. Ich habe leider noch nichts gefunden.

Verfasst: 12.04.2004 18:39
von Both
Na ich denk mal mit include()! :wink:

Code: Alles auswählen

include('http://www.heise.de/newsticker/heise.rdf');
Oder? :)

Verfasst: 12.04.2004 18:44
von REincarnation
Geht ja so einfach nicht in einer tpl-datei. Genau genommen passiert dann nix. (bei mir zumindest)

Verfasst: 12.04.2004 20:43
von REincarnation
So ich habe nun nach ein paar Tüftlerstunden einen funktionieren Heise-Scroll-Ticker im Board. Für alle die sowas auch wollen:

index_body.tpl (Dort wo die News erscheinen sollen)

Code: Alles auswählen

<table width="100%" border="0" cellpadding="1" cellspacing="0" style="background-color: transparent; border: 2px solid #dedede;"><tr><td><table width="100%" border="0" cellpadding="0" cellspacing="0"> 
      <tr><td class="catHead" align="center" height="20"><span class="gensmall"><b>Heise - Newsticker</b></span></td>
      </tr> 
      <tr><td height="20" align="center" valign="middle"><span class="gensmall">
      <marquee id="heise" behavior="scroll" direction="left" scrolldelay="50" scrollamount="3" onMouseOver="stop()" onMouseOut="start()"> 
      <!-- BEGIN newsticker --> 
      {newsticker.heise_Ticker}
      <!-- END newsticker --> 
      </marquee></span></td></tr> 
      </table></td></tr></table>
includes/page_header.php

Finde:

Code: Alles auswählen

//
// Parse and show the overall header.
//
include($phpbb_root_path . 'includes/functions_rate.'.$phpEx);
$template->set_filenames(array(
	'overall_header' => ( empty($gen_simple_header) ) ? 'overall_header.tpl' : 'simple_header.tpl')
);
Danach einfügen:

Code: Alles auswählen

//
// Heise Newsticker
//
$content = implode ("", file ("http://www.heise.de/newsticker/heise.rdf")); 
preg_match_all("|<item>(.*)</item>|Uism",$content, $items, PREG_PATTERN_ORDER); 
for ($i=0;$i<count($items[1]);$i++) 
{ 
  preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER); 
$template->assign_block_vars('newsticker',array( 
    'heise_Ticker' => "<a href='".$regs[3][0]."' target='_blank' class='mainmenu'><b>".$regs[1][0]."</b></a>&nbsp;&nbsp;-|-&nbsp;&nbsp;")); 
}
Ich übernehme selbstverständlich keine Haftung für den Code. Ich bin so gesehen blutiger Anfänger aber es funktionier. (auch ein blindes Huhn findet mal ein Korn) Wäre schön, wenn sich mal ein Profi dazu äußern würde.

Verfasst: 12.04.2004 21:53
von Elvis
klasse und ich bastel an sowas die ganze hand rum :-?

bis ja Einverstanden wenn ich dein Code verwende :D

Verfasst: 13.04.2004 00:53
von REincarnation
Sicher ... Warum sich nochmal quählen :D

Verfasst: 17.04.2004 10:20
von REincarnation
Bei mir hat sich gezeigt, dass es zu erheblichen Performanceeinbußen nach dem Einbau des Tickers kommt. Ich weiss es nicht genau, aber ich nehme an, dass es an dem Code in der page_header.php liegt. Wie kann man es schneller machen oder anders?

Verfasst: 10.06.2004 19:15
von oxpus
Ich hatte den Newsticker zwischenzeitig ausbauen müssen, da scheinbar heise.de stark belastet war.
Hier mal der Code, den ich für mein ezPortal verwende, um diese Performance-Verluste auszugleichen (der Newsticker wird dann einfach nicht angezeigt):

Code: Alles auswählen

#
#-----[ OPEN ]-----
#
portal.php

#
#-----[ FIND ]-----
#
//
// Generate the page
//
$template->pparse('body');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>

#
#-----[ BEFORE, ADD ]-----
#
$timecheck = microtime();
$content = implode ("", file ("http://www.heise.de/newsticker/heise.rdf")); 
preg_match_all("|<item>(.*)</item>|Uism",$content, $items, PREG_PATTERN_ORDER); 
$heise_newsticker = array();
$cancel_heise = FALSE;
for ($i=0;$i<count($items[1]);$i++) 
{ 
	preg_match_all("|<title>(.*)</title>(.*)<link>(.*)</link>|Uism",$items[1][$i], $regs, PREG_PATTERN_ORDER); 
	$heise_newsticker[] = "<a href='".$regs[3][0]."' target='_blank' style='color: #0000FF' class='mainmenu'><b>".$regs[1][0]."</b></a> <img src='images/dot.gif' border='0'>";
	if ( ( microtime()-$timecheck ) * 10 > 2 )
	{
		$i = 11;
		$cancel_heise = TRUE;
	}
}
if ( $cancel_heise != TRUE ) 
{
	$template->assign_block_vars('switch_heise_newsticker_on', array());

	for ($i=0;$i<count($items[1]);$i++) 
	{ 
		$template->assign_block_vars('switch_heise_newsticker_on.newsticker',array( 
			'heise_Ticker' => $heise_newsticker[$i])
		); 
	}
}

#
#-----[ OPEN ]-----
#
templates/subSilver/portal_body.tpl

#
#-----[ FIND ]-----
# // The beginning of the middle colums on ezPortal!
		<table width="97%" cellspacing="1" cellpadding="1" border="0" align="center"><tr><td>

#
#-----[ AFTER, ADD ]-----
#
		<!-- BEGIN switch_heise_newsticker_on -->
		<table width="100%" border="0" cellpadding="0" cellspacing="0">
		<tr><td class="row2" align="center" height="15"><span class="genmed"><b>Heise - Newsticker</b></span></td></tr>
		<tr><td align="center"><span class="gensmall">
		<marquee id="heise" behavior="scroll" direction="left" scrolldelay="50" scrollamount="3" onMouseOver="stop()" onMouseOut="start()">
		<!-- BEGIN newsticker -->
		{switch_heise_newsticker_on.newsticker.heise_Ticker}
		<!-- END newsticker -->
		</marquee></span></td></tr>
		</table>
		<!-- END switch_heise_newsticker_on -->


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
# EoM
Dabei ist die Prüfzeit bewusst eng gesetzt und sollte in der Regel ausreichen. Wer mehr Zeit haben will, muss nur in der Zeile

Code: Alles auswählen

	if ( ( microtime()-$timecheck ) * 10 > 2 )
die "2" durch eine höhere Zahl ersetzen, was dann aber das Portal zwangsweise wieder etwas mehr ausbremst!

Achtung! Es wird durch den o.g. Code nicht geprüft, wie lange das Laden des Newsinhaltes von heise.de braucht! Ledigleich bei einer Überschreitung der vorgegebenen Zeit bricht das Script sofort ab.