2

モジュールが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!');
}
4

3 に答える 3

5

最も簡単な方法は、データベースクエリを介して簡単に確認することです

$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "extension` WHERE `code` = 'myfoo'");
if($result->num_rows) {
    // .. installed
} else {
    // .. not installed
}
于 2012-05-02T16:48:51.077 に答える
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用です

于 2015-04-11T14:05:36.503 に答える
1

これは機能しますか?(出典: http: //forum.opencart.com/viewtopic.php?t = 49724

<?php
    if ($this->config->get('modulename_status')) {
        // ....do something
    }
?>
于 2012-05-02T16:45:30.497 に答える