1

opencart 中是否有任何方法仅显示登录用户的侧边栏模块?

4

2 回答 2

1

当然也有简单的搭配!

打开例如左列控制器 ( catalog/controller/common/column_left.php) 和行之后:

protected function index() {

添加此条件(仅带左括号):

    if($this->customer->isLogged()) {

现在找到这条线

    $this->render();

它添加之前:

    } else {
        $this->data['modules'] = array();
    }

所以最终的代码应该是这样的:

<?php  
class ControllerCommonColumnLeft extends Controller {
    protected function index() {
        if($this->customer->isLogged()) {
            // ... all the previous code up to the render() call
        } else {
            $this->data['modules'] = array();
        }

        $this->render();
    }
}

现在做同样的事情column_right.phpcontent_bottom.php并且content_top.php你应该完成;-)

编辑:人们可能还想编辑具体的模块控制器并在那里添加条件,但这不会那么简单并且有其他含义——仍然会有一个数据库查询来收集所有可用的模块。在我的解决方案中,除了简单之外,还有一个事实是,对于未登录的用户,根本不会对模块进行数据库调用。

于 2013-10-08T09:45:34.457 回答
1

感谢您的快速回复。我找到了一个简单的解决方案。

转到我的模块控制器

包裹$this->render();if(!$this->customer->isLogged()) { $this->render(); }

它工作得很好。

于 2013-10-08T10:59:48.137 回答