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 Cartclasse, qui se trouve dans /system/library/cart.phpet 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/cccparamè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/bbbqui doit être considéré comme deux parties, mais certaines contiennent trois parties aaa/bbb/cccLa première partie aaagé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 .phpou l' .tplextension 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-languagesous - dossier. Dans ce cadre, les valeurs de texte générales utilisées sur différentes pages sont stockées dans le your-language.phpfichier à 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 routepour 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 getpour 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.phpvous devriez trouver quelque chose de similaire à
$_['heading_title'] = 'Search';
Les valeurs du fichier de langue global english/english.phpsont automatiquement chargées et disponibles pour une utilisation sans la $this->language->loadméthode
Comprendre les contrôleurs
Les contrôleurs sont chargés en fonction de routeet 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.phpdans ce dossier. Notez à nouveau que l'itinéraire suivi par .phpest utilisé.
En ouvrant le fichier du contrôleur, vous verrez un nom de classe Pascal Case étendant la Controllerclasse, appelé ControllerProductSearch. Ceci est encore une fois spécifique à l'itinéraire, Controllersuivi 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 publicsont accessibles pour être exécutées via la route - privatene le sont pas. Par défaut, avec une route standard en deux parties ( aaa/bbbci-dessus), une index()méthode par défaut est appelée. Si la troisième partie d'une route ( cccci-dessus) est utilisée, cette méthode sera exécutée à la place. Par exemple, account/return/insertchargera le /catalog/controller/account/return.phpfichier et la classe, et essaiera d'appeler la insertmé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 xxxappelé 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 publicméthodes. Par exemple, pour redimensionner une image, vous utiliseriez le tool/imagemodèle et appelez sa resizemé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->datavariable, 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_varclé devient $example_varet 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 defaultdossier
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 templatedossier 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.tplbien 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.tplet 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
$resultrenverra un objet pour les SELECTrequê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->dbdispose l' objet
$this->db->escape()utilise mysql_real_escape_string () sur la valeur passée
$this->db->countAffectedrenvoie le nombre de lignes affectées par une UPDATErequê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, $_REQUESTET$_SERVER
$_SESSIONest édité en utilisant $this->session->dataoù data est un tableau associatif imitant le$_SESSION
Tous les autres sont accessibles en utilisant $this->requestet 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.