Axis - Menüs nur für bestimmte Benutzergruppen

Begonnen von HanSolo, 03 Januar 2011, 08:49:31

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

HanSolo

Hallo alle zusammen,

frohes neues Jahr noch - und alles Gute für jeden, der das liest ... und auch alle, die es nicht tun :)

Ich habe eine Frage zum Menümanager: Ein erstelltes Menü soll entweder komplett nur für bestimmte Benutzergruppen sichtbar sein oder aber - das wäre die Krönung - in einem erstellten Menü sollen einzelne Unterpunkte nur für bestimmte Benutzergruppen sichtbar sein. Soweit die Idee - die Umsetzung scheitert bei mir allerdings noch. Habe ich da einen Denkfehler oder sind beide Ansinnen gar nicht machbar?

Danke für Hinweise und Anregungen.
Lieben Gruß

Oliver / HanSolo

xmjay

Moin HanSolo  :smile:

Ein erstelltes Menü wird in der Blocksteuerung angezeigt.
Dort kann es u.A. einer bestimmten Benutzergruppe zugeordnet werden.

Blöcke - Blockeinstellungen 0.1.11
Bestehende Blöcke verändern 1.12
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

HanSolo

Hallo xmjay,

danke für deine Antwort - das hatte ich vor dem Re-Design auch so gemacht; nun gibt es aber wohl einen Denkfehler meinerseits bei dem neuen Theme (axis). Da ist die Hauptnavigation ja oben - die ist inzwischen auch für alle Besucher soweit angelegt; nun gibt es aber auch Navigationspunkte, die ebenfalls da oben auftauchen sollen, die nur für bestimmte Benutzergruppen gedacht sind; insofern - brauche ich eigentlich zwei vom Manager erstellte Menüs - doch wie bekomme ich die beide da oben rein?

hmm .. je mehr ich das lese, umso mehr glaube ich, dass der Thread verschoben oder abgetrennt werden sollte in den Bereich der "Themes" - kann das bitte ein Moderator übernehmen und diesen Absatz dann löschen? Danke!
Lieben Gruß

Oliver / HanSolo

xmjay

Hi HanSolo !

Zitatzwei vom Manager erstellte Menüs - doch wie bekomme ich die beide da oben rein?
Dafür ist mir kein Lösungsweg bekannt.
CMS-Version: pragmaMx 1.12.3 | PHP-Version: 5.2.12 | MySQL-Version: 5.1.66

Olaf

die einzige Möglichkeit, die ich sehe, ist in der setting.php die menus auszuwählen.
Hier ein Bsp.


$themesetting['head_css_menu'] = 'axis-manu-guest';
if (MX_IS_USER) $themesetting['head_css_menu'] = 'axis-head-user'; 
if (MX_IS_ADMIN) $themesetting['head_css_menu'] = 'axis-head-admin'; 

Allerdings kannst du nur nach User/Gast/Admin selektieren...

aber vielleicht hilft dir das ja schon weiter...
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

HanSolo

Hallo Terra,

das bringt mich schon mal einen kleinen Schritt weiter - aber wie werden denn sonst Blöcke für die unterschiedlichen Benutzergruppen erkannt? Das müsste doch vom Prinzip her ähnlich funktionieren, oder denke ich da zu einfach  :red:
Lieben Gruß

Oliver / HanSolo

HanSolo

Hallo alle zusammen,

nach einigem Stöbern hier im Forum und einem Wahnsinns-Schiss, dass ich mir das Theme Axis komplett durcheinander haue, poste ich lieber mal hier - sorry, programmieren ist nicht wirklich mein Ding.

$information=mxGetUserData();
if ($information['user_ingroup']==2) $themesetting['head_css_menu'] = 'axis-manu-user'; //Hier die jew. Usergruppenid angeben.

else

{
if ($information['user_ingroup']==0) $themesetting['head_css_menu'] = 'axis-manu-guest'; //Hier die jew. Usergruppenid angeben.
}


