"Das Team" für Gäste einsehbar machen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
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 phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
dom_beta
Mitglied
Beiträge: 142
Registriert: 29.11.2014 06:39

"Das Team" für Gäste einsehbar machen

Beitragvon dom_beta » 14.01.2015 09:37

Hallo,

wie kann man "Das Team" für Gäste einsehbar machen?

Danke
....

Benutzeravatar
HabNurNeFrage
Ehemaliger
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: "Das Team" für Gäste einsehbar machen

Beitragvon HabNurNeFrage » 14.01.2015 13:36

Hi,

ohne weitere Veränderungen über die Berechtigungen geht es nur, wenn Du Gästen den Zugriff auf alle User-Profile erlaubst.
Eine einzelne Berechtigung nur für ./memberlist.php?mode=leaders gibt es nicht.

Du kannst Dir eine einfache Mod in Form einer zusätzlichen Seite dafür selbst erstellen:

Speichere Folgendes als teampage.php

Code: Alles auswählen

<?php

define
('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include(
$phpbb_root_path . 'common.' . $phpEx);
include(
$phpbb_root_path . 'includes/functions_display.' . $phpEx);
include(
$phpbb_root_path . 'includes/functions_user.' . $phpEx);

$user->session_begin();
$auth->acl($user->data);
$user->setup(array('memberlist', 'groups'));


$user_ary = $auth->acl_get_list(false, array('a_', 'm_'), false);

$admin_id_ary = $global_mod_id_ary = $mod_id_ary = $forum_id_ary = array();
foreach ($user_ary as $forum_id => $forum_ary)
{
    foreach ($forum_ary as $auth_option => $id_ary)
    {
        if (!$forum_id)
        {
            if ($auth_option == 'a_')
            {
                $admin_id_ary = array_merge($admin_id_ary, $id_ary);
            }
            else
            
{
                $global_mod_id_ary = array_merge($global_mod_id_ary, $id_ary);
            }
            continue;
        }
        else
        
{
            $mod_id_ary = array_merge($mod_id_ary, $id_ary);
        }

        if ($forum_id)
        {
            foreach ($id_ary as $id)
            {
                $forum_id_ary[$id][] = $forum_id;
            }
        }
    }
}

$admin_id_ary = array_unique($admin_id_ary);
$global_mod_id_ary = array_unique($global_mod_id_ary);

$mod_id_ary = array_merge($mod_id_ary, $global_mod_id_ary);
$mod_id_ary = array_unique($mod_id_ary);

// Admin group id...
$sql = 'SELECT group_id
    FROM '
 . GROUPS_TABLE . "
    WHERE group_name = 'ADMINISTRATORS'"
;
$result = $db->sql_query($sql);
$admin_group_id = (int) $db->sql_fetchfield('group_id');
$db->sql_freeresult($result);

// Get group memberships for the admin id ary...
$admin_memberships = group_memberships($admin_group_id, $admin_id_ary);

$admin_user_ids = array();

if (!empty($admin_memberships))
{
    // ok, we only need the user ids...
    foreach ($admin_memberships as $row)
    {
        $admin_user_ids[$row['user_id']] = true;
    }
}
unset(
$admin_memberships);

$sql = 'SELECT forum_id, forum_name
    FROM '
 . FORUMS_TABLE;
$result = $db->sql_query($sql);

$forums = array();
while ($row = $db->sql_fetchrow($result))
{
    $forums[$row['forum_id']] = $row['forum_name'];
}
$db->sql_freeresult($result);

$sql = $db->sql_build_query('SELECT', array(
    'SELECT'    => 'u.user_id, u.group_id as default_group, u.username, u.username_clean, u.user_colour, u.user_rank, u.user_posts, u.user_allow_pm, g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id as ug_user_id',

    'FROM'        => array(
        USERS_TABLE        => 'u',
        GROUPS_TABLE    => 'g'
    ),

    'LEFT_JOIN'    => array(
        array(
            'FROM'    => array(USER_GROUP_TABLE => 'ug'),
            'ON'    => 'ug.group_id = g.group_id AND ug.user_pending = 0 AND ug.user_id = ' . $user->data['user_id']
        )
    ),

    'WHERE'        => $db->sql_in_set('u.user_id', array_unique(array_merge($admin_id_ary, $mod_id_ary)), false, true) . '
        AND u.group_id = g.group_id'
,

    'ORDER_BY'    => 'g.group_name ASC, u.username_clean ASC'
));
$result = $db->sql_query($sql);

