Seite 1 von 1

[Gelößt] Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 10:04
von forant
Hallo,

wenn man ein Thema betrachtet, steht ja unten die Meldung:
Wer ist online?
Benutzer in diesem Forum:
Frage: in welcher HTML-Datei wird dies angegeben und mit welchem Syntax?

Begründung: ich möchte die Legende dort aufführen.

Vorab Danke für Hinweise

Greatings

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 10:17
von Frank1604
Da du ja keinen Style angegeben hast, gehe ich mal von ProSilver aus. Die Liste findet sich in der viewtopic_body.html. Der entsprechende Abschnitt ist dieser:

Code: Alles auswählen

<!-- IF S_DISPLAY_ONLINE_LIST -->
    <h3><!-- IF U_VIEWONLINE --><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a><!-- ELSE -->{L_WHO_IS_ONLINE}<!-- ENDIF --></h3>
    <p>{LOGGED_IN_USER_LIST}</p>
<!-- ENDIF -->
EDIT: So sieht der Abschnitt bei SubSilver2 aus, ebenfalls viewtopic_body.html

Code: Alles auswählen

<!-- IF S_DISPLAY_ONLINE_LIST -->
    <br clear="all" />

    <table class="tablebg" width="100%" cellspacing="1">
    <tr>
        <td class="cat"><h4>{L_WHO_IS_ONLINE}</h4></td>
    </tr>
    <tr>
        <td class="row1"><p class="gensmall">{LOGGED_IN_USER_LIST}</p></td>
    </tr>
    </table>
<!-- ENDIF -->

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 10:45
von forant
(habe nur prosilver-styles)

Danke, Stelle gefunden

In der index_body.html steht:
<!-- IF LEGEND -->&bull; {L_LEGEND}: {LEGEND}<!-- ENDIF -->
und funktioniert ja auch. :P
wenn ich diesen Syntax via Drag & Drop in der viewtopic_body.html eingebe, wird mir nichts angezeigt. :evil:

Gebe ich
&bull; {L_LEGEND}: {LEGEND}
ein, wird das &bull; {L_LEGEND} angezeigt :P , aber nicht das {LEGEND} :evil:

woran liegt dies? :roll: da kann man doch eigentlich nichts falsch machen - oder doch? :-?

(Styles aktualisieren und Cache leeren sind selbstverständlich)

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 11:09
von Frank1604
mdietrich hat geschrieben:

Code: Alles auswählen

<!-- IF LEGEND -->&bull; {L_LEGEND}: {LEGEND}<!-- ENDIF -->
Das kann so nicht in der Beitragsansicht funktionieren. Dieses ist für die Anzeige der Gruppen in der Forenübersicht zuständig. Die Daten dafür werden in der index.php generiert. Betrachtest du einen Beitrag, wird aber die viewtopic.php aufgerufen. Deshalb trift "<!-- IF LEGEND -->" nicht zu, und der Teil wird nicht angezeigt.

Was genau hast du denn vor?

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 12:31
von forant
Frank1604 hat geschrieben:Was genau hast du denn vor?
Wie im Eingangsposting
Begründung: ich möchte die Legende dort aufführen.
somit sieht der User, nicht nur wer den Beitrag geschrieben hat, sondern hat auch gleich (ohne zurück blättern) die Farblegende, an Hand er sehen kann zu welcher Gruppe der Autor gehört.

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 13:33
von Frank1604
Dann musst du die Daten auch in der viewtopic.php generieren.

finde:

Code: Alles auswählen

// This is only used for print view so ... 
danach füge ein:

Code: Alles auswählen