So müsste man das doch einarbeiten können - kann ich das einfach so in die settings.php reinhauen?  Da der Tipp schon ein paar Jährchen her ist, wäre auch die Frage, ob das so noch in der aktuellen Version machbar ist oder nicht.

Danke für eure Hilfe  :red:
Lieben Gruß

Oliver / HanSolo

Olaf

Den Ansatz hatte ich auch schon und ich habe das auch schon probiert... könnt aber u.U. Probleme mit dem Theme geben.
Deshalb hab ich dir den o.g. Vorschlag gemacht, der geht auf alle Fälle.
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

HanSolo

Danke für die Antwort, Terra

welche Probleme meinst du, die sich ergeben könnten?

Problem bei der Seite ist, dass sich prinzipiell jeder registrieren kann (und das auch getan wird), diese dann aber nicht wirklich Mitglieder sind, also auch nicht die Inhalte für die Mitglieder sehen sollten; und daher reicht wohl die Unterscheidung Guest, User und Admin leider nicht aus, oder sehe ich das falsch?
Lieben Gruß

Oliver / HanSolo

Olaf

gut, das ist ein Problem, was bei deiner Seite dann prinzipiell herrscht, das was ich meine, das das Theme auf diesen Code affig reagiert und teilweise (aus welchem Grund auch immer) bei mir zerschossen wurde.

Du kannst zwar die einzelnen Menublöcke auch diversen Usergruppen zuordnen, müsstest sie dann aber in den Linken/rechten Block setzen. Für das Menu oben kannst du dann nur Punkte nehmen, die für alle zugänglich sein sollen, oder wie von mir beschrieben, für die Grobeinteilung...
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

HanSolo

Hallo alle zusammen,

wenn ich das so probiere, wie im Beitrag 7 geschrieben (ich probiere also weiter  :smile:), dann erhalte ich diese Meldung

Parse error: syntax error, unexpected T_VARIABLE in /TLD/themes/axis/settings.php on line 36

nehme ich das erste Semikolon raus, dann ändert sich die Fehlermeldung zu

Parse error: syntax error, unexpected T_ELSE in /TLD/themes/axis/settings.php on line 35

Ich stehe ein wenig auf dem Schlauch .. kann ein Coder mir vielleicht helfen? Danke!
Lieben Gruß

Oliver / HanSolo

Olaf

muss richtig heissen

$information=mxGetUserData();
if ($information['user_ingroup']==2) {
   $themesetting['head_css_menu'] = 'axis-manu-user'; //Hier die jew. Usergruppenid angeben.
} else {

    if ($information['user_ingroup']==0) $themesetting['head_css_menu'] = 'axis-manu-guest'; //Hier die jew. Usergruppenid angeben.
}

du hast die ersten geschweiften Klammern vergessen
g

Olaf

Kein Support über PN, Mail etc.!
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

HanSolo

Hallo Terra,

vielen lieben Dank, dass du mir weiter unter die Arme greifst .. jetzt weiß ich auch, was du mit "Theme zerschossen" meintest .. smile .. klappt, sieht aber ja wirklich ziemlich kaputt nun aus .. mal schauen, woran das nun liegt.
Lieben Gruß

Oliver / HanSolo

HanSolo

Hallo alle zusammen,

eine Frage / Bitte an das Team bzw. an Andi, der doch das Theme "Axis" für pragma portiert hatte (oder?):

Ich habe nun versucht dahinter zu kommen, warum bei Einbinden des hier im Thread genannten Codes das Theme komplett zerschossen wird und die Darstellung nicht klappt. Vielleicht kannst du dir einmal anschauen.

Vielen Dank schon mal im voraus!
Lieben Gruß

Oliver / HanSolo

Andi

Moin :)

die settings.php wird auch im dyn. Stylesheet des Themes (themes/axis/style/style.css.php) eingebunden. Dort sind aber die API-Funktionen von pragmaMx nicht vorhanden. Die Funktion mxGetUserData() gibt es dort also nicht und das Stylesheet wird mit einem PHP-Fehler abgebrochen. Daher vermutlich die Fehlanzeige des Themes...

