2013-10-08 63 views

回答

1

感謝您的快速回復。我找到一個簡單的解決方案

去了我的模塊控制器

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

它的工作很大。

+1

是的,但是,在我的回答結束時檢查我的註釋 - 在這種情況下,所有模塊都已填充,模塊內的所有邏輯都會完成,即使用戶未登錄。這意味着許多DB查詢這對於未登錄的用戶來說是不必要的......我的解決方案在包裝所有方法的代碼時更好。 – shadyyx

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.phpcontent_top.php,你應該做的;-)

編輯:一是可能還需要編輯具體模塊控制器並在那裏添加條件,但這不會那麼簡單並且具有其他含義 - 仍然會有DB查詢來收集所有可用的模塊。在我的解決方案,除了它的簡單性,還有一個事實,對於未記錄的用戶沒有數據庫調用模塊將完成..

相關問題