告诉用户是否从块登录到Concrete5中的编辑/仪表板

告诉用户是否从块登录到Concrete5中的编辑/仪表板,concrete5,Concrete5,我正在编写一个块,希望能够在查看该块时判断用户是否登录到仪表板。我在想象应该有类似isAdminArea()或IsEdit()的东西,但到目前为止我还没有主动找到它 如果您只是对编辑模式感兴趣,这将起作用: <?php if ($c->isEditMode()) { ?> //do something <?php } ?> //做点什么 如果您使用的是Concrete 5.6.0或更高版本,您可以执行以下操作: global $cp; $canV

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

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

 <?php 
 if ($c->isEditMode()) { ?>
    //do something
 <?php } ?>

//做点什么

如果您使用的是Concrete 5.6.0或更高版本,您可以执行以下操作:

global $cp;
$canViewToolbar = (isset($cp) && is_object($cp) && $cp->canViewToolbar());
if ($canViewToolbar) {
    //do something...
}
如果在主题模板或块视图中执行此操作,则可以省去许多垃圾,只需执行以下操作:

global $cp;
if ($cp->canViewToolbar()) {
    //do something...
}
但是,如果在包控制器中或在系统事件期间执行此操作,则需要使用我的第一个示例(以确保全局“Collection Permissions”对象存在)

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

global $cp;
$canViewToolbar = (isset($cp) && ($cp->canWrite() || $cp->canAddSubContent() || $cp->canAdminPage() || $cp->canApproveCollection()));
if ($canViewToolbar) {
    //do something...
}
应该是这样

$u = new User();
if($u->IsLoggedIn()){
  //logged in
}
如果它不起作用,在顶部你可能需要


global$u

要改进上述内容:虽然
global
在PHP中是一个有效的构造,但确实应该避免使用它。它既懒惰又危险。访问C5体系结构中的活动权限模型的正确方法是

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

if ($cp->canViewToolbar()) {
  ...
}

这只会告诉您用户当前是否正在编辑页面,而不会告诉您他们是否已登录。