我正在编写一个块,希望能够在查看块时判断用户是否登录到仪表板。我想象应该有像isAdminArea()或isEditing()这样的东西,但到目前为止还没能自己找到它!
答案 0 :(得分: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...
}
但是如果您在包控制器中或在系统事件期间执行此操作,您将需要使用我的第一个示例(以确保存在全局“Collection Permissions”对象)。
如果您运行的是版本低于5.6的Concrete5,请使用以下代码:
global $cp;
$canViewToolbar = (isset($cp) && ($cp->canWrite() || $cp->canAddSubContent() || $cp->canAdminPage() || $cp->canApproveCollection()));
if ($canViewToolbar) {
//do something...
}
答案 1 :(得分:1)
要改进上述内容:虽然global
是PHP中的有效构造,但应该避免使用它。这是懒惰和危险的。访问C5体系结构中的活动权限模型的正确方法是
$cp = new Permissions(Page::getCurrentPage());
if ($cp->canViewToolbar()) {
...
}
答案 2 :(得分:0)
如果您只是对编辑模式感兴趣,这将有效:
<?php
if ($c->isEditMode()) { ?>
//do something
<?php } ?>
答案 3 :(得分:0)
这应该是
$u = new User();
if($u->IsLoggedIn()){
//logged in
}
如果它不起作用,在顶部你可能需要
global $u