Nein, hatte gar nichts gemeint, war nur der Check um gezielt etwas zu machen, wenn jemand in einer bestimmten Gruppe ist. Deswegen "Ansatz". Klar, index.php war nix, da sollte man nicht ran. Bin auch kein Freund von fe_-Template-Anpassungen.
Hier mal zwei Lösungen für ein FE-Modul, welches man ins Layout einbinden kann. Vorsicht, komplett ungetestet.
PHP-Code:
<?php
// templates/check-members.php
// use insert tag file::check-members.php in a front end module
// include this module into your pagelayout (on top for performance reasons)
global $objPage;
$redirectToPage = 'forbidden-for-this-group-members.html'; // hardcoded so far
$groupAppId = 3;
// solution 1: with hardcoded page IDs in this template
$pagesNotForGroupApp = array(5, 10, 22, 23);
if(in_array($objPage->id, $pagesNotForGroupApp))
{
$memberObj = \FrontendUser::getInstance();
if($memberObj->isMemberOf($groupAppId))
/Controller::redirect($redirectToPage);
}
}
// solution 2: with page CSS classes
$CssClassToExcludeGroupApp = 'not-for-app'; // CSS class to be set on pages that are forbidden for the app group
if($objPage->CssClass)
{
$pageClasses = explode(' ', $objPage->CssClass);
if(in_array($CssClassToExcludeGroupApp, $pageClasses))
{
$memberObj = \FrontendUser::getInstance();
if($memberObj->isMemberOf($groupAppId))
{
/Controller::redirect($redirectToPage);
}
}
}
Bei Lösung 2 muss man in den Seiteneinstellungen eine CSS-Klasse, hier "not-for-app" eintragen um diese Seite für Mitglieder aus dieser Seite auf die Seite, hier erstmal hardcodiert 'forbidden-for-this-group-members.html', weiterzuleiten.
Diese Seiten-Klasse kann man auch im Navi-Template abfragen um den Listenpunkt zu diesen Seiten dann nicht zu rendern. Da würde ich da aber ein wenig aufpassen, weiß nicht, ob der Aufruf von
PHP-Code:
$memberObj = \FrontendUser::getInstance();
in jedem Loop auf die Performance gehen kann.
Lesezeichen