Nochmal langsam zum Mitdenken:
Du hast einen Block für das Portal erstellt, der nur von definierten Gruppen sichtbar sein soll.
Soweit richtig?
Nun meine Fragen, sofern ich schon richtig liege:
Was genau soll passieren, wenn sich ein User aus einer der zugelassenen Gruppen anmeldet?
Soll der Block dargestellt werden, eine neue Seite aufgehen, ein Popup erscheinen?
Und ich verstehe auch den Sinn des iframes nicht ganz: Soll da ein HTML-File angezeigt werden?
Bei normalen Blöcken im ezPortal kann man diese prima per switch komplett aus-/einblenden, aich mit einem iframe als Inhalt.
Dann zum Aufbau der Tabelle für die Seite/den Block:
Richtig. Ich würde auch eine solche Tabelle erstellen, die o.g. Werte enthält.
Und dazu die Gruppentabelle um eben ein Feld erweitern, d.h. genauer: Ein Feld je Block (wenn es mehrere sein sollen).
Dann in der portal.php eine Abfrage, ob sich der angemeldete User in einer berechtigten Gruppe für den Block, bzw. die Blöcke, befindet und eben diese "einschalten" [ $template->assign_block_vars('switch_block_on', array()); ] und diesen Switch dann natürlich noch in der portal_body.tpl um den jeweils betreffenden Block (mitsamt iframe, wenn es sein muss) den Switch einbauen.
Das wäre dann im Groben schon alles.
BTW: Ich kann Dir da im Moment nur Tipps geben, da ich für ein anderes Board gerade fleissig am modden bin und anschliessend den Board Menu Manager komplett überarbeiten muss (es sind scheinbar mehr Fehler enthalten, als ich dachte).
Zur Abfrage der entsprechend berechtigten Gruppe(n) kannst Du folgendes nehmen:
Code: Alles auswählen
$sql = "SELECT group_id FROM " . GROUPS_TABLE . " g, " . USER_GROUP_TABLE . " ug
WHERE g.group_id = ug.group_id
AND g.group_single_user <> " . TRUE . "
AND ug.user_pending <> ".TRUE . "
AND g.blockX_access = " . TRUE . "
AND ug.user_id = " . $userdata['user_id'];
if ( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not get user access for blockX', '', __LINE__, __FILE__, $sql);
}
$count_access_group = $db->sql_numrows($result);
$db->sql_freeresult($result);
if ( $count_access_group != 0 )
{
$template->assign_block_vars('switch_blockX_on', array());
}
Wobei in der SQL-Abfrage das Feld "g.blockX_access" die Zugriffsberechtigung des entsprechenden Blocks im Portal entsprechen soll (das Fild in der Datenbank muss dann natürlich "blockX_access" heissen, also ohne "g.") und "'switch_blockX_on" die "Klammer" um den Block in der portal_body.tpl, die diesen Block dann letztendlich darstellt oder auslässt.
Ich hoffe, Du kommst damit schon ein Stück weiter.