Portal auf eigener Faust

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 entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
melowa

Re: Portal auf eigener Faust

Beitrag 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>');
} 
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: Portal auf eigener Faust

Beitrag 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.
melowa

Re: Portal auf eigener Faust

Beitrag 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.
melowa

Re: Portal auf eigener Faust

Beitrag 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
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: Portal auf eigener Faust

Beitrag von AmigaLink »

Das kommt von den echo befehlen. Wenn du die Ausgabe über das Template-System machst, ist diese Fehlermeldung weg.
melowa

Re: Portal auf eigener Faust

Beitrag 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?
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: Portal auf eigener Faust

Beitrag 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. :)
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“