Seite 1 von 1

Profil-Symbolbildchen für Gruppenmitglieder?

Verfasst: 31.08.2015 00:59
von ill66
Da, soweit ich das überblicke, das nicht mit Boardmitteln geht, gehört meine Frage wohl hier hinein.

Ich hätte gern, dass für bestimmte Nutzergruppen (also selbsterstellte) ein kleines Icon/Grafik im Userblock abgebildet ist. (heißt das Userblock? Ich meine da, wo Avatar, Nutzername, Rang usw. steht, rechts neben dem Posting^^)

Also z.B. sowas wie ein kleiner Stern neben dem Nickname oder vlt. auch unterhalb des Rangs oder neben den Icons für PN/Website/Email.

Bei Rängen gibt es so ein Feature glaube ich, aber da nützt es mir nichts, da man ja immer nur einen Rang haben kann. Ein gruppenbezogener Avatar ist auch nicht, was ich will^^

Versteht man, was ich meine? Meine Eloquenz ist heute nicht in Top-Form, irgendwie :-?

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Verfasst: 31.08.2015 09:16
von Lehrling
eine Möglichkeit wäre die http://area51.phpbb.com/phpBB/viewtopic ... 26&t=31581:
du öffnest die Datei includes/functions.php und suchst nach

Code: Alles auswählen

	// application/xhtml+xml not used because of IE
DAVOR fügst du dann diesen Abschnitt ein

Code: Alles auswählen

	// Check what group a user is in
	if ( !function_exists('group_memberships') )
	{
		include_once($phpbb_root_path . 'includes/functions_user.'.$phpEx);
	}

	$groups = group_memberships(false,$user->data['user_id']);
	foreach ($groups as $grouprec)
	{
		$template->assign_vars(array(
			'S_IN_GROUP_' . $grouprec['group_id'] => true
		));
	}
Du lädst deine Grafik in den Ordner theme/images.

Nun öffnest du die Datei viewtopic_body.html (im Ordner template deines Styles) und suchst nach

Code: Alles auswählen

<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
DANACH fügst du in einer neuen Zeile den Abschnitt ein:

Code: Alles auswählen

&nbsp;<!-- IF S_IN_GROUP_X --><img src="http://www_deineURL_/theme/images/grafik.png"><!-- ENDIF -->
In IF S_IN_GROUP_X musst du das X durch die ID der jeweiligen Gruppe ersetzen.
Die kannst du herausfinden, indem du in den Administrationsbereich zu Benutzer und Gruppen/Gruppen verwalten gehst und dort dann mit der Maus über Einstellungen fährst. Unten werden dir Informationen angezeigt. Ganz hinten steht dann g=1 beispielsweise. Die 1 ist also die ID der jeweiligen Gruppe.

Verfasst: 01.09.2015 01:59
von ill66
@Lehrling:
Vielen Dank! :) :)
Bin auch schon ganz nah dran^^ Gibt nur den Haken: Das Symbol wird jetzt bei ALLEN Usern angezeigt, aus irgendeinem Grund. (Gruppen-Id ist gesetzt und hab sie auch dreimal überprüft)

So sieht der Codeblock jetzt bei mir aus:

Code: Alles auswählen

<dt>
				<!-- IF postrow.POSTER_AVATAR -->
					<!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}">{postrow.POSTER_AVATAR}</a><!-- ELSE -->{postrow.POSTER_AVATAR}<!-- ENDIF --><br />
				<!-- ENDIF -->
				<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
				&nbsp;<!-- IF S_IN_GROUP_14 --><img src="styles/prosilver/theme/images/grafik.png"><!-- ENDIF -->
			</dt>
Hat sich da ein Fehler eingeschlichen?

Und wo wir grade dabei sind: Wenn ich unterschiedliche Symbole für verschiedene Gruppen machen will, würde ich da für jede ein extra Zeile wie die letzte einfügen ( &nbsp;<!-- IF ... ENDIF --> ) oder integriert man das irgendwie in einen Befehl?

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Verfasst: 01.09.2015 08:21
von Lehrling
oops ja, da stimmt etwas nicht bzw. fehlt noch etwas. :oops:
Zusätzlich zu den Änderungen an der includes/functions.php, die du ja schon vorgenommen hast, kommen noch folgende Änderungen hinzu.
Öffne die Datei viewtopic.php und finde diese Stelle:

Code: Alles auswählen

'joined'		=> $user->format_date($row['user_regdate']),
Danach fügst du in einer neuen Zeile diese Zeile ein:

Code: Alles auswählen

'user_group_id'         => $row['group_id'],
Immer noch in der viewtopic.php suchst du nach

Code: Alles auswählen

'POSTER_AGE'		=> $user_cache[$poster_id]['age'],
und fügst danach in einer neuen Zeile diese Zeile ein:

Code: Alles auswählen

'AUTHOR_GROUP_ID'       => $user_cache[$poster_id]['user_group_id'],
In der viewtopic_body.html musst du nun
<!-- IF S_IN_GROUP_X --> zu IF postrow.AUTHOR_GROUP_ID eq X --> machen.
Das X steht für die ID der Gruppe.
Wenn du mehrere Grafiken für mehrere Gruppen hast, dann sieht dein Code für die viewtopic_body.html so aus:

