Link in Hauptmenü nur wenn User in bestimmter Tippgruppe ist

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

  • Hallo Leute,
    ich hab da wieder eine Frage.


    Ich bin gerade dabei oben im Hauptmenü nach dem Link Forum noch einen Link einzubauen zu wollen, der nur angezeigt wird, wenn der User in einer bestimmten Tippgruppe ist.


    in welcher Datei muss ich den Link eintrag machen? und wie muss ich die IF-Abfrage schreiben?


    Vielen Dank schonmal.


    Compoundbow83

  • Zuerst musst du in der include/inc.config.php drei weitere Variablen festlegen, zum Beispiel:


    PHP
    1. $CONFIG['MENU']['MAIN']['geheim']['TEXT'] = "Geheim";$CONFIG['MENU']['MAIN']['geheim']['LINK'] = "geheim/";$CONFIG['RESTRICTED']['INTERN'][18] = "geheim";


    Um nun nur bestimmten Leuten Zugriff auf diesen Menüpunkt zu geben, packen wir noch eine Abfrage um die Ausgabe und fragen einfach ab ob gerade die geheime Seite durchlaufen wird und ob der User von der Gruppe "ohne Gruppe" ist. Die Funktion findest du in der include/inc.functions.php wo es eine Funktion createMainMenu() gibt. Dort wird einfach das if drumherum gebastelt:


    PHP
    1. if(($val['TEXT'] != 'Geheim') || ($val['TEXT'] == 'Geheim' && $_SESSION['s_group'] == 'ohne Gruppe')) {
    2. echo "<li><a ";
    3. if ($RUNTIME['PATH'][0] == substr($val['LINK'],0,(strlen($val['LINK'])-1)))
    4. {
    5. echo "class=\"current\" ";
    6. }
    7. echo "href=\"".$CONFIG['PATH'].gLink($val['LINK'])."\">".$val['TEXT']."</a></li>\n";
    8. }

    Dort könntest du du dann einen externen Link festlegen oder du musst in der include/inc.content.php noch deine geheime Seite einfügen, so dass du dafür eine PHP-Datei in dem content-Ordner anlegen musst.

    Zufrieden mit dem Script und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!

  • Hallo FiedlWDD,
    erst mal wieder vielen Dank, für die super schnelle Antwort.


    Wenn ich deinen Code von oben so einbinde:


    aus:

    Code
    1. function createMainMenu($ar){ global $CONFIG, $RUNTIME; foreach ($ar as $i => $val) { if (allowedToView($val['LINK'])) { echo "<li><a "; if ($RUNTIME['PATH'][0] == substr($val['LINK'],0,(strlen($val['LINK'])-1))) { echo "class=\"current\" "; } echo "href=\"".$CONFIG['PATH'].gLink($val['LINK'])."\">".$val['TEXT']."</a></li>\n"; } }}

    wird:


    kommt beim Tippspiel nur noch eine weiße Seite.


    Was mach ich denn schon wieder falsch?


    Compoundobw83

  • Du hast vergessen noch die Klammer zu schließen, also so:

    Zufrieden mit dem Script und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!

  • Du bist echt der Hammer,
    klappt jetzt.


    Jetzt habe ich aber wieder das Problem, dass ich den Link (den in unter content abgelegt habe) nicht geöffnet bekommen, sondern wieder auf der Startseite lande.


    In der inc.content habe ich folgendes ergänzt:

    Code
    1. case "pott":
    2. include "content/pott.php";
    3. break;

    Ich hatte ja schon einmal ein ähnliches Problem im Untermenü. Hab mir das Thema nochmal angeschaut, aber finde leider den Fehler nicht.


    Kannst du mir hier vllt auch nochmal helfen?


    Compoundbow83

  • Hast du den Codeausschnitt in die Funktion createSiteMenu() eingefügt? Richtiger wäre die Funktion createSiteContent(), wo geprüft wird welche Datei wann eingebunden werden soll.
    Vor dem case default müsstest du einen neuen Block einfügen, ist in etwa Zeile 600, so sollte es dann aussehen:

    PHP
    1. case "pott":
    2. include "content/pott.php";
    3. break;
    4. default:
    5. if (noMember())
    6. include "content/default.content.php";
    7. else
    8. include "content/intern.content.php";
    9. break;

    Ggf. mal deine inc.content.php per PN an mich, dann schaue ich da mal hinein.

    Zufrieden mit dem Script und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!

  • Hallo,
    jetzt müsste ich noch folgendes ergänzen.


    Der Link soll nicht nur angezeigt werden, wenn jemand in einer Bestimmten Tippgruppe ist sondern auch noch zusätzlich bezahlt hat.


    wo muss ich denn die WHERE clause ergänzen?



    Compoundbow83

  • Ich würde in der include/inc.functions.php in der Funktion checkUserState() noch eine Session-Variable setzen:

    PHP
    1. $_SESSION['s_id'] = $row['id'];$_SESSION['s_usr'] = $row['usr'];$_SESSION['s_name'] = $row['name'];$_SESSION['s_email'] = $row['email'];$_SESSION['s_level'] = $row['status'];$_SESSION['s_flash'] = $row['showflash'];$_SESSION['s_group'] = $row['department'];$_SESSION['s_bezahlt'] = $row['bezahlt'];

    Danach kannst du deine Abfrage erweitern:


    PHP
    1. if(($val['TEXT'] != 'Pott') || ($val['TEXT'] == 'Pott' && $_SESSION['s_group'] == 'Pfeiffer' && $_SESSION['s_bezahlt'] == 1))

    Zufrieden mit dem Script und dem Support? Möchtest du uns unterstützen?

    Dann könntest du etwas SPENDEN. :)


    HERTHA BSC heißt unser Verein
    HERTHA BSC wird es immer sein!