Guide de démarrage rapide des développeurs OpenCart 1.5.X pour les débutants
Ce guide est destiné aux développeurs déjà familiarisés avec PHP, la POO et l'architecture MVC.
Dans ce qui suit, vous verrez des exemples pour le côté catalogue du panier. Le fonctionnement de la partie administration est identique, à l'exception des vues qui sont indiquées dans la section correspondante.
Comprendre les bibliothèques
Toutes les fonctionnalités de la bibliothèque sont accessibles à travers le contrôleur, le modèle et les vues en utilisant $this->library_name
. Tous ces éléments peuvent être trouvés dans le /system/library/
dossier. Par exemple, pour accéder aux produits du panier d'achat actuel, vous devez utiliser le dossier Cart
qui se trouve dans /system/library/cart.php
et on peut y accéder en utilisant $this->cart->getProducts()
Articles couramment utilisés
-
customer.php
- Fonctions liées à la clientèle
-
user.php
- Fonctions liées aux utilisateurs de l'administration
-
cart.php
- Fonctions liées au panier
-
config.php
- Tous les paramètres sont chargés à partir de cette
-
url.php
- Fonctions de génération d'URL
Comprendre le paramètre route
Le cadre d'OpenCart s'appuie sur l'élément route=aaa/bbb/ccc
dans le paramètre de la chaîne de requête pour savoir ce qu'il faut charger, et c'est la fonction sous-jacente pour trouver les fichiers que vous devez modifier pour chaque page. La plupart des routes n'utilisent en fait que le paramètre aaa/bbb
qui doivent être considérés comme deux parties, mais certains contiennent trois parties. aaa/bbb/ccc
La première partie aaa
généralement lié au dossier à l'intérieur d'un dossier générique tel que les dossiers du contrôleur ou du modèle. La deuxième partie se rapporte généralement au nom du fichier, sans l'élément pertinent .php
o .tpl
extension. La troisième partie est expliquée dans la section "Comprendre les contrôleurs" ci-dessous.
Comprendre les langues
Les langues sont stockées dans /catalog/language/
dans le dossier your-language
sous-dossier. À l'intérieur de celui-ci, les valeurs de texte générales utilisées sur diverses pages sont stockées dans le sous-dossier your-language.php
dans le dossier, donc pour la langue anglaise du côté du catalogue, vous trouverez les valeurs dans le fichier catalog/language/english/english.php
. Pour un texte de page spécifique, vous aurez besoin de l'option route
pour la page (C'est généralement le cas, mais pas toujours car vous pouvez spécifier le fichier de langue de votre choix). Par exemple, la page de recherche a le parcours product/search
et, par conséquent, le texte spécifique à la langue de cette page se trouve à l'adresse suivante catalog/language/english/product/search.php
(Remarquez que le nom du fichier et le sous-dossier correspondent à la route suivie par .php
.
Pour charger la langue dans un contrôleur, vous utilisez
$this->language->load('product/search');
Vous pouvez alors utiliser la fonction de la bibliothèque de langue get
pour récupérer des textes linguistiques spécifiques, tels que
$some_variable = $this->language->get('heading_title');
Les variables de langue sont assignées dans le fichier de langue à l'aide d'une variable spéciale $_
qui est un tableau de clés et de valeurs de texte. Dans votre /catalog/language/english/product/search.php
vous devriez trouver quelque chose de similaire à
$_['heading_title'] = 'Search';
Les valeurs du fichier de langue global english/english.php
sont automatiquement chargées et disponibles pour être utilisées sans le $this->language->load
méthode
Comprendre les contrôleurs
Les contrôleurs sont chargés sur la base du route
et sont assez simples à comprendre. Les contrôleurs sont situés dans le /catalog/controller/
dossier. En reprenant le dernier exemple, le contrôleur de la page de recherche se trouve dans le dossier /product/search.php
dans ce dossier. Remarquez à nouveau que le chemin suivi par .php
est utilisé.
En ouvrant le fichier du contrôleur, vous verrez un nom de classe Pascal Case qui étend la classe Controller
appelé ControllerProductSearch
. Là encore, il s'agit d'une spécificité de l'itinéraire, avec Controller
suivi du nom du sous-dossier et du nom du fichier sans l'extension en majuscule. La majuscule n'est pas obligatoire, mais elle est recommandée pour faciliter la lecture. Il convient de noter que les noms de classe ne prennent pas de valeurs autres que des lettres et des chiffres dans le nom du sous-dossier et du fichier. Les underscores sont supprimés.
À l'intérieur de la classe se trouvent les méthodes. Méthodes de la classe déclarées public
sont accessibles pour être exécutés par l'itinéraire - private
ne le sont pas. Par défaut, avec une route standard en deux parties ( aaa/bbb
ci-dessus), une index()
est appelée. Si la troisième partie d'un itinéraire ( ccc
ci-dessus) est utilisée, cette méthode sera exécutée à la place. Par exemple, account/return/insert
chargera le /catalog/controller/account/return.php
et la classe, et essayez d'appeler le insert
méthode
Comprendre les modèles
Les modèles dans OpenCart se trouvent dans le /catalog/model/
et sont regroupés en fonction de la fonction, et non de la route, et vous devrez donc les charger dans votre contrôleur via
$this->load->model('xxx/yyy');
Ceci chargera le fichier dans le sous-dossier xxx
appelé yyy.php
. Il est ensuite disponible pour être utilisé via l'objet
$this->model_xxx_yyy
et, comme pour les contrôleurs, vous ne pouvez appeler ses public
méthodes. Par exemple, pour redimensionner une image, vous utiliserez la fonction tool/image
et appeler son resize
comme suit
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Comprendre l'affectation des variables dans les vues à partir du contrôleur
Pour transmettre des valeurs à la vue à partir du contrôleur, il suffit d'affecter vos données à l'attribut $this->data
qui est essentiellement un tableau de paires clé => valeur. Par exemple
$this->data['example_var'] = 123;
L'accès à ces données dans une vue est un peu plus facile à comprendre si vous êtes familier avec l'outil de gestion des données de l'entreprise. extraire() qui convertit chaque clé en une variable. Ainsi, le example_var
La clé devient $example_var
et sont accessibles en tant que tels dans la vue.
Comprendre les thèmes
Les thèmes ne sont disponibles que du côté du catalogue, et sont essentiellement un dossier de modèles, de feuilles de style et d'images de thème. Les dossiers de thèmes sont placés dans le dossier /catalog/view/theme/
suivi du nom du thème. Le nom du dossier n'a pas d'importance, à l'exception de l'option default
dossier
Le côté administrateur utilise /admin/view/template/
(en sautant le /theme/theme-name/
du chemin d'accès car il n'autorise pas les thèmes différents)
Les fichiers de modèle résident dans un template
dans le dossier du thème. Si un modèle n'est pas disponible pour le thème actuellement sélectionné, le modèle du dossier par défaut est utilisé comme solution de rechange. Cela signifie que les thèmes peuvent être créés avec très peu de fichiers tout en fonctionnant pleinement. Cela réduit également la duplication du code et les problèmes lors des mises à jour.
Comprendre les vues (modèles)
Comme pour le langage et les modèles, les fichiers de vue sont généralement liés à la route, mais ne doivent pas nécessairement l'être. Les modèles du côté du catalogue se trouvent généralement dans le dossier /catalog/view/theme/your-theme/template/
sauf s'il n'existe pas, auquel cas les modèles du thème par défaut seront utilisés. Pour notre exemple de page de recherche ci-dessus, le fichier est le suivant product/search.tpl
. Pour les routes à trois parties, il est généralement en aaa/bbb_ccc.tpl
bien qu'il n'y ait pas de règle absolue. Dans l'administration, la plupart des pages suivent cette règle, à l'exception des pages listant des articles, comme la page de liste des produits, qui sont dans la section catalog/product_list.tpl
et le formulaire d'édition du produit est dans catalog/product_form.tpl
. Encore une fois, il ne s'agit pas de paramètres, mais d'une norme pour le panier par défaut.
Le fichier modèle est en fait juste un autre fichier php, mais avec une extension .tpl et il est en fait exécuté dans le fichier contrôleur, donc toutes les choses que vous pouvez coder dans un contrôleur peuvent être exécutées dans un fichier modèle (bien que cela ne soit pas recommandé, sauf en cas de nécessité absolue).
Comprendre l'objet base de données
Les requêtes sont exécutées en utilisant
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
comme son nom l'indique, est une constante contenant le préfixe de la base de données, s'il existe.
$result
retournera un objet pour SELECT
des requêtes, contenant quelques propriétés
$result->row
contient les données de la première ligne si une ou plusieurs sont retournées sous forme de tableau associatif.
$result->rows
contient un tableau de résultats de lignes, idéal pour effectuer des boucles à l'aide de foreach.
$result->num_rows
contient le nombre de résultats retournés
Il existe également quelques méthodes supplémentaires que l $this->db
L'objet a
$this->db->escape()
utilise mysql_real_escape_string() sur la valeur passée
$this->db->countAffected
renvoie le nombre de lignes affectées par un UPDATE
requête et ainsi de suite
$this->db->getLastId()
renvoie le dernier identifiant d'auto incrémentation en utilisant mysql_insert_id()
Comprendre les variables réservées
OpenCart dispose de variables prédéfinies à utiliser à la place des variables standard. $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
ET $_SERVER
$_SESSION
est édité en utilisant $this->session->data
où data est un tableau associatif imitant le $_SESSION
Tous les autres sont accessibles en utilisant $this->request
et ont été "nettoyés" pour être conformes aux guillemets magiques activés/désactivés, donc
$_GET
devient $this->request->get
$_POST
devient $this->request->post
$_COOKIE
devient $this->request->cookie
$_FILES
devient $this->request->files
$_REQUEST
devient $this->request->request
$_SERVER
devient $this->request->server
Résumé
Bien que ce qui précède ne soit pas un guide infaillible pour les développeurs, nous espérons qu'il constituera un bon point de départ pour ceux qui débutent.
0 votes
Voir docs.opencart.com et le Aperçu du cadre de travail par Qphoria . Parcourez également les fils de discussion sur OpenCart Forums > Support . Dans le futur, nous espérons avoir un site dédié à OpenCart SE à l'adresse suivante area51.stackexchange.com/propositions/77558/opencart
0 votes
C'est vraiment une question importante, parfois le dépassement des normes de l'OS est vraiment utile...
1 votes
Merci beaucoup pour cette question, elle m'a beaucoup aidé.
0 votes
@BipulRoy Je suis heureux ! On dirait que c'est une question populaire maintenant !