Code: Alles auswählen

&nbsp;
<!-- IF postrow.AUTHOR_GROUP_ID eq 2 --><img src="deine_URL/forum/styles/prosilver/theme/images/grafik1.png">
<!-- ELSEIF postrow.AUTHOR_GROUP_ID eq 3 --><img src="deine_URL/forum/styles/prosilver/theme/images/grafik2.png">
<!-- ELSEIF postrow.AUTHOR_GROUP_ID eq 4 --><img src="deine_URL/forum/styles/prosilver/theme/images/grafik3.png">
<!-- ENDIF -->
Die IDs der Gruppen und die Namen der Grafiken musst du natürlich anpassen.

Viel Erfolg.

Verfasst: 01.09.2015 22:38
von ill66
Haha, kein Wunder bin ich da nicht selber draufgekommen, als ich gestern stümperhaft herumprobiert habe :D

Leider klappt es immer noch nicht... habe ich einen Fehler eingebaut?
So sieht es jetzt aus:
viewtopic_body.html (habs an eine andere Position gesetzt):

Code: Alles auswählen

<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG --><dd>{postrow.RANK_TITLE}<!-- IF postrow.RANK_TITLE and postrow.RANK_IMG --><br /><!-- ENDIF -->{postrow.RANK_IMG}</dd><!-- ENDIF -->
			
		<!-- Gruppensymbole <dd>&nbsp;</dd> -->
		<dd><!-- IF postrow.AUTHOR_GROUP_ID eq 13 --><img style="margin:4px 0px" src="styles/prosilver/theme/images/grafik1.png" />
		<!-- ELSEIF postrow.AUTHOR_GROUP_ID eq 14 --><img style="margin:4px 0px" src="styles/prosilver/theme/images/grafik2.png" /> 
		<!-- ENDIF -->&nbsp;</dd>
viewtopic.php:

Code: Alles auswählen

