Дороботка плагина
if ($modx->isMemberOfWebGroup($groups)){
следует заменить на:
if ( $modx->isMemberOfWebGroup($groups) | isset ($_SESSION['mgrValidated']) ){
В противном случае ограничение на просмотр действует и на менеджеров.
В итоге:
//<?php
/**
* HideContent
*
* @category plugin
* @version 1.0
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL)
* @author Valyan
* @internal @properties
* @internal @events OnWebPagePrerender
* @internal @modx_category Login
*/
function checkHide($m){
global $modx;
$parametrs = $m[1];
$content = $m[2];
preg_match ( '/groups\s*=\s*`([^`]*)`/is' , $parametrs, $groups);
preg_match ( '/alternative\s*=\s*`([^`]*)`/is' , $parametrs, $alternative);
if (empty($groups) && $modx->userLoggedIn()) {return $content;} //Temus
$groups = explode(",", $groups[1]);
if ( $modx->isMemberOfWebGroup($groups) | isset ($_SESSION['mgrValidated']) ){
return $content;
}else{
if (empty($alternative)){
return '';
}else{
$alternative = $alternative[1];
if (strlen($alternative)<200){
if ($content = $modx->getChunk($alternative)){
return $content;
}
}
return $alternative;
}
}
}
$e = &$modx->Event;
switch ($e->name) {
case "OnWebPagePrerender":
$content = $modx->documentOutput;
while($content0 != $content = preg_replace_callback('/{hidecontent([^}]*)} ([^{}]*) {\/hidecontent}/xs', "checkHide", $content0 = $content));
$modx->documentOutput = $content;
break;
}
Соответственно теперь можно избавиться от сниппета
phx:loggedIn и скрывать следующим образом:
{hidecontent groups=`Administrators`}Немного скрытности не повредит, пока что, не правда ли?{/hidecontent}
При особом желании можно доработать и для групп менеджеров.
Трюк ИКС
[+phx:if=`{hidecontent}12{/hidecontent}`:is=`12`:then=`Привет менеджер!`:else=`Привет всем!`+]
... нет, этот трюк не работает, видимо из-за того что плагин phx стартует раньше чем hidecontent.
Замучился.
[ed. note: atomoc last edited this post 14 years, 5 months ago.]