2012-02-28 2 views
10

opencartでカスタムページを作成したいと思います。"情報"機能を使用しないopencart PHPカスタムページ

私は、管理領域を使用して情報セクションにカスタムページを置くことができますが、私が望むものは、いくつかの他のページを指すコントローラです。

私はこれを行う方法を完全に理解していません。

codeigniterでは、コントローラとビューを作成し、必要に応じてルートファイルにいくつかのルールを設定しますが、このような表示はありません。

誰かがこのことをどうやって説明するか、私に指示する方法を教えてください。

ありがとうございます

答えて

17

正直に言うとかなり簡単です。フォルダーとファイル名に基づいて名前を付けて、ファイル用のコントローラーを作成する必要があります。例えばcommon/home.phpこれはindex.php?route=common/homeを使用してアクセスされる

Class ControllerCommonHome extends Controller 

を有しindex()方法にアクセスします。あなたが別のメソッドを呼び出したい場合は、インスタンスfooのために、あなたは

public function foo() { 
    // Code here 
} 

ような方法を定義する必要があるだろうとのindex.phpを使用してそれを呼ぶだろう?ルート=共通の/ home/fooという

レンダリングについてビュー、それは少しトリッキーです。基本的には、そのファイルが存在しない場合は/catalog/view/theme/your-theme-name/template/common/new_template_file.tpl 、それはdefaultテーマフォルダ

で同じパスを使用しようとするレンダリングされますあなたのコントローラメソッド

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/new_template_file.tpl')) { 
     $this->template = $this->config->get('config_template') . '/template/common/new_template_file.tpl'; 
    } else { 
     $this->template = 'default/template/common/new_template_file.tpl'; 
    } 

    $this->children = array(
     'common/column_left', 
     'common/column_right', 
     'common/content_top', 
     'common/content_bottom', 
     'common/footer', 
     'common/header' 
    ); 

    $this->response->setOutput($this->render()); 

の終わりに、このすべてを追加する必要があります

私は、いくつかのコントローラーとテンプレートを見て、すべてが適切なところから来るように頭を浮かべることをお勧めしますが、それはどのように動作するかの基本的要点です

+0

ここに何か不足している可能性がありますが、わからないことがあります。標準ファイルにはこの構造がありますが、新しい拡張機能や登録が必要な場所がありますか? –

+1

完全に新しいページを作成している場合、登録する必要はありません。それらがモジュールである場合、基本原則は同じですが、モジュールは管理者にインストールする必要があり、それらの位置などで有効に設定されています –

0

このページに従ってください。

http://code.tutsplus.com/tutorials/create-a-custom-page-in-opencart--cms-22054

OpenCartは、一般的なプログラミングMVCパターンを使用して構築されています。また、このパターンに "L"という名前の要素が1つ追加されています。これはOpenCartのMVC-Lパターンです。私はMVCパターンの詳細には触れませんが、これは非常に一般的で使い慣れたデザインパターンであり、他のチュートリアルで詳しく説明しました。

関連する問題