Profil-Symbolbildchen für Gruppenmitglieder?

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
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 die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
ill66
Mitglied
Beiträge: 313
Registriert: 08.01.2008 17:51
Kontaktdaten:

Profil-Symbolbildchen für Gruppenmitglieder?

Beitrag 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 :-?
Lehrling
Ehemaliges Teammitglied
Beiträge: 3833
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Beitrag 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.
Benutzeravatar
ill66
Mitglied
Beiträge: 313
Registriert: 08.01.2008 17:51
Kontaktdaten:

Beitrag 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?
Lehrling
Ehemaliges Teammitglied
Beiträge: 3833
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Beitrag 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.
Benutzeravatar
ill66
Mitglied
Beiträge: 313
Registriert: 08.01.2008 17:51
Kontaktdaten:

Beitrag 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'],
Benutzeravatar
ill66
Mitglied
Beiträge: 313
Registriert: 08.01.2008 17:51
Kontaktdaten:

Re:

Beitrag 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")
Zuletzt geändert von Kirk am 02.09.2015 17:35, insgesamt 1-mal geändert.
Grund: Unnötiges Komplett-Zitat entfernt!
Lehrling
Ehemaliges Teammitglied
Beiträge: 3833
Registriert: 15.01.2012 20:00
Kontaktdaten:

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Beitrag von Lehrling »

und wenn du schlicht und ergreifend die andere Gruppe zur Hauptgruppe der Benutzer machst?
Benutzeravatar
ill66
Mitglied
Beiträge: 313
Registriert: 08.01.2008 17:51
Kontaktdaten:

Beitrag 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)
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 4918
Registriert: 08.06.2009 12:03
Kontaktdaten:

Re: Profil-Symbolbildchen für Gruppenmitglieder?

Beitrag 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
Beste Grüße
phpBB3 Designs: Stylearea Ongray-Designs
Benutzeravatar
ill66
Mitglied
Beiträge: 313
Registriert: 08.01.2008 17:51
Kontaktdaten:

Beitrag 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^^
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“