Vor der Verzweigung der versch. Menüs muss also noch geprüft werden, ob die pragmaMx Umgebung existiert.
Ausserdem ist die Verzweigung in dem Beispiel etwas ungünstig gelöst, weil kein Standardmenü berücksichtigt ist.

Nachfolgend ein Beispiel, was beide Probleme berücksichtigt:

if (function_exists('mxGetUserData')) { // pragmaMx Umgebung vorhanden
    $userinfo = mxGetUserData();
    switch ($userinfo['user_ingroup']) {
        case 2: // für Gruppe mit ID 2
            $themesetting['head_css_menu'] = 'ein Menüname';
            break;
        case 3: // für Gruppe mit ID 3
        case 4: // oder für Gruppe mit ID 4
            $themesetting['head_css_menu'] = 'ein anderer Menüname';
            break;
        default: // Standard für alle anderen
            $themesetting['head_css_menu'] = 'der Standard Menüname';
    }
}


Bei sowas verwende ich lieber switch() als if/else Verzweigungen, weil das m.E. flexibler und übersichtlicher ist...
schön´s Grüssle, Andi

HanSolo

Moin Andi  :smile:

danke für die Info - hat ein wenig länger gedauert mit meiner Rückmeldung.

Ich bin unsicher, in welchen Dateien ich nun Änderungen einarbeiten soll. Deinen Code in die style.css.php und keine weitere Datei mehr bearbeiten oder muss in die settings.php der alte Code noch rein? Kannst du mir da bitte noch einen Hinweis zu geben? Ich glaube, dann kann das Thema endlich geschlossen werden :)
Lieben Gruß

Oliver / HanSolo

Andi

Moin :)

der Code ist eine Optimierung des von TerraProject geposteten Codes für die settings.php des Themes.
Also dort rein ;)
schön´s Grüssle, Andi

HanSolo

Hi Andi,

danke für die Info - klappt und läuft super .. danke!!!
Lieben Gruß

Oliver / HanSolo

HanSolo

Hallo alle zusammen,

ich beziehe mich auf die letzte Lösung in diesem Thread: http://www.pragmamx.org/Forum-topic-32277-start-msg203765.html#msg203765

Funktion ist weiterhin einwandfrei, allerdings produziert anscheinend jeder Aufruf der Seite in den Logfiles einen Fehler, so dass ich zum Einen extrem große Files habe, zum Anderen damit die Größe meines Webspaces einschränke :(

Fehlermeldung lautet:
PHP Run-time notice:
Undefined index:  user_ingroup
in /home/.../themes/axis/settings.php on line 32

Ich stehe gerade ein wenig auf dem Schlauch und hoffe auf Hilfe zur Vermeidung der Run-time notice.

pragma ist soweit aktuell installiert.
Lieben Gruß

Oliver / HanSolo

Andi

Moin :)

jop, da ist noch ein kleiner Fehler drin im Code...

Das Feld 'user_ingroup' ist natürlich nur in den Userdaten vorhanden, wenn es ein angemeldeter User ist. Bei Gästen entsteht dann diese Fehlermeldung....

Ändere den Code wie folgt ab, dann sollte Ruhe im logfile sein...


// hier bereits Standard für alle, auch Gäste...
$themesetting['head_css_menu'] = 'der Standard Menüname';
// dann die für die Usergruppen
if (function_exists('mxGetUserData') && MX_IS_USER) { // pragmaMx Umgebung vorhanden und user angemeldet
   $userinfo = mxGetUserData();
   switch ($userinfo['user_ingroup']) {
       case 2: // für Gruppe mit ID 2
           $themesetting['head_css_menu'] = 'ein Menüname';
           break;
       case 3: // für Gruppe mit ID 3
       case 4: // oder für Gruppe mit ID 4
           $themesetting['head_css_menu'] = 'ein anderer Menüname';
           break;
   }
}



ps: habe die beiden Threads verbunden ;)
schön´s Grüssle, Andi