while ($row = $db->sql_fetchrow($result))
{
    $which_row = (in_array($row['user_id'], $admin_id_ary)) ? 'admin' : 'mod';

    // We sort out admins not within the 'Administrators' group.
    // Else, we will list those as admin only having the permission to view logs for example.
    if ($which_row == 'admin' && empty($admin_user_ids[$row['user_id']]))
    {
        // Remove from admin_id_ary, because the user may be a mod instead
        unset($admin_id_ary[array_search($row['user_id'], $admin_id_ary)]);

        if (!in_array($row['user_id'], $mod_id_ary) && !in_array($row['user_id'], $global_mod_id_ary))
        {
            continue;
        }
        else
        
{
            $which_row = 'mod';
        }
    }

    $s_forum_select = '';
    $undisclosed_forum = false;

    if (isset($forum_id_ary[$row['user_id']]) && !in_array($row['user_id'], $global_mod_id_ary))
    {
        if ($which_row == 'mod' && sizeof(array_diff(array_keys($forums), $forum_id_ary[$row['user_id']])))
        {
            foreach ($forum_id_ary[$row['user_id']] as $forum_id)
            {
                if (isset($forums[$forum_id]))
                {
                    if ($auth->acl_get('f_list', $forum_id))
                    {
                        $s_forum_select .= '<option value="">' . $forums[$forum_id] . '</option>';
                    }
                    else
                    
{
                        $undisclosed_forum = true;
                    }
                }
            }
        }
    }

    // If the mod is only moderating non-viewable forums we skip the user. There is no gain in displaying the person then...
    if (!$s_forum_select && $undisclosed_forum)
    {
//                $s_forum_select = '<option value="">' . $user->lang['FORUM_UNDISCLOSED'] . '</option>';
        continue;
    }

    // The person is moderating several "public" forums, therefore the person should be listed, but not giving the real group name if hidden.
    if ($row['group_type'] == GROUP_HIDDEN && !$auth->acl_gets('a_group', 'a_groupadd', 'a_groupdel') && $row['ug_user_id'] != $user->data['user_id'])
    {
        $group_name = $user->lang['GROUP_UNDISCLOSED'];
        $u_group = '';
    }
    else
    
{
        $group_name = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name'];
        $u_group = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $row['group_id']);
    }

    $rank_title = $rank_img = '';
    get_user_rank($row['user_rank'], (($row['user_id'] == ANONYMOUS) ? false : $row['user_posts']), $rank_title, $rank_img, $rank_img_src);

    $template->assign_block_vars($which_row, array(
        'USER_ID'        => $row['user_id'],
        'FORUMS'        => $s_forum_select,
        'RANK_TITLE'    => $rank_title,
        'GROUP_NAME'    => $group_name,
        'GROUP_COLOR'    => $row['group_colour'],

        'RANK_IMG'        => $rank_img,
        'RANK_IMG_SRC'    => $rank_img_src,

        'U_GROUP'            => $u_group,
        'U_PM'                => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($row['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;u=' . $row['user_id']) : '',

        'USERNAME_FULL'        => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
        'USERNAME'            => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
        'USER_COLOR'        => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
        'U_VIEW_PROFILE'    => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
    ));
}
$db->sql_freeresult($result);

$template->assign_vars(array(
    'PM_IMG'        => $user->img('icon_contact_pm', $user->lang['SEND_PRIVATE_MESSAGE']))
);

$template->assign_block_vars('navlinks', array(
    'FORUM_NAME' => 'Unser Team', 
    
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}teampage.$phpEx")));

page_header('Unser Team');

$template->set_filenames(array(
    'body' => 'teampage_body.html'
    ));

make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));

page_footer();

?>

Die Datei ins Forumroot hochladen.

Kopiere die Datei ./styles/<dein_stylename>/template/memberlist_leaders.html und speichere im selben Ordner als teampage_body.html

Nun kannst Du an beliebigen Stellen im Template (z.B. in overall_header.html oder overall_footer.html) Links zu dieser neuen Seite setzen:
<a href="./teampage.php">{L_THE_TEAM}</a>

