Opencart如何测试模块是否安装?

时间:2012-05-02 16:39:30

标签: php opencart

有没有更好的方法来检查opencart中是否安装了模块。我相信我必须遗漏一些明显的事情来完成这样一个共同的任务。

我希望这在前端(目录)和管理区域都有效。这是检查方法是否存在以及它是否是多维数组的原因。

$this->load->model('setting/extension');
$this->model_setting_extension = new ModelSettingExtension($this->registry);

if(method_exists($this->model_setting_extension, "getExtensions")){ 
    $extensions = $this->model_setting_extension->getExtensions('module');
} else {
    $extensions = $this->model_setting_extension->getInstalled('module');
}   

$installed = false;
foreach($extensions as $extension){
    if(is_array($extension) && $extension['code'] == "myfoo"){
        $installed = true;
    } elseif($extension == "myfoo") {
        $installed = true;
    }
}
if(!$installed){
    exit('Error: Could not load module: myfoo!');
}

3 个答案:

答案 0 :(得分:4)

最简单的方法是通过数据库查询进行检查

$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "extension` WHERE `code` = 'myfoo'");
if($result->num_rows) {
    // .. installed
} else {
    // .. not installed
}

答案 1 :(得分:2)

也许不是优雅的解决方案,但我没有找到另一个

$module_name = 'bla-bla-module';
$this->load->model('setting/extension');
    $installed_modules = $this->model_setting_extension->getInstalled('module');
    if(in_array($module_name, $installed_modules)) {
      // Module installed
    }

UPD:这是1.5.x

答案 2 :(得分:1)

这有用吗? (来源:http://forum.opencart.com/viewtopic.php?t=49724

<?php
    if ($this->config->get('modulename_status')) {
        // ....do something
    }
?>