Tamplate Schleife in Template Schleife
Verfasst: 18.11.2011 03:06
Hallo zusammen
Ich möchte für mein Newssystem eine "Kommentarfunktion" einbauen.
Das ganz soll aus dem Forum ausgelesen werden, in dem auch die News steht. Soll heißen: 1. Post des Topics = News, alle anderen = Kommentar.
Nun habe ich das Problem/den Denkfehler, das ich erst die erste Schleife für das auslesen und übergeben der Newsdaten an das Template habe und dort ja auch die zweite Schleife zum auslesen und ausgeben der Kommentare an das Template rein muss.
(Sorry, ich weiß leider nicht, wie die "Funktion" in phpbb genannt wird, mit der die Daten an das Template in "Zeilen" übergeben wird.)
Hier mal mein Bisheriger code:
Newssystem alleine:
Mit meinem Versuch, der allerdings nichts ausgibt:
Hier die Template Datei, mit meinem Versuch:
Meine Frage ist nun: Kann man dies überhaupt machen, eine Schleife in eine andere? Und wenn, was mache ich falsch?
EDIT: Danke fürs verschieben, habe gestern die MOD-Bastelstube irgendwie nicht gefunden o.0
Mit freundlichen Grüßen
hmm der 3.
Ich möchte für mein Newssystem eine "Kommentarfunktion" einbauen.
Das ganz soll aus dem Forum ausgelesen werden, in dem auch die News steht. Soll heißen: 1. Post des Topics = News, alle anderen = Kommentar.
Nun habe ich das Problem/den Denkfehler, das ich erst die erste Schleife für das auslesen und übergeben der Newsdaten an das Template habe und dort ja auch die zweite Schleife zum auslesen und ausgeben der Kommentare an das Template rein muss.
(Sorry, ich weiß leider nicht, wie die "Funktion" in phpbb genannt wird, mit der die Daten an das Template in "Zeilen" übergeben wird.)
Hier mal mein Bisheriger code:
Newssystem alleine:
Code: Alles auswählen
//News System - Ausgelesen aus Forum
//
//ID beschreibung
//
// 21 = News
// 23 = Servernews
// 24 = Clannews
// 37 = Gamenews
$sql =
'SELECT
p.post_id,
p.topic_id,
p.poster_id,
p.post_time,
p.post_subject,
p.post_text,
p.forum_id,
p.bbcode_uid,
p.bbcode_bitfield,
u.user_id,
u.username,
t.topic_first_post_id
FROM
'.$table_prefix.'posts p,
'.$table_prefix.'topics t,
'.$table_prefix.'users u
WHERE
p.forum_id = 21 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
OR p.forum_id = 23 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
OR p.forum_id = 24 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
OR p.forum_id = 37 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
ORDER BY
post_id DESC LIMIT 8';
$result = $db->sql_query($sql);
if(!$result)
{
$fehler = ('SQL Abfrage fehlgeschlagen!: '.mysql_error());
}
else
{
$fehler = ('KEIN FEHLER!');
}
while ($row = $db->sql_fetchrow($result))
{
$bbcode_bitfield = $row['bbcode_bitfield'];
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
$post = bbcode_nl2br($row['post_text']);
$post = smiley_text($post);
if ($row['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($post, $row['bbcode_uid'], $row['bbcode_bitfield']);
}
//News Überschrifts Bild erstellen/auswählen
if($row['forum_id'] == 21){
$cat = ('header_pic_news');
}
elseif($row['forum_id'] == 23){
$cat = ('header_pic_server');
}
elseif($row['forum_id'] == 24){
$cat = ('header_pic_clan');
}
elseif($row['forum_id'] == 37){
$cat = ('header_pic_game');
}
$sql='
SELECT
p.topic_id,
p.post_id
FROM
'.$table_prefix.'posts p
WHERE
p.topic_id = '.$row['topic_id'];
$result1 = $db->sql_query($sql);
$zahl = 0;
while ($row1 = $db->sql_fetchrow($result1))
{
if($row1['post_id'] == $row['topic_first_post_id'])
{
continue;
}
$zahl = $zahl + 1;
}
$cp_row = array();
$postrow = array(
'TEST' => $row['post_id'],
'KATEGORIE' => $cat,
'TITEL' => $row['post_subject'],
'DATUM' => $user->format_date($row['post_time']),
'POSTER' => $row['username'],
'POST' => $post,
'U_KOMMENTAR' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", '&f='.$row['forum_id'].'&t='.$row['topic_id']) ,
'KOMMENTARZAHL' => $zahl,
);
if (isset($cp_row['row']) && sizeof($cp_row['row']))
{
$postrow = array_merge($postrow, $cp_row['row']);
}
// Dump vars into template
$template->assign_block_vars('postrow', $postrow);
if (!empty($cp_row['blockrow']))
{
foreach ($cp_row['blockrow'] as $field_data)
{
$template->assign_block_vars('postrow.custom_fields', $field_data);
}
}
}
Code: Alles auswählen
//News System - Ausgelesen aus Forum
//
//ID beschreibung
//
// 21 = News
// 23 = Servernews
// 24 = Clannews
// 37 = Gamenews
$sql =
'SELECT
p.post_id,
p.topic_id,
p.poster_id,
p.post_time,
p.post_subject,
p.post_text,
p.forum_id,
p.bbcode_uid,
p.bbcode_bitfield,
u.user_id,
u.username,
t.topic_first_post_id
FROM
'.$table_prefix.'posts p,
'.$table_prefix.'topics t,
'.$table_prefix.'users u
WHERE
p.forum_id = 21 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
OR p.forum_id = 23 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
OR p.forum_id = 24 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
OR p.forum_id = 37 AND p.poster_id = u.user_id AND p.post_id = t.topic_first_post_id
ORDER BY
post_id DESC LIMIT 8';
$result = $db->sql_query($sql);
if(!$result)
{
$fehler = ('SQL Abfrage fehlgeschlagen!: '.mysql_error());
}
else
{
$fehler = ('KEIN FEHLER!');
}
while ($row = $db->sql_fetchrow($result))
{
$bbcode_bitfield = $row['bbcode_bitfield'];
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
$post = bbcode_nl2br($row['post_text']);
$post = smiley_text($post);
if ($row['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($post, $row['bbcode_uid'], $row['bbcode_bitfield']);
}
//News Überschrifts Bild erstellen/auswählen
if($row['forum_id'] == 21){
$cat = ('header_pic_news');
}
elseif($row['forum_id'] == 23){
$cat = ('header_pic_server');
}
elseif($row['forum_id'] == 24){
$cat = ('header_pic_clan');
}
elseif($row['forum_id'] == 37){
$cat = ('header_pic_game');
}
//Kommentare Auslesen
//*******************
$sql1 =
'SELECT
p.post_id,
p.topic_id,
p.poster_id,
p.post_time,
p.post_subject,
p.post_text,
p.forum_id,
p.bbcode_uid,
p.bbcode_bitfield,
u.user_id,
u.username
FROM
'.$table_prefix.'posts p,
'.$table_prefix.'users u
WHERE
p.poster_id = u.user_id AND p.topic_id = '.$row['topic_id'].'
ORDER BY
post_id';
$result1 = $db->sql_query($sql1);
$zahl = 0;
while ($row1 = $db->sql_fetchrow($result1))
{
if($row1['post_id'] == $row['topic_first_post_id'])
{
continue;
}
$bbcode_bitfield = $row1['bbcode_bitfield'];
if ($bbcode_bitfield !== '')
{
$bbcode = new bbcode(base64_encode($bbcode_bitfield));
}
$post1 = bbcode_nl2br($row1['post_text']);
$post1 = smiley_text($post1);
if ($row1['bbcode_bitfield'])
{
$bbcode->bbcode_second_pass($post1, $row1['bbcode_uid'], $row1['bbcode_bitfield']);
}
$cp_row = array();
$commentrow = array(
'COMMENT_TITEL' => $row1['post_subject'],
'COMMENT_DATUM' => $user->format_date($row1['post_time']),
'COMMENT_POSTER' => $row1['username'],
'COMMENT_POST' => $post1,
);
if (isset($cp_row['row']) && sizeof($cp_row['row']))
{
$commentrow = array_merge($commentrow, $cp_row['row']);
}
// Dump vars into template
$template->assign_block_vars('commentrow', $commentrow);
if (!empty($cp_row['blockrow']))
{
foreach ($cp_row['blockrow'] as $field_data1)
{
$template->assign_block_vars('commentrow.custom_fields', $field_data1);
}
}
$zahl = $zahl + 1;
}
//************************
//Kommentare auslesen ENDE
$cp_row = array();
$postrow = array(
'TEST' => $row['post_id'],
'KATEGORIE' => $cat,
'TITEL' => $row['post_subject'],
'DATUM' => $user->format_date($row['post_time']),
'POSTER' => $row['username'],
'POST' => $post,
'TOPIC' => $row['topic_id'],
'U_KOMMENTAR' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", '&f='.$row['forum_id'].'&t='.$row['topic_id']) ,
'KOMMENTARZAHL' => $zahl,
);
if (isset($cp_row['row']) && sizeof($cp_row['row']))
{
$postrow = array_merge($postrow, $cp_row['row']);
}
// Dump vars into template
$template->assign_block_vars('postrow', $postrow);
if (!empty($cp_row['blockrow']))
{
foreach ($cp_row['blockrow'] as $field_data)
{
$template->assign_block_vars('postrow.custom_fields', $field_data);
}
}
}
Code: Alles auswählen
<!-- BEGIN postrow -->
<div id="news">
<div id="news_header">
<div id="{postrow.KATEGORIE}"></div>
<div id="header_info">
<p class="news_title">{postrow.TITEL}</p></br>
<p class="news_info">{postrow.POSTER} • {postrow.DATUM}</p>
</div>
</div>
<div id="news_content">
{postrow.POST}
</div>
<div id="comment_menu">
<a id="comment_link{postrow.TOPIC}" class="comment_link" href="" onclick="comment({postrow.TOPIC}); return false;" >{postrow.KOMMENTARZAHL} Kommentare anzeigen</a>
<div id="comment{postrow.TOPIC}" class="comment" style="display:none;">
<table>
<tbody>
<tr class="cat">
<td>Kommentare</td>
</tr>
<!-- BEGIN commentrow -->
<th>{commentrow.COMMENT_POSTER}
</th>
<th>{commentrow.COMMENT_DATUM}
</th>
<tr class="row1" colspan="2">
<td>{commentrow.COMMENT_POST}
</td>
</tr>
<!-- END commentrow -->
</tbody>
</table>
</div>
</div>
</div>
<!-- END postrow -->
Meine Frage ist nun: Kann man dies überhaupt machen, eine Schleife in eine andere? Und wenn, was mache ich falsch?
EDIT: Danke fürs verschieben, habe gestern die MOD-Bastelstube irgendwie nicht gefunden o.0
Mit freundlichen Grüßen
hmm der 3.