bei einem aktuellen Projekt besteht der Bedarf, verschiedenen Frontend-Gruppen unterschiedliche Informationen darzustellen. Die Freigabe der Navigationspunkte für die jeweiligen Gruppen läuft ja über den Kategorieschutz von "Content/Kategorien" und die Freigabe über "Administration/Frontend/Frontend-Gruppen/Frontend-Berechtigungen".
Wenn bei einem Artikel jetzt zum Beispiel nur der Einleitungstext oder die Überschrift anders lauten soll (z. B. "Liebe Preißn!" oder "Liebe Bayern!"), dann ließe sich das natürlich über obige Lösung realisieren. Aber jetzt für jede Gruppe einen eigenen Navigationspunkt, Artikel usw. anzulegen wäre mit Kanonen auf Spatzen geschossen.
Insofern habe ich folgende Gruppenweiche eingerichtet, die an sich mit jedem Modul funktioniert. Gleichzeitig besteht die Möglichkeit, das Modul on- oder offline zu setzen. Dazu muss lediglich der Input und Output ergänzt werden:
INPUT
Code: Alles auswählen
?>
<table cellspacing="0" cellpadding="10" border="0">
<tr>
<td valign="top"><?php echo mi18n("Sichtbar für"); ?></td>
<td><input size=5 type="text" name="CMS_VAR[20]" value="CMS_VALUE[20]"><br/><small>
<?php echo mi18n("(1;2;... oder leer für alle)").'<br/>';
echo mi18n("1: Gruppe XYZ").'<br/>';
echo mi18n("2: Gruppe ABC").'<br/>';
echo mi18n("3: GRUPPE 123");
?>
</small></td>
</tr>
<tr>
<td><?php echo mi18n("offline"); ?></td>
<td>
<?php
if ("CMS_VALUE[30]"!="true") echo '<input type="checkbox" name="CMS_VAR[30]" value="true"/>';
else echo '<input type="checkbox" name="CMS_VAR[30]" value="true" checked/>';
?>
</td>
</tr>
</table>
<?php
Code: Alles auswählen
$id_feu=$auth->auth["uid"];
$show_content="true";
$show_content_to_fe_groups="CMS_VALUE[20]";
$offline="CMS_VALUE[30]";
if($contenido)
{
echo '<hr><p style="color: #ff0000; font-weight:900;">'.mi18n("Sichtbar für").' '.$show_content_to_fe_groups;
if($show_content_to_fe_groups=="") echo mi18n("alle");
if($offline=="true") echo ' - '.mi18n("Inhalt ist offline!");
echo '</p>';
}
if($id_feu!="nobody" AND $show_content_to_fe_groups!="" AND $offline!="true")
{
$show_content="false";
$array_allowed_groups=array();
$query = "SELECT idfrontendgroup FROM con_frontendgroupmembers WHERE idfrontenduser=$id_feu";
$result = cRegistry::getDb();
$result->query($query);
while($result->nextRecord())
{
$arr=$result->toArray();
$array_allowed_groups[]=$arr[idfrontendgroup];
}
$show_content_to_fe_groups_arr=explode(";",$show_content_to_fe_groups);
foreach($array_allowed_groups AS $element) if(in_array($element,$show_content_to_fe_groups_arr)) $show_content="true";
}
if(!$contenido AND $show_content=="true" AND $offline!="true" OR $contenido)
{
BISHERIGER MODULINHALT
}
VG,
Markus