Oder/und Du änderst den originalen Link zum Team in overall_footer.html:
Dort finden: <a href="{U_TEAM}">{L_THE_TEAM}</a> und mit dem zuvor genannten Link ersetzen.

Demo: http://bild4.bplaced.net/phpbb/ => da unten auf "Das Team" klicken.

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };

Verschoben von [3.0.x] Administration und Benutzung nach [3.0.x] Mod Bastelstube am 14.01.2015 13:56 durch HabNurNeFrage

Benutzeravatar
Elsensee
Website-Team
Website-Team
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: "Das Team" für Gäste einsehbar machen

Beitragvon Elsensee » 14.01.2015 18:06

Oder: :D :P

Du öffnest: memberlist.php
Suchst: (ziemlich am Anfang..)

Code: Alles auswählen

case 'email':
break; 
Und fügst davor ein:

Code: Alles auswählen

case 'leaders'
:)
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)

Benutzeravatar
HabNurNeFrage
Ehemaliger
Beiträge: 1627
Registriert: 17.01.2010 20:22
Wohnort: An der Ostsee
Kontaktdaten:

Re: "Das Team" für Gäste einsehbar machen

Beitragvon HabNurNeFrage » 14.01.2015 19:37

Hi,

funktioniert bestens:
http://bild4.bplaced.net/phpbb/memberlist.php?mode=leaders

Aber warum einfach, wenns auch umständlich geht? :wink: :lol:

LG
| HomeStory.org - the friendly Community | Forum für alle Lebenslagen | <"}))}~ | Nicht nachmachen: Meine phpBB Spielereien |
var shoppen = geld.replace (/geld/g, 'bloedsinn'); if (geld < 1) { return home; };

dom_beta
Mitglied
Beiträge: 142
Registriert: 29.11.2014 06:39

Re: "Das Team" für Gäste einsehbar machen

Beitragvon dom_beta » 08.08.2015 05:05

Elsensee hat geschrieben:Oder: :D :P

Du öffnest: memberlist.php
Suchst: (ziemlich am Anfang..)

Code: Alles auswählen

case 'email':
break;
Und fügst davor ein:

Code: Alles auswählen

case 'leaders':
:)


ähm, irgendwie funktioniert das nicht


switch ($mode)
{
case 'leaders':
case 'email':
case 'contactadmin':
break;

....

Benutzeravatar
waldkatze
Ehemaliger
Beiträge: 663
Registriert: 08.03.2013 21:50
Wohnort: Oberlausitz

Re: "Das Team" für Gäste einsehbar machen

Beitragvon waldkatze » 08.08.2015 06:44

Du hast warscheinlich die falsche Stelle im Code geändert.

Suche in der memberlist.php:

Code: Alles auswählen

// Check our mode...
if (!in_array($mode, array('', 'group', 'viewprofile', 'email', 'contact', 'searchuser', 'leaders')))
{
    trigger_error('NO_MODE');


Danach müßte dann das stehen:

Code: Alles auswählen

switch ($mode)
{
    case 'leaders':
    case 'email':
    break;

    default:
        // Can this user view profiles/memberlist?
        if (!$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
        {
            if ($user->data['user_id'] != ANONYMOUS)
            {
                trigger_error('NO_VIEW_USERS');
            }

            login_box('', ((isset($user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)])) ? $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)] : $user->lang['LOGIN_EXPLAIN_MEMBERLIST']));
        }
    break;
}
Motorrad fahren, ist die schönste Sache die man angezogen machen kann...
Kein Support per PN oder Mail. Meine MODS / Extensions für phpBB

dom_beta
Mitglied
Beiträge: 142
Registriert: 29.11.2014 06:39

Re: "Das Team" für Gäste einsehbar machen

Beitragvon dom_beta » 08.08.2015 17:15

funktioniert immer noch nicht?!

Code: Alles auswählen

// Check our mode...
if (!in_array($mode, array('', 'group', 'viewprofile', 'email', 'contact', 'contactadmin', 'searchuser', 'team', 'livesearch')))
{
   trigger_error('NO_MODE');
}

