5

我正在编写一个块,并希望能够在查看块时判断用户是否登录到仪表板。我想应该有类似 isAdminArea() 或 isEditing() 但到目前为止我自己还没有找到它!

4

4 回答 4

6

如果您使用的是 Concrete5.6.0 或更高版本,您可以这样做:

global $cp;
$canViewToolbar = (isset($cp) && is_object($cp) && $cp->canViewToolbar());
if ($canViewToolbar) {
    //do something...
}

如果您在主题模板或块视图中执行此操作,则可以省去很多垃圾,然后执行以下操作:

global $cp;
if ($cp->canViewToolbar()) {
    //do something...
}

但是,如果您在包控制器中或在系统事件期间执行此操作,您将需要使用我的第一个示例(以确保存在全局“集合权限”对象)。

如果您运行的 Concrete5 版本早于 5.6,请使用以下代码:

global $cp;
$canViewToolbar = (isset($cp) && ($cp->canWrite() || $cp->canAddSubContent() || $cp->canAdminPage() || $cp->canApproveCollection()));
if ($canViewToolbar) {
    //do something...
}
于 2013-04-22T16:44:16.330 回答
1

为了改进上述内容:虽然global它是 PHP 中的有效构造,但确实应该避免使用它。这是懒惰和危险的。C5架构中访问主动权限模型的正确方法是

$cp = new Permissions(Page::getCurrentPage());

if ($cp->canViewToolbar()) {
  ...
}
于 2014-05-26T07:22:07.447 回答
0

应该是这个

$u = new User();
if($u->IsLoggedIn()){
  //logged in
}

如果它不起作用,在顶部你可能需要

global $u

于 2014-05-08T21:58:46.383 回答
0

如果您只是对编辑模式感兴趣,这将起作用:

 <?php 
 if ($c->isEditMode()) { ?>
    //do something
 <?php } ?>
于 2013-04-22T05:25:05.983 回答