WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

Ankündigung

#1 05.05.2016 17:52:20

grindbatzn
Gast

Tipp: Private Seiten je nach Gruppe hervorheben (Script)

Hab ich mal für einen Kunden gemacht und kann für andere nützlich sein:

Auf einer umfangreichen Website sind etliche private Seiten für verschiedene Gruppen. Damit sich registrierte User nicht alles selbst zusammensuchen müssen, was nach der Anmeldung "neu" ist, gibt es dieses Script.
Hervorgehoben werden auch die Parents der Seiten, damit man hinfindet (verschachteltes DropDown Menü).

Weiters nötig: Jeder Menüpunkt muss haben:
...<a ..  class="[class] pid[page_id]">...


Das wird noch im <head> ins Template eingebunden:

[== PHP ==]
<?php 
$privatemenue = '';
if ($wb->is_authenticated()) { include 'checkgrouppages.inc.php'; }
?>

Das ist checkgrouppages.inc.php

[== PHP ==]
<?php
if(!defined('WB_URL')) {
	header('Location: ../index.php');
	exit(0);	
}

$user_in_groups = $wb->get_groups_id();	
if (in_array(1, $user_in_groups)) {  return 0; } //kurzer prozess bei Admins

$allpage_trail = array();
$allpages = array();
$privatemenue = '';

foreach($user_in_groups as $ug) {

	$query = "SELECT page_id, menu_title, page_trail FROM ".TABLE_PREFIX."pages WHERE visibility = 'private' AND FIND_IN_SET('".$ug."', viewing_groups)";
	$get_pages = $database->query($query);	
	$rs = $get_pages->numRows();
	if ($rs > 0) {		
		while ($ps = $get_pages->fetchRow()) {
			$ptarr = explode(',',$ps['page_trail']);
			foreach($ptarr as $un) {
				if(!in_array($un, $allpage_trail)) {$allpage_trail[] =  $un;}		
			}
			$pid = $ps['page_id'];	
			if(!in_array($pid, $allpages)) {
				//doppeleintraege vermeiden:
				$allpages[] =  $pid;
				$privatemenue .= '<a class="privatemenue" href="[wblink'.$pid.']">'.$ps['menu_title'].'</a>';
			}
		}	
	}	
}

$out1 = ''; $out2 = ''; 

echo '<style type="text/css">
<!-- 
';
foreach($allpage_trail as $p) {
	$out1 .= '.pid'.$p.', '; 	$out2 .= '.lid'.$p.', '; 
}
echo $out1.' .nix { font-weight: bold; color: #ffcc00 ! important; }
'.$out2.' .nix { font-weight: bold; color: #000! important ; }
-->
</style>
';

?>

$privatemenue kann dann irgendwo ausgegeben werden und enthält alle Links zu den privaten Seiten direkt.

Beitrag geändert von grindbatzn (05.05.2016 17:55:31)

Fußzeile des Forums

up