Способов много. Я делаю так.
1. Контроллер /mymodule/controllers/admin/AdminMymoduleController.php
<?php
class AdminMymoduleController extends ModuleAdminController
{
public function __construct()
{
$this->table = 'mymodule_tab';
$this->lang = true;
$this->context = Context::getContext();
$this->fieldImageSettings = array('name' => 'image', 'dir' => 'mymodule');
parent::__construct();
}
public function postProcess()
{
if (Tools::isSubmit('submitAdd'.$this->table))
{
// Create object
...
// Save object
...
}
}
2. Класс модуля /mymodule/mymodule.php
<?php
class Mymodule extends Module
{
public function __construct()
{
....
}
public function install()
{
....
// Install Tabs
$parent_tab = new Tab();
$parent_tab->name[$this->context->language->id] = $this->l('My Tab');
$parent_tab->class_name = 'AdminMyмodule';
$parent_tab->id_parent = 0;
$parent_tab->module = $this->name;
$parent_tab->add();
...
}
public function displayForm()
{
...
return $this->display(__FILE__, 'views/templates/admin/content.tpl');
}
3. Шаблон страницы /mymodule/views/templates/admin/content.tpl