Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Gruppenzugehörige auf Indexseite auslesen
#1
Hallöle Smile
Ich habe im Forum verschiedene Gruppen und würde gern deren Mitgliederanzahl auf der Indexseite in einer Legende auslesen lassen. Also zb:

Bewerber [23], Einwohner [12] usw Smile wäre das möglich?
Zitieren
#2
Da kannst die Anzahl der Mitglieder einer Usergruppe X in der index.php mit folgendem query abfragen/ermitteln
Code:
SELECT count(*) FROM `mybb_users` WHERE usergroup = X

Das jeweils mit einer Variablen versehen und Du kannst es im entsprechenden Template der Startseite einbauen.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#3
Also bei "X" würde ich dann die Id der Gruppe angeben?
Und mit welchem Code würde ich das in die Index.tpl einbauen?
Zitieren
#4
Habe gerade diesen Beitrag gefunden. Da geht es zwar generell um ein anderes Thema, der Ansatz ist aber ähnlich. Vielleicht hilft es Dir erst mal weiter....
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#5
Mh, danke für den Link - aber das betrifft ja generell eine ganz andere Funktion. Ich weiß nicht, wie ich die Gruppe der User auslesen kann? :/ Da geht es ja um die Pns.
Zitieren
#6
Ich sagte ja, dass der Beitrag ein anderes Thema behandelt. Das Prinzip ist aber selbiges.
Die Abfrage für die Anzahl der User in einer Usergruppe (X steht für die ID der Gruppe) kannst Du dem Beitrag #2 entnehmen. Wie das PHP-seitig umgesetzt wird, siehst Du als Beispiel in dem von mir verlinkten Beitrag. Der Rest ist mehr oder weniger Code ersetzen und die Variable (die Du auch gerne umbenennen kannst) ins Template einsetzen.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#7
Habe jetzt mal etwas zusammen gestellt. Ist nicht optimal, funktioniert aber....

Suche in der index.php
PHP-Code:
$plugins->run_hooks("index_start"); 
und setze danach diese Zeilen ein
PHP-Code:
$groups $cache->read("usergroups");

$query $db->query("
SELECT usergroup, COUNT(*) AS count
FROM "
.TABLE_PREFIX."users
GROUP BY usergroup
"
);

while(
$groupcount $db->fetch_array($query)){
  
  
$ugroup htmlspecialchars_uni($groups[$groupcount['usergroup']]['title']." [{$groupcount['count']}]")."   ";

  eval(
"\$show_usergroup_name_number .= \"".$templates->get("show_usergroup_name_number")."\";");
}

eval(
"\$show_usergroup = \"".$templates->get("show_usergroup")."\";"); 

Dann musst du noch 2 Templates erstellen.

Ein Template mit dem Namen show_usergroup und dem Inhalt
Code:
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
    <thead>
        <tr>
            <td class="thead">
                <div class="expcolimage"><img src="{$theme['imgdir']}/collapse{$collapsedimg['show_usergroup']}.gif" id="show_usergroup_img" class="expander" alt="[-]" title="[-]" /></div>
                <div><strong>Usergroups</strong></div>
            </td>
        </tr>
    </thead>
    <tbody style="{$collapsed['show_usergroup_e']}" id="show_usergroup_e">
        <tr class="trow1">
            <td>{$show_usergroup_name_number}</td>
        </tr>
    </tbody>
</table>
<br />

Und ein Template mit dem Namen show_usergroup_name_number und dem Inhalt
Code:
{$ugroup}

Im Template index kannst Du dann die Variable {$show_usergroup} an der Stelle einsetzen, an der Du die Anzeige haben möchtest. Anpassungen bzgl. Layout kannst Du in den beiden Templates vornehmen oder auch in der Zeile
PHP-Code:
$ugroup .= $names['title']." [".$counts['countusers']."]&nbsp;&nbsp;&nbsp;"
des o.a. Codes.



Edit1: vielen Dank an Stefan, der die Abfrage in der index.php um einiges vereinfachen konnte! Smile Den Code habe ich oben korrigiert.

Edit2: habe das Template noch um einen Table und der Collapse-Fkt. ergänzt
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#8
Ah, super. Das funktioniert. Hatte einen anderen Ansatz, aber der funktionierte nicht Big Grin. Danke schonmal!

Jetzt aber noch eine Frage: Ist es möglich Gruppen zusammen zu fassen? Also wenn ich zum Beispiel die Gruppe Admin_LA habe und die Gruppe LA, dann würde es ja die Mitglieder für die Gruppe Admin_LA und die für Gruppe LA einzeln auslesen, gibt es eine Möglichkeit, diese beiden Gruppen zusammen anzusprechen?

Das dann in der Legende halt steht: LA [23] anstatt LA [12], Admin_LA [11] ? Smile
Zitieren
#9
Sprichst Du da von sekundären Gruppen? Welche Gruppe soll dann welche Priorität haben?
Verstehe das nicht ganz.... Undecided
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#10
Theoretisch wäre es möglich, jedoch wäre es mit einem hohen Programmieraufwand verbunden.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Neuste 5 Registrierungen anzeigen - Indexseite Seven 8 2.560 30.08.2015, 16:15
Letzter Beitrag: MrBrechreiz