2012-05-02 10 views
1

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

答えて

1

たぶんないエレガントなソリューションを経由してチェックすることですが、私は別の

$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用です

+0

これは2.0で動作しません。私の解決策が1.4.Xから2.Xに至るまで、顧客側に 'setting/extension'のモデルが存在しないからです。 –

+0

はい、そうです。私はoc 2を使用したことはありません。ちょっと違いを見てダウンロードしました:)メソッドgetInstalledがモデル/ extension/extension.phpにありますので、上記のコードでそれぞれの '設定'を '拡張子'に変更できると思います – ymakux

1

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

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

悲しいことに、私は標準モジュールではないので、私はそれをビルドしているのですが、opencアートをconfigに自動的に追加します。 –

+0

特定のモジュールで、その中にある関数の名前を知っていれば、 'if(function_exists(" functionname ")){...' – Nadh

+0

これはモジュールとしてインストールされたまま存在するかもしれませんまだ。 –

3

最も簡単な方法は、単にデータベースクエリ

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

私は1データベースのクエリは私の長年の風味のメソッドよりも良いと思います。 –

関連する問題