Guide de démarrage rapide du développeur OpenCart 1.5.X pour les débutants
Ce guide est écrit pour les développeurs déjà familiarisés avec PHP, OOP et l'architecture MVC
Dans ce qui suit, vous verrez des exemples pour le côté catalogue du panier. Le côté admin est identique en fonction à l'exception des vues qui sont notées dans la section correspondante
Comprendre les bibliothèques
Toutes les fonctionnalités de la bibliothèque sont accessibles via 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 actuel, vous devrez utiliser la Cart
classe, qui se trouve dans /system/library/cart.php
et est accessible en utilisant$this->cart->getProducts()
Articles couramment utilisés
customer.php
- Fonctions liées au client
user.php
- Fonctions liées à l'utilisateur administrateur
cart.php
- Fonctions liées au panier
config.php
- Tous les paramètres sont chargés à partir de ce
url.php
- Fonctions de génération d'URL
Comprendre le paramètre d'itinéraire
Le cadre d'OpenCart repose sur le route=aaa/bbb/ccc
paramètre de chaîne de requête pour savoir ce qu'il faut charger, et constitue la fonctionnalité de base pour trouver les fichiers que vous devez modifier pour chaque page. La plupart des routes n'utilisent en fait que le aaa/bbb
qui doit être considéré comme deux parties, mais certaines contiennent trois parties aaa/bbb/ccc
La première partie aaa
généralement liée au dossier dans un dossier générique tel que les dossiers de contrôleur ou de modèle. La deuxième partie concerne généralement le nom du fichier, sans l' extension .php
ou l' .tpl
extension correspondante. 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 le /catalog/language/
dossier du your-language
sous - dossier. Dans ce cadre, les valeurs de texte générales utilisées sur différentes pages sont stockées dans le your-language.php
fichier à l'intérieur du dossier, de sorte que pour la langue anglaise du côté catalogue, vous trouverez les valeurs dans catalog/language/english/english.php
. Pour un texte de page spécifique, vous aurez besoin du route
pour la page (c'est généralement le cas, mais pas toujours car vous pouvez spécifier n'importe quel fichier de langue que vous aimez). Par exemple, la page de recherche a l'itinéraire product/search
, et par conséquent, le texte spécifique à la langue de cette page peut être trouvé dans catalog/language/english/product/search.php
(Notez que le nom du fichier et le sous-dossier correspondent à l'itinéraire suivi par .php
.
Pour charger la langue dans un contrôleur, vous utilisez
$this->language->load('product/search');
Ensuite, vous pouvez utiliser la fonction de bibliothèque de langues get
pour récupérer des textes de langue spécifiques, tels que
$some_variable = $this->language->get('heading_title');
Les variables de langue sont affecté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 une utilisation sans la $this->language->load
méthode
Comprendre les contrôleurs
Les contrôleurs sont chargés en fonction de route
et sont assez simples à comprendre. Les contrôleurs se trouvent dans le /catalog/controller/
dossier. Dans la continuité du dernier exemple, le contrôleur de la page de recherche se trouve /product/search.php
dans ce dossier. Notez à nouveau que l'itinéraire suivi par .php
est utilisé.
En ouvrant le fichier du contrôleur, vous verrez un nom de classe Pascal Case étendant la Controller
classe, appelé ControllerProductSearch
. Ceci est encore une fois spécifique à l'itinéraire, Controller
suivi du nom du sous-dossier et du nom du fichier sans l'extension en majuscule. La capitalisation n'est pas réellement requise, mais elle est recommandée pour une lisibilité facile. Il convient de noter que les noms de classe ne prennent aucune valeur du sous-dossier et du nom de fichier autre que des lettres et des chiffres. Les traits de soulignement sont supprimés.
Au sein de la classe se trouvent les méthodes. Les méthodes de la classe déclarée public
sont accessibles pour être exécutées via la route - private
ne le sont pas. Par défaut, avec une route standard en deux parties ( aaa/bbb
ci-dessus), une index()
méthode par défaut est appelée. Si la troisième partie d'une route ( 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
fichier et la classe, et essaiera d'appeler la insert
méthode
Comprendre les modèles
Les modèles d'OpenCart se trouvent dans le /catalog/model/
dossier et sont regroupés en fonction de la fonction et non de l'itinéraire, et vous devrez donc les charger dans votre contrôleur via
$this->load->model('xxx/yyy');
Cela chargera le fichier dans le sous-dossier xxx
appelé yyy.php
. Il est alors disponible pour être utilisé via l'objet
$this->model_xxx_yyy
et comme avec les contrôleurs, vous ne pouvez appeler que ses public
méthodes. Par exemple, pour redimensionner une image, vous utiliseriez le tool/image
modèle et appelez sa resize
méthode comme suit
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Comprendre l'affectation des variables dans les vues du contrôleur
Afin de transmettre des valeurs à la vue depuis le contrôleur, vous devez simplement affecter vos données à la $this->data
variable, qui est essentiellement un tableau de paires clé => valeur. Par exemple
$this->data['example_var'] = 123;
L'accès à cela dans une vue est un peu facile à comprendre si vous êtes familier avec la méthode extract () qui convertit chaque clé en une variable. Ainsi, la example_var
clé devient $example_var
et est accessible en tant que telle dans la vue.
Comprendre les thèmes
Les thèmes sont disponibles uniquement du côté catalogue et sont essentiellement un dossier de modèles, de feuilles de style et d'images de thèmes. Les dossiers de thèmes sont placés dans le /catalog/view/theme/
dossier suivi du nom du thème. Le nom du dossier n'a pas d'importance à l'exception du default
dossier
Le côté administrateur utilise /admin/view/template/
(en sautant /theme/theme-name/
du chemin car il n'autorise pas des thèmes différents)
Les fichiers de modèle résident dans un template
dossier du dossier de 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é à la place comme solution de secours. Cela signifie que les thèmes peuvent être créés avec très peu de fichiers et fonctionner toujours pleinement. Cela réduit également la duplication du code et les problèmes lors des mises à niveau
Comprendre les vues (modèles)
Comme pour le langage et les modèles, les fichiers de vue sont généralement liés à l'itinéraire, bien que cela ne soit pas du tout nécessaire. Les modèles du côté catalogue se trouvent généralement dans /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 product/search.tpl
. Pour les itinéraires en trois parties, c'est généralement aaa/bbb_ccc.tpl
bien qu'il n'y ait pas de règle fixe. Dans l'administrateur, la plupart des pages suivent cela, à l'exception des pages répertoriant des éléments, comme la page de liste des produits, catalog/product_list.tpl
et le formulaire de modification du produit catalog/product_form.tpl
. Encore une fois, ceux-ci ne sont pas définis, mais 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 est en fait exécuté dans le fichier du contrôleur, par conséquent, toutes les choses que vous pouvez coder dans un contrôleur peuvent être exécutées dans un fichier modèle (bien que ce ne soit pas recommandé sauf si nécessaire)
Comprendre l'objet de base de données
Les requêtes sont exécutées à l'aide de
$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 en existe un
$result
renverra un objet pour les SELECT
requêtes, contenant quelques propriétés
$result->row
contient les données de la première ligne si une ou plusieurs sont renvoyées sous forme de tableau associatif
$result->rows
contient un tableau de résultats de ligne, idéal pour boucler en utilisant foreach
$result->num_rows
contient le nombre de résultats retournés
Il existe également quelques méthodes supplémentaires dont $this->db
dispose l' objet
$this->db->escape()
utilise mysql_real_escape_string () sur la valeur passée
$this->db->countAffected
renvoie le nombre de lignes affectées par une UPDATE
requête et ainsi de suite
$this->db->getLastId()
renvoie le dernier identifiant d'incrémentation automatique en utilisant mysql_insert_id ()
Comprendre les variables réservées
OpenCart a des variables prédéfinies à utiliser à la place de la norme $_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 se conformer 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 à toute épreuve pour les développeurs, j'espère qu'il servira de bon point de départ pour ceux qui commencent.