switch ($mode)
{
   case 'email':
   case 'contactadmin':
   break;

   case 'livesearch':
      if (!$config['allow_live_searches'])
      {
         trigger_error('LIVE_SEARCHES_NOT_ALLOWED');
      }
      // No break

   default:
        // Can this user view profiles/memberlist?
        if (!$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
        {
            if ($user->data['user_id'] != ANONYMOUS)
            {
                trigger_error('NO_VIEW_USERS');
            }

            login_box('', ((isset($user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)])) ? $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)] : $user->lang['LOGIN_EXPLAIN_MEMBERLIST']));
        }
   break;
}
....

Benutzeravatar
redbull254
Valued Contributor
Beiträge: 10362
Registriert: 05.01.2006 13:01
Kontaktdaten:

Re: "Das Team" für Gäste einsehbar machen

Beitragvon redbull254 » 08.08.2015 17:39

Hallo erstmal,


aktualisierst Du auch die Cache ? Hier mal eine Anleitung dazu:

Dein Style muss noch in der Datenbank aktualisiert werden!

Voraussetzung ist hierbei, das die Dateien zur Änderung herunter geladen und nach der Änderung wieder ins
phpBB-Verzeichnis geladen wurden. Anderfalls würden die im ACP gemachten Änderungen in der Datenbank
wieder mit den alten Werten überschrieben.

Gehe dazu folgende Schritt durch:

ACP --> Styles --> Style-Komponenten --> Themes
ACP --> Styles --> Style-Komponenten --> Templates
ACP --> Styles --> Style-Komponenten --> Grafiksammlungen

Dort angekommen, klicke jeweils auf den Link „Aktualisieren“

Nach den Aktualisierungen gehe zurück auf den ACP Index ( ACP --> Allgemein ) und klicke
bei „Den Cache leeren" auf den Button „Jetzt ausführen“.

Bei manchen Browsern ist es zusätzlich nötig, den Browser Cache zu löschen. ( Meistens mit STRG + F5 )

Alternative Möglichkeit (Nur für den kurzzeitigen Gebrauch gedacht):

ACP --> Allgemein --> Serverlast --> Rekompilieren veralteter Style-Komponenten: JA einstellen.

Das sollte aber hinterher wieder zurück gestellt werden. (Sonst unter anderem große Serverlast)

Der Cache muss aber trotzdem geleert werden.

Hinweis:
Beim Style „subsilver“ brauchen die Style-Komponenten --> Themes nicht aktualisiert werden.
Macht man dies trotzdem, kommt folgende Fehlermeldung:
„Dieses Theme ist im Dateisystem gespeichert. Daher gibt es keinen Grund, es zu aktualisieren.“

Benutzeravatar
waldkatze
Ehemaliger
Beiträge: 663
Registriert: 08.03.2013 21:50
Wohnort: Oberlausitz

Re: "Das Team" für Gäste einsehbar machen

Beitragvon waldkatze » 08.08.2015 18:49

funktioniert immer noch nicht?!


Das kann so auch nicht funktionieren.
Ich sehe in deinem Code die Zeile case 'leaders': nicht.
Ändere doch mal den Code so wie ich dir oben schon gezeigt habe.

Code: Alles auswählen

switch ($mode)
{
    case 'leaders': // Das musst du noch einfügen !!!
    case 'email':
    break;

    default:
        // Can this user view profiles/memberlist?
        if (!$auth->acl_gets('u_viewprofile', 'a_user', 'a_useradd', 'a_userdel'))
        {
            if ($user->data['user_id'] != ANONYMOUS)
            {
                trigger_error('NO_VIEW_USERS');
            }

            login_box('', ((isset($user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)])) ? $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)] : $user->lang['LOGIN_EXPLAIN_MEMBERLIST']));
        }
    break;
Motorrad fahren, ist die schönste Sache die man angezogen machen kann...
Kein Support per PN oder Mail. Meine MODS / Extensions für phpBB

Benutzeravatar
Elsensee
Website-Team
Website-Team
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: "Das Team" für Gäste einsehbar machen

Beitragvon Elsensee » 09.08.2015 02:13

Für den Fall, dass es sich bei dir um ein phpBB 3.1.x handelt, muss dort nicht leaders, sondern team stehen. :)
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)


Zurück zu „[3.0.x] Mod Bastelstube“