====== Modules ======
===== fichiers =====
====admin====
^vue|admin/view/template/module/nom_module.tpl|
^controleur|admin/controller/module/nom_module.php|
^fichier de langue|admin/language/french/module/nom_module.php|
^ |admin/language/english/module/nom_module.php|
====catalog====
^vue|catalog/controller/module/nom_module.php|
^vue|catalog/view/module/nom_module.tpl|
^fichier de langue (opt.)|catalog/language/french/module/nom_module.php|
^ |catalog/language/english/module/nom_module.php|
=====modèles basiques=====
====admin====
===controleur===
language->load('module/basic_module'); /* nom module à modifier */
/* 2.2. assignements du titre du module d'après le fichier de langage */
$this->document->setTitle($this->language->get('heading_title'));
/* 2.3. chargement du modèle de sauvegarde des données utilisé par les modules */
$this->load->model('setting/setting');
/* 2.4. si envoie de données et bonne validation de celles-ci */
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
/* 2.4.1. sauvegarde des données */
$this->model_setting_setting->editSetting('basic_module', $this->request->post); /* nom module à modifier */
/* 2.4.2. assignement du message de succès $success */
$this->session->data['success'] = $this->language->get('text_success');
/* 2.4.3. redirection vers la liste des modules */
$this->redirect($this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'));
}
/* 2.5. assignement de variables générales */
/* 2.5.1 langage */
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_enabled'] = $this->language->get('text_enabled');
$this->data['text_disabled'] = $this->language->get('text_disabled');
/* 2.5.2. positions */
$this->data['text_content_top'] = $this->language->get('text_content_top');
$this->data['text_content_bottom'] = $this->language->get('text_content_bottom');
$this->data['text_column_left'] = $this->language->get('text_column_left');
$this->data['text_column_right'] = $this->language->get('text_column_right');
/* 2.5.3. layouts */
$this->data['entry_layout'] = $this->language->get('entry_layout');
$this->data['entry_position'] = $this->language->get('entry_position');
$this->data['entry_status'] = $this->language->get('entry_status');
$this->data['entry_sort_order'] = $this->language->get('entry_sort_order');
/* 2.5.4. boutons */
$this->data['button_save'] = $this->language->get('button_save');
$this->data['button_cancel'] = $this->language->get('button_cancel');
$this->data['button_add_module'] = $this->language->get('button_add_module');
$this->data['button_remove'] = $this->language->get('button_remove');
/* 2.5.5. spécifiques au module */
$this->data['entry_text_field'] = $this->language->get('entry_text_field');
/* 2.6. assignement de la variable d'avertissement $warning */
if (isset($this->error['warning'])) {
$this->data['error_warning'] = $this->error['warning'];
} else {
$this->data['error_warning'] = '';
}
/* 2.7. assignement de la variable de code erreur $error_code */
if (isset($this->error['code'])) {
$this->data['error_code'] = $this->error['code'];
} else {
$this->data['error_code'] = '';
}
/* 2.8. assignement de la variable $breadcrumbs et construction */
$this->data['breadcrumbs'] = array();
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_home'),
'href' => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
'separator' => false
);
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('text_module'),
'href' => $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL'),
'separator' => ' :: '
);
$this->data['breadcrumbs'][] = array(
'text' => $this->language->get('heading_title'),
'href' => $this->url->link('module/basic_module', 'token=' . $this->session->data['token'], 'SSL'), /* nom module à modifier */
'separator' => ' :: '
);
/* 2.9. assignement des URL */
/* 2.9.1. URL pour validation */
$this->data['action'] = $this->url->link('module/basic_module', 'token=' . $this->session->data['token'], 'SSL'); /* nom module à modifier */
/* 2.9.2. URL pour annulation */
$this->data['cancel'] = $this->url->link('extension/module', 'token=' . $this->session->data['token'], 'SSL');
/* 2.10. assignation des champs du formulaire depuis POST ou à défaut depuis BDD */
if (isset($this->request->post['basic_module_text_field'])) { /* nom module à modifier */
$this->data['basic_module_text_field'] = $this->request->post['basic_module_text_field']; /* nom module à modifier */
} else {
$this->data['basic_module_text_field'] = $this->config->get('basic_module_text_field'); /* nom module à modifier */
}
/* 2.11. assignation des champs de paramétrage du module tels que layout, position, status & order, depuis POST ou à défaut depuis BDD */
$this->data['modules'] = array();
if (isset($this->request->post['basic_module_module'])) { /* nom module à modifier */
$this->data['modules'] = $this->request->post['basic_module_module']; /* nom module à modifier */
} elseif ($this->config->get('basic_module_module')) { /* nom module à modifier */
$this->data['modules'] = $this->config->get('basic_module_module'); /* nom module à modifier */
}
/* 2.12. chargement du modèle design/layout */
$this->load->model('design/layout');
/* 2.13. assignement de la variable $layouts listants les layouts disponibles */
$this->data['layouts'] = $this->model_design_layout->getLayouts();
/* 2.14. chargement du template */
$this->template = 'module/basic_module.tpl'; /* nom module à modifier */
/* 2.15. ajout de modules enfant (header/footer) */
$this->children = array(
'common/header',
'common/footer'
);
/* 2.16. rendu du module */
$this->response->setOutput($this->render());
}
/* 3. fonction de validation */
protected function validate() {
/*
3.1. vérification des permissions
*/
if (!$this->user->hasPermission('modify', 'module/basic_module')) { /* nom module à modifier */
$this->error['warning'] = $this->language->get('error_permission');
}
/*
3.2. vérification si les champs sont bien renseignés et assignation du code erreur le cas échéant
*/
if (!$this->request->post['basic_module_text_field']) { /* nom module à modifier */ // ligne 43 du tpl
$this->error['text_field'] = $this->language->get('error_text_field');
}
/*
3.3. retour booléen (false si erreur)
*/
if (!$this->error) {
return true;
} else {
return false;
}
}
}
?>
===vue===
===fichiers de langue===
====catalog====
===controleur===
class ControllerModuleBasicModule extends Controller { /* nom module à modifier */
public function index() {
/* optionnel : fichier de langage
$this->language->load('module/basic_module'); // nom module à modifier
// récupération des éléments de langue
$this->data['element'] = $this->language->get('element');
*/
/* récupération de la valeur enregistrée */
$this->data['value'] = html_entity_decode($this->config->get('basic_module_text_field')); /* nom module à modifier */
/* chemin de la vue */
$this->template = $this->config->get('config_template') . '/template/module/basic_module.tpl'; /* nom module à modifier */
/* rendu */
$this->render(); // renders the output
}
}
?>
===vue===
===fichiers de langue (optionnels)===