Seite 1 von 1

Header Menü nur für reg. Benutzer sichtbar machen ?

Verfasst: 27.01.2009 16:19
von FF27Q
Ich möchte im menü ein paar sachen nur für registrierte benutzer sichtbar machen .
was muss ich da dazu schreiben in der overall_header.tpl ?
mfg

Re: Header Menü nur für reg. Benutzer sichtbar machen ?

Verfasst: 28.01.2009 15:15
von jensdd
Hallo,

das geht mit einem Switch

Code: Alles auswählen

<!-- BEGIN switch_user_logged_in -->
Inhalt, der nur für eingeloggte Benutzer sichtbar sein soll ...
<!-- END switch_user_logged_in -->
oder

Code: Alles auswählen

<!-- BEGIN switch_user_logged_out -->
Inhalt, der nur für ausgeloggte Benutzer sichtbar sein soll ...
<!-- END switch_user_logged_out -->
Passe aber auf, dass Du keine Switches verschachtelst.

Gruß Jens

Re: Header Menü nur für reg. Benutzer sichtbar machen ?

Verfasst: 19.02.2009 16:52
von Son1c
Kann man im Menü auch Inhalt nur für bestimmte Benutzergruppen sichtbar machen?

Re: Header Menü nur für reg. Benutzer sichtbar machen ?

Verfasst: 20.02.2009 17:38
von jensdd
Ich habe da was gefunden (nicht meine Idee), für die functions.php (am Ende einfügen)

Code: Alles auswählen

//
// Überprüft die Zugehörigkeit eines Benutzers zu einer oder mehreren Gruppen
//
function user_in_group($group_ids, $user_id = false, $and = false)
{
   global $db, $userdata; 
   static $cache = array();
   
   if (!$user_id)
   {
      $user_id = $userdata['user_id'];
   }
   
   if (is_string($group_ids))
   {
      $group_ids = explode(',', $group_ids);
   }
   elseif (is_int($group_ids))
   {
      $group_ids = array($group_ids);
   }
   
   $check_ids = array();
   for ($i = 0, $count = count($group_ids); $i < $count; $i++)
   {
      $group_ids[$i] = intval($group_ids[$i]);
      if (!isset($cache[$user_id][$group_ids[$i]]))
      {
         $check_ids[] = $group_ids[$i];
      }
   }
   
   if (!empty($check_ids))
   {
      if (!isset($cache[$user_id]))
      {
         $cache[$user_id] = array();
      }
      
      foreach ($check_ids as $check_id)
      {
         $cache[$user_id][$check_id] = false;
      }
      
      $sql = 'SELECT g.group_id
         FROM ' . USER_GROUP_TABLE . ' ug, ' . GROUPS_TABLE . ' g
         WHERE g.group_id = ug.group_id
            AND (ug.user_id = ' . intval($user_id) . '
               OR g.group_moderator = ' . intval($user_id) . ')
            AND ug.group_id IN(' . implode(', ', $check_ids) . ')
         GROUP BY g.group_id';
      if (!$result = $db->sql_query($sql))
      {
         message_die(GENERAL_ERROR, 'Could not obtain groups', '', __LINE__, __FILE__, $sql);
      }
      
      while ($row = $db->sql_fetchrow($result))
      {
         $cache[$user_id][$row['group_id']] = true;
      }
      $db->sql_freeresult($result);
   }
   
   if ($and)
   {
      foreach ($group_ids as $group_id)
      {
         if (!$cache[$user_id][$group_id])
         {
            return false;
         }
      }
      
      return true;
   }
   else 
   {
      foreach ($group_ids as $group_id)
      {
         if ($cache[$user_id][$group_id])
         {
            return true;
         }
      }
      
      return false;
   }
}
Die Abfrage läuft so:
user_in_group(3); // aktueller Benutzer in Gruppe 3?
user_in_group('3,5'); // aktueller Benutzer in Gruppen 3 oder 5?
user_in_group(array(3, 5)); // aktueller Benutzer in Gruppen 3 oder 5?
user_in_group('3,5', false, true); // aktueller Benutzer in Gruppen 3 und 5?
user_in_group('3,5,8', $user_id); // Benutzer mit der ID $user_id in Gruppen 3, 5 oder 8?
user_in_group('3,5,8', $user_id, true); // Benutzer mit der ID $user_id in Gruppen 3, 5 und 8?

Musst mal schauen, wie Du das für Deine Zwecke verwenden kannst.

Gruß Jens

Re: Header Menü nur für reg. Benutzer sichtbar machen ?

Verfasst: 20.02.2009 22:03
von FF27Q
danke hat geklappt

Re: Header Menü nur für reg. Benutzer sichtbar machen ?

Verfasst: 22.02.2009 19:24
von jensdd
Ich schließe da mal ne Frage zu den Switches an ...

Wie prüfe ich in der usercp_viewprofile, ob gerade mein eigenes Profil angezeigt wird? Konkreter Zweck: ich habe das eigene Profil im Header verlinkt und möchte in der profile_view_body einen Link zum Editieren des eigenen Profils setzen. Der soll natürlich nur beim eigenen Profil erscheinen.
Der normale Weg zur Profilbearbeitung führt bei mir über das User-CP, was ziemlich versteckt ist.

Gruß Jens

P.S.:
Nach einigem Probieren habe ich`s gefunden. Die Abfrage in der usercp_viewprofile lautet
$profiledata['user_id'] == $userdata['user_id']