$user_cache[$poster_id] = array(
				'joined'		=> $user->format_date($row['user_regdate'],'d.m.Y'),
				 //Gruppensymbole 1Z.
				'user_group_id'         => $row['group_id'],

Code: Alles auswählen

'POSTER_AGE'		=> $user_cache[$poster_id]['age'],
		//Gruppenymbole 1Z.
		'AUTHOR_GROUP_ID'       => $user_cache[$poster_id]['user_group_id'],

Re:

Verfasst: 01.09.2015 23:37
von ill66
NACHTRAG:
Wie ich mir grade hab sagen lassen, haut das wohl (auch) nicht hin, weil die angesteuerte Gruppe nicht die Hauptgruppe der User ist... (die ist bei alle "Registrierte User")

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Verfasst: 02.09.2015 13:35
von Lehrling
und wenn du schlicht und ergreifend die andere Gruppe zur Hauptgruppe der Benutzer machst?

Verfasst: 03.09.2015 14:19
von ill66
Nee, das passt nicht so... da sind ja auch Mods in den Gruppen und die sollen sowohl das Bildchen bekommen, als auch ihren Haupstatus behalten^^

(außerdem hab ichs grad einmal kurz ausprobiert und das scheint trotzdem nicht hinzuhauen)

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Verfasst: 03.09.2015 15:41
von Talk19zehn
Hm, ... daran hatten sich etliche Anwender bereits die Zähne ausgebissen... ( Scherz ). :wink: Könntet ihr nicht doch über $poster_id gehen?

.. Grübel ...

Ich persönlich gehe einfachere Wege, die zwar zunächst beim Einrichten Aufwand bedeuten, wenn es sich in deinem Falle oder in anderen Fällen um sehr viele Benutzer handeln sollte, ist´s ggf. gar nicht zweckmäßig:

viewtopic.php?p=1293032#p1293032

oder eventuell ... doch per ... $poster_id?
http://www.ongray-design.de/forum/viewt ... afik#p2086

Das ist nur eine ganz kleine Auswahl zum Thema, die mir die Suche ausgab. Leider finde ich nicht alle Themen, die deine Frage behandeln. Modernist und Nuramon hatten neben Miriam u.a. meines Erachtens Lösungsvorschläge ( je nach Anfrage ).

LG

Verfasst: 12.09.2015 23:06
von ill66
Mein boardeigener IT-Magic-Wizard hat mir übrigens mittlerweile zur Lösung verholfen - nur falls das für Nachfolgende noch von Interesse sein sollte:
Die Änderungen an der Datei includes/functions.php [also die Änderungen, die hier früher im Thread vorgeschlagen wurden] kannst du wieder rückgängig machen.

In der Datei viewtopic.php kannst du diese beiden Zeile wieder löschen:

Code: Alles auswählen

'user_group_id'         => $row['group_id'],

Code: Alles auswählen

'AUTHOR_GROUP_ID'       => $user_cache[$poster_id]['user_group_id'],
Stattdessen fügst du in der Datei viewtopic.php oberhalb dieser Zeilen:

Code: Alles auswählen

// Load custom profile fields
if ($config['load_cpf_viewtopic'])
diesen Code ein:

Code: Alles auswählen

/* MOD Gruppensymbole */
// include necessary function file
if (!function_exists('group_memberships'))
{
	include($phpbb_root_path . 'includes/functions_user.'.$phpEx);
}
// get the groups of all members that posted in this topic
$groups_of_posters = group_memberships(false, $id_cache);

// this returns an array of arrays that contain more information than we need, so let's reduce this
// to an array of user_ids => array(group_ids)
$user_in_groups_cache = array();
foreach ($groups_of_posters as $value)
{
	if (!isset($value['user_id']) || !isset($value['group_id']))
	{
		continue;
	}

	if (!isset($user_in_groups_cache[$value['user_id']]))
	{
		// create a new array in the cache
		$user_in_groups_cache[$value['user_id']] = array($value['group_id']);
	}
	else
	{
		// add the group_id to the existing array
		$user_in_groups_cache[$value['user_id']][] = $value['group_id'];
	}
}
/* END MOD */
Damit wird für alle Mitglieder, die im aktuell angezeigten Topic einen Beitrag erstellt haben, ermittelt, in welchen Gruppen sie Mitglied sind. Die Abfrage wird nur ein einziges Mal ausgeführt, nicht in einer Schleife (um Performance zu sparen). Das Ergebnis der Abfrage wird für die Ausgabe später zwischengespeichert.

Für die Ausgabe fügst du weiter unten in der Datei viewtopic.php unterhalb von dem hier:

Code: Alles auswählen

'POSTER_AGE'		=> $user_cache[$poster_id]['age'],
diesen Code ein - Achtung: den musst du noch anpassen!

Code: Alles auswählen

/* MOD Gruppensymbole */
		'S_POSTER_IN_GROUP_8'	=> (isset($user_in_groups_cache[$poster_id]) && in_array(8, $user_in_groups_cache[$poster_id]) ? true : false),
		'S_POSTER_IN_GROUP_9'	=> (isset($user_in_groups_cache[$poster_id]) && in_array(9, $user_in_groups_cache[$poster_id]) ? true : false),
/* END MOD */
Die Anpassung besteht darin, dass du für jede Gruppe, die ein Icon erhalten soll, eine Zeile änderst bzw. hinzufügst. In diesem Beispiel sollen die Gruppen mit den IDs 8 und 9 ein Icon bekommen. Du musst in jeder Zeile vorne in der Template-Variable die ID einfügen (S_POSTER_IN_GROUP_x) und hinten in der Funktion (in_array(x, ...)).

Nun kommt nur noch die Ausgabe im Template, also in der Datei viewtopic_body.html.
An welcher Stelle du das Bild ausgibst, musst du dir noch einmal anschauen. Vielleicht direkt hinter dem Namen, dazu fügst du den Code unterhalb hiervon ein:

Code: Alles auswählen

				<!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF -->
Oder unter dem Rang, dazu fügst du den Code unterhalb hiervon ein:

Code: Alles auswählen

			<!-- IF postrow.RANK_TITLE or postrow.RANK_IMG --><dd>{postrow.RANK_TITLE}<!-- IF postrow.RANK_TITLE and postrow.RANK_IMG --><br /><!-- ENDIF -->{postrow.RANK_IMG}</dd><!-- ENDIF -->
Beim einzufügenden Code hast du die Wahl: wenn ein User in mehreren Gruppen ist, sollen dann alle Icons angezeigt werden? Oder immer nur eines?
Für die erste Option (alle Icons anzeigen) fügst du diesen Code http://xyz.de/viewtopic.php?f=42&t=8204 ein - Achtung: den musst du noch anpassen!

Code: Alles auswählen

				<!-- IF postrow.S_POSTER_IN_GROUP_8 --><img src="images/smilies/icon_e_smile.gif"><!-- ENDIF -->
				<!-- IF postrow.S_POSTER_IN_GROUP_9 --><img src="images/smilies/icon_e_sad.gif"><!-- ENDIF -->
Für die zweite Option (nur ein Icon anzeigen - die Reihenfolge ist wichtig!) fügst du diesen Code ein - Achtung: den musst du noch anpassen!

Code: Alles auswählen

				<!-- IF postrow.S_POSTER_IN_GROUP_8 --><img src="images/smilies/icon_e_smile.gif">
				<!-- ELSEIF postrow.S_POSTER_IN_GROUP_9 --><img src="images/smilies/icon_e_sad.gif">
				<!-- ENDIF -->
Die Anpassung ist jeweils wieder die Gruppen-ID, siehe oben - hier im Beispiel die IDs 8 und 9. Und natürlich die URLs zu den Icons.
Als es erst trotzdem nicht hingehauen hat, haben wir außerdem festgestellt, dass ich in einer viewtopic.php herumgewerkelt habe, die sich im includes-Ordner befand - muss wohl irgendein Relikt gewesen sein, da sich die richtige viewtopic.php mittlerweile im Hauptverzeichnis befindet^^