switches kombinieren

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

switches kombinieren

Beitrag von d23 »

Hi,

ich suche nach einer Möglichkeit mehrere Switches zu kombinieren. Meine Suche in der KB und den Forum brachte keine zufriedenstellende Lösung.

Es ging um folgenden Codeabschnitt (EzPortal, portal.php portal_body.tpl)

In der portal_body.tpl befindet sich folgender Code:

Code: Alles auswählen

 <table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
           <tr>
                <td class="catHead" height="25"><span class="genmed"><b>{L_RECENT_TOPICS}</b></span></td>
           </tr>
           <tr>
                <td class="row1" align="left"><span class="gensmall">
                     <br>
Nur eingeloggte Benutzer sehen alle Beiträge !<br><br>
                <!-- BEGIN recent_topic_row -->
&raquo; <a href="{recent_topic_row.U_TITLE}">{recent_topic_row.L_TITLE}</a><br />
                by <a href="{recent_topic_row.U_POSTER}">{recent_topic_row.S_POSTER}</a> on {recent_topic_row.S_POSTTIME}<br /><br />
                <!-- END recent_topic_row -->
                </span></td>
           </tr>
          </table>
<br />
code is a bissl chaos, scheinbar klappt da was mitm übertragen von putty in browser nicht.

dieser abschnitt soll nur registrierten und eingeloggten usern angezeigt werden, meine versuche mit <!-- BEGIN switch_user_logged_in --> und dem zugehörigen <!-- END switch_user_logged_in --> brachten keinen erfolg.

wie funktioniert das denn ?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Code: Alles auswählen

$template->assign_block_vars('switch_eins', array());

$template->assign_block_vars('switch_eins.switch_zwei', array());

Code: Alles auswählen

<!-- BEGIN switch_eins -->
  <!-- BEGIN switch_zwei -->

  <!-- END switch_zwei -->
<!-- END switch_eins -->
:wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

so, hab das jetzt gemacht:

Code: Alles auswählen

//
// Recent Topics
//
$sql = "SELECT * FROM ". FORUMS_TABLE . " ORDER BY forum_id";
if (!$result = $db->sql_query($sql))
{
        message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
}
$forum_data = array();
while( $row = $db->sql_fetchrow($result) )
{
        $forum_data[] = $row;
}

$is_auth_ary = array();
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $forum_data);

if( $CFG['exceptional_forums'] == '' )
{
        $except_forum_id = '\'start\'';
}
else
{
        $except_forum_id = $CFG['exceptional_forums'];
}

for ($i = 0; $i < count($forum_data); $i++)
{
        if ((!$is_auth_ary[$forum_data[$i]['forum_id']]['auth_read']) or (!$is_auth_ary[$forum_data[$i]['forum_id']]['auth_view']))
        {
                if ($except_forum_id == '\'start\'')
                {
                        $except_forum_id = $forum_data[$i]['forum_id'];
                }
                else
                {
                        $except_forum_id .= ',' . $forum_data[$i]['forum_id'];
                }
        }
}
$sql = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
                FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p, " . USERS_TABLE . " AS u
                WHERE t.forum_id NOT IN (" . $except_forum_id . ")
                        AND t.topic_status <> 2
                        AND p.post_id = t.topic_last_post_id
                        AND p.poster_id = u.user_id
                ORDER BY p.post_id DESC
                LIMIT " . $CFG['number_recent_topics'];
if (!$result = $db->sql_query($sql))
{
        message_die(GENERAL_ERROR, 'Could not query recent topics information', '', __LINE__, __FILE__, $sql);
}
$number_recent_topics = $db->sql_numrows($result);
$recent_topic_row = array();
while ($row = $db->sql_fetchrow($result))
{
        $recent_topic_row[] = $row;
}
for ($i = 0; $i < $number_recent_topics; $i++)
{
        $template->assign_block_vars('recent_topic_row', array(
                'U_TITLE' => append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $recent_topic_row[$i]['post_id']) . '#' .$recent_topic_row[$i]['post_id'],
                'L_TITLE' => $recent_topic_row[$i]['topic_title'],
                'U_POSTER' => append_sid("profile.$phpEx?mode=viewprofile&" . POST_USERS_URL . "=" . $recent_topic_row[$i]['user_id']),
                'S_POSTER' => $recent_topic_row[$i]['username'],
                'S_POSTTIME' => create_date($board_config['default_dateformat'], $recent_topic_row[$i]['post_time'], $board_config['board_timezone'])
                )
        );

$template->assign_block_vars('recent_topic_row.switch_user_logged_in', array());
}
//
// END - Recent Topics
//

Code: Alles auswählen

 <table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
           <tr>
                <td class="catHead" height="25"><span class="genmed"><b>{L_RECENT_TOPICS}</b></span></td>
           </tr>
           <tr>
                <td class="row1" align="left"><span class="gensmall">
                     <br>
Nur eingeloggte Benutzer sehen alle Beiträge !<br><br>
                 <!-- BEGIN switch_user_logged_in -->
				<!-- BEGIN recent_topic_row -->
&raquo; <a href="{recent_topic_row.U_TITLE}">{recent_topic_row.L_TITLE}</a><br />
                by <a href="{recent_topic_row.U_POSTER}">{recent_topic_row.S_POSTER}</a> on {recent_topic_row.S_POSTTIME}<br /><br />
                <!-- END recent_topic_row -->
				 <!-- END switch_user_logged_in -->
                </span></td>
           </tr>
          </table>
<br />
funktioniert wunderbar, leider zu gut, weil jetzt sehen weder die eingeloggten noch die ausgeloggten benutzer etwas, außer der info, dass nur eingeloggte die anzeige erhalten o_O ich find den fehler nicht ?
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Dreh mal die beiden switches im Template um. Außerdem solltest du switch_user_logged_in auch nur dann setzen, wenn der Benutzer eingeloggt ist. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

aua *kopf gegend wand hau* die nacht war zu lange, eindeutig...

moment, ist der user_logged_in_switch etwa falsch ?

nachdem umdrehen zeigt sich gar keine wirkung, es verhält sich alles wie ohne diesen switch, eingeloggte user sehen alle beiträge, gäste nur die, die öffentlich freigegeben sind. eigentlich sollten die gäste ja gar nichts sehen ? o_O
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Der switch_user_logged_in-Block wird in der page_header.php so deklariert:

Code: Alles auswählen

if ( !$userdata['session_logged_in'] )
{
	$template->assign_block_vars('switch_user_logged_out', array());
}
else
{
	$template->assign_block_vars('switch_user_logged_in', array());
	[...]
}
wenn du ihn jetzt neu deklarierst (xxx.switch_user_logged_in), dann muss natürlich wieder die gleiche Abfrage stattfinden:

Code: Alles auswählen

if ($userdata['session_logged_in'])
{
	$template->assign_block_vars('xxx.switch_user_logged_in', array();
}
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

ah jetzt gehts. wunderbar, danke :D

gute nacht ;)
Antworten

Zurück zu „Coding & Technik“