// Grab group details for legend display
if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
{
    $sql = 'SELECT group_id, group_name, group_colour, group_type
        FROM ' . GROUPS_TABLE . '
        WHERE group_legend = 1
        ORDER BY group_name ASC';
}
else
{
    $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type
        FROM ' . GROUPS_TABLE . ' g
        LEFT JOIN ' . USER_GROUP_TABLE . ' ug
            ON (
                g.group_id = ug.group_id
                AND ug.user_id = ' . $user->data['user_id'] . '
                AND ug.user_pending = 0
            )
        WHERE g.group_legend = 1
            AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ')
        ORDER BY g.group_name ASC';
}
$result = $db->sql_query($sql);

$legend = array();
while ($row = $db->sql_fetchrow($result))
{
    $colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : '';
    $group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];

    if ($row['group_name'] == 'BOTS' || ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')))
    {
        $legend[] = '<span' . $colour_text . '>' . $group_name . '</span>';
    }
    else
    {
        $legend[] = '<a' . $colour_text . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']) . '">' . $group_name . '</a>';
    }
}
$db->sql_freeresult($result);

$legend = implode(', ', $legend);
 
finde:

Code: Alles auswählen

'TOPIC_POSTER'    => $topic_data['topic_poster'], 
danach füge ein:

Code: Alles auswählen

'LEGEND'        => $legend, 
Danach kannst du in der viewtopic_body.html diese Zeile hier verwenden:

Code: Alles auswählen

<!-- IF LEGEND -->&bull; {L_LEGEND}: {LEGEND}<!-- ENDIF -->

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 14:13
von forant
SUPER - klappt perfekt im viewtopic - das sind halt die Profis :wink:
dafür meinen herzlichen Dank :P

Kann man das mit der viewforum auch machen? Wie? :-?

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 14:20
von Frank1604
Klar, da sieht das dann genauso aus, nur eben mit der viewforum_body.html und der viewforum.php

finde in viewforum.php:

Code: Alles auswählen

// Display active topics? 
davor füge ein:

Code: Alles auswählen

// Grab group details for legend display
if ($auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel'))
{
    $sql = 'SELECT group_id, group_name, group_colour, group_type
        FROM ' . GROUPS_TABLE . '
        WHERE group_legend = 1
        ORDER BY group_name ASC';
}
else
{
    $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type
        FROM ' . GROUPS_TABLE . ' g
        LEFT JOIN ' . USER_GROUP_TABLE . ' ug
            ON (
                g.group_id = ug.group_id
                AND ug.user_id = ' . $user->data['user_id'] . '
                AND ug.user_pending = 0
            )
        WHERE g.group_legend = 1
            AND (g.group_type <> ' . GROUP_HIDDEN . ' OR ug.user_id = ' . $user->data['user_id'] . ')
        ORDER BY g.group_name ASC';
}
$result = $db->sql_query($sql);

$legend = array();
while ($row = $db->sql_fetchrow($result))
{
    $colour_text = ($row['group_colour']) ? ' style="color:#' . $row['group_colour'] . '"' : '';
    $group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];

    if ($row['group_name'] == 'BOTS' || ($user->data['user_id'] != ANONYMOUS && !$auth->acl_get('u_viewprofile')))
    {
        $legend[] = '<span' . $colour_text . '>' . $group_name . '</span>';
    }
    else
    {
        $legend[] = '<a' . $colour_text . ' href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&g=' . $row['group_id']) . '">' . $group_name . '</a>';
    }
}
$db->sql_freeresult($result);

$legend = implode(', ', $legend);
  
finde in viewforum.php:

Code: Alles auswählen

'GOTO_PAGE_IMG'                => $user->img('icon_post_target', 'GOTO_PAGE'), 
danach füge ein:

Code: Alles auswählen

'LEGEND'        => $legend,  
Danach kannst du in der viewforum_body.html wieder die Zeile

Code: Alles auswählen

<!-- IF LEGEND -->&bull; {L_LEGEND}: {LEGEND}<!-- ENDIF -->
benutzen.

Re: Anzeige: Benutzer in diesem Forum

Verfasst: 25.08.2010 14:41
von forant
Perfekt :P
meinen herzlichen Dank für die schnelle und kompetente Hilfe

Greatings