Hallo, Gast! (Registrieren)

Letzte Ankündigung: Sicherheitsupdate: MyBB 1.8.29 veröffentlicht (30.10.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Bestimmte Topllinks für bestimmte User
#1
Huhu,

ich hab in meine Toplinks einen Link zu meinem Chat eingebaut. Nun wollte ich, dass dieser Link nicht für Gäste und nicht für Benutzer mit einer Beitragszahl unter einem bestimmten Betrag sichtbar ist. Ich dachte, die einfachste Lösung wäre es, das über die Benutzergruppen und die Benutzertitel zu lösen und ein if-else im Header-Template einzufügen. Nur habe ich entweder die falschen Variablen benutzt oder sonstwas nicht bedacht. Die IDs selbst habe ich in der Datenbank überprüft, die sind korrekt. Plugin für PHP in den Templates ist aktiv und funktioniert.

Vielleicht findet einer von euch den Fehler?

PHP-Code:
<if $user['usergroup'] == || $user['usertitle'] == || $user['usertitle'] == 2 then>
 <
ul class="menu top_links">
{
$menu_portal}
{
$menu_search}
{
$menu_memberlist}
{
$menu_calendar}
<
li><a href="{$mybb->settings['bburl']}/misc.php?action=help" class="help">{$lang->toplinks_help}</a></li>
</
ul>
<else>
<
ul class="menu top_links">
{
$menu_portal}
{
$menu_search}
{
$menu_memberlist}
{
$menu_calendar}
<
li><a href="http://vitaler-hund-forum.de/chat/" target="_blank" class="chat">Chat</a></li>
<
li><a href="{$mybb->settings['bburl']}/misc.php?action=help" class="help">{$lang->toplinks_help}</a></li>
</
ul>
</if> 
Zitieren
#2
Einerseits gibt es keine Variable $user, meinst du vielleicht $mybb->user?
Und andererseits enthält $mybb->user['usertitle'] nur den eigenen Benutzertitel, falls überhaupt im Profil eingestellt. Sinnvoller wäre es wohl $mybb->user['postnum'] zu verwenden.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Wie, $user gibt es nicht? Ich hab mit Hilfe von hier für meine Memberlist ein if-else geschrieben, um bei bestimmten Usergruppen die Benutzertitel anzeigen zu lassen, bei anderen nicht. Das funzt auch und sieht so aus:
PHP-Code:
<if $user['usergroup'] == || $user['usergroup'] == || $user['usergroup'] == || $user['usergroup'] == 7 then

Ich dachte, darauf könnte ich für diesen neuen Zweck aufbauen. Und laut Datenbank sind usertitle die, die ich vorgegeben habe? Zumindest sind die dort und db_usertitle drin und mit genau dieser Nummer versehen.


Wenn es natürlich eine postnum gibt, ist das noch viel besser bzw. einfacher. Habs ausprobiert und es scheint zu funzen. Falls noch jemand was ähnliches sucht, so geht es jetzt:
PHP-Code:
<if $mybb->user['postnum'] <= 25 then

Für User mit 25 oder weniger Beiträgen ist der Link dann weg. Nur mit < statt <= funzt auch, also für User mit weniger als 25 Beiträgen.

Vielen Dank für die schnelle Hilfe!!
Zitieren
#4
(21.07.2016, 10:22)keineAhnung schrieb: Wie, $user gibt es nicht?
Im Template header ist $user standardmäßig nicht definiert. An anderen Stellen schon. Wink
(21.07.2016, 10:22)keineAhnung schrieb: Und laut Datenbank sind usertitle die, die ich vorgegeben habe? Zumindest sind die dort und db_usertitle drin und mit genau dieser Nummer versehen.
Das ist aber die Spalte "usertitle" im der Tabelle mybb_users.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Ach jetzt, danke, bin wohl leicht verwirrt dank Hitze und Gewitterwetter.^^
Ich bin nur froh, dass es funzt Big Grin.

Gibt es vll eine Möglichkeit, das auch nach Zeit zu begrenzen? Die mybb-Zeit ist ja auch irgendwie verankert, da müsste ich ja bspw 17-23 Uhr eingeben können?
Zitieren
#6
Hallo,

ich habe auch dasselbe oder ein ähnliches Problem bei MyBB 1.8.22. Habe einen externen Link bei den toplinks eingefügt und würde diesen Link gerne nur für eingeloggte User anklickbar machen. Mein Code im ACP: Home » Template-Sets » Default Templates » Template bearbeiten: header
lautet:

<ul class="menu top_links">
<if $mybb->user['usergroup'] == 1 then>
<li><a href="./member.php?action=login">{$lang->toplinks_chat}</a>
<else>
<a href="https://ExternalLink" target="_blank">{$lang->toplinks_chat}</a></li>
</if>
{$menu_arcade}
{$menu_portal}
{$menu_search}
{$menu_memberlist}
{$menu_calendar}
<li><a href="{$mybb->settings['bburl']}/misc.php?action=help" class="help">{$lang->toplinks_help}</a></li>
</ul>

Allerdings wird der if-Befehl nicht angewendet, sondern stattdessen erscheinen immer beide Links gleichzeitig (neben einander), egal ob man eingeloggt ist oder nicht. Kann man an diesem Ergebnis irgendwas ändern?

LG
Zitieren
#7
Das mit dem <else> funzt bei mir auch nicht. Versuche es mal mit:

Code:
<ul class="menu top_links">
<if $mybb->user['usergroup'] == 1 then>
<li><a href="./member.php?action=login">{$lang->toplinks_chat}</a>
</if>
<if $mybb->user['usergroup'] != 1 then>
<a href="https://ExternalLink" target="_blank">{$lang->toplinks_chat}</a></li>
</if>
{$menu_arcade}
{$menu_portal}
{$menu_search}
{$menu_memberlist}
{$menu_calendar}
<li><a href="{$mybb->settings['bburl']}/misc.php?action=help" class="help">{$lang->toplinks_help}</a></li>
</ul>
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.27 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#8
(12.05.2020, 07:28)Gerti schrieb: Das mit dem <else> funzt bei mir auch nicht.

<else> funktioniert sogar sehr gut. Wink Aus welchem Grund soll das nicht funktionieren?

@masi1234
1. Zuerst solltest Du mal aus jedem Link ein eigenes Listenelement machen.
2. Du kannst in Templates keinen php-Code verwenden.
Dafür ist ein Plugin nötig. Siehe: hier
Zitieren
#9
Danke Euch! Die Lösung mit dem Plugin funktioniert gut.
Zitieren