Seite 4 von 4

Re: Portal auf eigener Faust

Verfasst: 27.07.2010 12:41
von melowa
Wunderbar, funktioniert, nun kommen wir zur Ausgabe, print_r gibt den ganzen Array mit Punkt und Komma aus. (Im übertragenen Sinne)
Also müsste ich ne Schleife bauen, die die einzelnen Elemente des Array's ausgibt, ist das richtig?

Code: Alles auswählen

foreach($threads as $thread) {
	foreach($thread as $threaditem) {
		echo ($threaditem);
	}
}
EDIT1: Ach, klappt ja. ^^

EDIT2: Ich habe nun versucht die Ausgabe noch zu ändern, bezüglich formatierung, was aber nicht klappt:

Code: Alles auswählen

foreach($threads as $thread) {
	echo ('<div class="mbox">');
	foreach($thread as $threaditem) {
		echo ('<h1>'.$threaditem[0].'</h1>');
		echo ($threaditem[1]);
		echo ($threaditem[2]);
	}
	echo ('</div>');
}
EDIT3: Irgendwie habe ich gerade ein Denkfehler. ^^ Folgendes klappt auch nicht:

Code: Alles auswählen

for($i = 0; $i < count($threads); $i++) {
	echo ('<div class="mbox">');
	echo ('<h1>'.$threads[$i][0].'</h1>');
	echo ($threads[$i][1]);
	echo ($threads[$i][2]);
	echo ('</div>');
} 

Re: Portal auf eigener Faust

Verfasst: 27.07.2010 14:38
von AmigaLink
Du denkst zu Kompliziert.

Code: Alles auswählen

foreach($threads as $news)
{
	echo '<b>' . $news['TITLE'] . '</b><br />';
	echo 'von <b>' . $news['AUTHOR'] . '</b><hr />';
	echo $news['CONTENT'];
	echo '<a href="' . $news['LINK'] . '" >' . '<i>(Link zum Thema)</i></a><hr /><hr />';
}
Wobei es natürlich Intelligenter wäre das ganze übers Template-System laufen zu lassen.

Re: Portal auf eigener Faust

Verfasst: 27.07.2010 20:37
von melowa
Ah danke dir, habe nun alles bisschen weiter angepasst:

Code: Alles auswählen

<?php
$quelle = $data = '';
$tmp_ary = $threads = array();

$quelle = @file('forum/feed.php?mode=news'); 
$data = implode ("", $quelle);

$tmp_ary = explode('<entry>', $data);
array_shift($tmp_ary);

foreach($tmp_ary as $thread) {
	$threads[] = array(
	   'TITLE'		=> get_middle($thread, '<title type="html"><![CDATA[', ']]></title>', 0),
	   'AUTHOR'		=> get_middle($thread, '<author><name><![CDATA[', ']]></name></author>', 0),
	   'AUTHORLINK'	=> get_middle($thread, 'Verfasst von <a href="', '">', 0),
	   'ANSWERS'	=> get_middle($thread, 'Antworten ', ' — Zugriffe', 0),
	   'TIME'		=> get_middle($thread, '</a> — ', ' — Antworten', 0),
	   'CONTENT'	=> preg_replace('#xml:base="(.*)"><\!\[CDATA\[#Uis','',get_middle($thread, '<content type="html" ', '<p>', 0)),
	   'FORUMLINK'	=> get_middle($thread, '<link href="', '"/>', 0),
	);
}
function get_middle($source, $beginning, $ending, $init_pos) {
	$beginning_pos = strpos($source, $beginning, $init_pos);
	$middle_pos = $beginning_pos + strlen($beginning);
	$ending_pos = strpos($source, $ending, $beginning_pos + 1);
	$middle = substr($source, $middle_pos, $ending_pos - $middle_pos);
	return $middle;
}

foreach($threads as $news) {
	echo ('<div class="mbox">');
	echo '<h1>'.$news['TITLE'].'</h1>';
	echo $news['CONTENT'].'<hr />';
	echo '<div class="left">von <a href="'.$news['AUTHORLINK'].'">'.$news['AUTHOR'].'</a> - '.$news['TIME'].'</div>';
	echo '<div class="right"><a href="'.$news['FORUMLINK'].'">Kommentare ('.$news['ANSWERS'].')</a></div>';
	echo ('<div class="clear"></div>');
	echo ('</div>');
}	
?>
PS: Habe das mit dem Cache wieder rausgenommen, weil wenn man immer 10 Minuten warten muss bis es angezeigt wird bzw es nicht sofort da ist, ist es ziemlich komisch und eventuell merkwürdig für die weiteren News-Schreiber.

Re: Portal auf eigener Faust

Verfasst: 27.07.2010 22:23
von melowa
Mir ist soeben aufgefallen, als ich die Seite in einem anderen Browser aufgerufen habe, das es Fehlermeldungen gibt:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /kunden/292617_49124/webseiten/index.php:1)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /kunden/292617_49124/webseiten/index.php:1)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /kunden/292617_49124/webseiten/index.php:1)
Hat evtl. jemand eine Ahnung woran das liegt?

mfg melowa

Re: Portal auf eigener Faust

Verfasst: 27.07.2010 23:51
von AmigaLink
Das kommt von den echo befehlen. Wenn du die Ausgabe über das Template-System machst, ist diese Fehlermeldung weg.

Re: Portal auf eigener Faust

Verfasst: 28.07.2010 00:07
von melowa
AmigaLink hat geschrieben:Das kommt von den echo befehlen. Wenn du die Ausgabe über das Template-System machst, ist diese Fehlermeldung weg.
Das versteh ich nicht ganz, tut mir Leid.
Ausgabe über das Template-System?

Re: Portal auf eigener Faust

Verfasst: 28.07.2010 10:09
von AmigaLink
php:

Code: Alles auswählen

foreach($threads as $news)
{
	$template->assign_block_vars('news_row', array(
		'TITLE'		=> $news['TITLE'],
		'CONTENT'	=> $news['CONTENT'],
		'U_AUTHOR'	=> '<a href="' . append_sid($news['AUTHORLINK']) . '">' . $news['AUTHOR'] . '</a>',
		'TIME'		=> $news['TIME'],
		'FORUMLINK'	=> '<a href="' . append_sid($news['FORUMLINK']) . '">Kommentare (' . $news['ANSWERS'] . ')</a>'
	));
}
html:

Code: Alles auswählen

<!-- BEGIN news_row -->
<div class="mbox">
	<h1>{news_row.TITLE}</h1>
	{news_row.CONTENT}
	<div class="left">von {news_row.U_AUTHOR} - {news_row.TIME}</div>
	<div class="right">{news_row.FORUMLINK}</div>
	<div class="clear"></div>
</div>
<!-- END news_row -->
Der HTML Teil kommt in die Datei die den rest deiner News-Seite Darstellt und den Header sowie den Footer includiert.

Noch schöner wäre es, wenn das "von" und das "Kommentare" nicht Hardcodet wäre, sondern über die Sprachdateien läuft. Und aus Sicht der Performance, könnte man noch den $news Array weg lassen und direkt die Platzhalter für das Template Generieren. :)