如何根据modx用户的组成员身份显示或隐藏html元素?
例如,我在给定页面上有一个编辑按钮和一个视图按钮,我希望有权访问编辑资源的用户能够看到该按钮,同时应该向所有其他用户隐藏该按钮。
更新 我最后写了一些东西来完成工作:
call snippet getButton
[[!getButton? &rid =`20` &btn=`ButtonEditTpl` &qs=`contract_id=[[!+contract_id]]`]]
摘录
<?php
$btn = isset($btn) ? $btn : null;
$qs = isset($qs) ? $qs : 'this=that';
$rid = isset($rid) ? $rid : 0;
$output = '';
$resource = $modx->getObject('modResource',$rid);
if($resource){
$url = $modx->makeUrl($rid, '', $qs);
$output = $modx->getChunk($btn,array('url' => $url));
}
return $output;
?>
答案 0 :(得分:0)
只需使用Personalize
代码段http://bobsguides.com/personalize-tutorial.html
[[!Personalize?
&yesChunk=`@CODE:<p>Place for your button</p>`
&noChunk=`@CODE:<p>You are not logged in</p>`
&allowedGroups=`MembersOnly,Managers`
]]
答案 1 :(得分:0)
在MODX风格中有两种正确的方法可以解决这个问题:资源和上下文权限。
“管理员模板组”的权限在任何用户组中的所有用户的上下文中都有效,该用户组可以使用自定义策略访问上下文。 “资源模板组”的权限在指定资源组中的所有资源的上下文中有效。
如果您拥有资源的smidgen,其中用户应具有新权限,则可以选择资源组。此时,您还必须创建新的资源组。
如果有大量资源或将在不久的将来,您必须选择具有自定义上下文策略的用户组:
所以我们接近尾声。
上下文:$modx->hasPermission('can_edit_my_resources_permission');
资源:$modx->resource->checkPolicy('can_edit_my_resources_permission');
无论如何,对于作为您的用户组成员的用户,您将获得true
,这些用户可以访问您的上下文访问策略,或者可以使用相同的访问策略访问您的资源组。
P.S。:所有角色必须相同。其他不起作用的方式:)