Comment devenir un gourou D'OpenCart?
il semble qu'ils n'aient pas de documentation à part quelques appels api sur leurs forums officiels. J'ai de l'expérience avec Zend framework et CodeIgniter framework. Est-ce que les maîtres D'OpenCart peuvent me recommander la meilleure façon de l'apprendre et de maîtriser en peu de temps? Je dois faire un gros projet avec elle bientôt.
4 réponses
OpenCart 1.5.X developer guide de démarrage rapide pour les débutants
ce guide est écrit pour les développeurs déjà familiers 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 pertinente
Comprendre Les Bibliothèques
toutes les fonctionnalités de la bibliothèque sont accessibles par le contrôleur, le Modèle et les vues en utilisant $this->library_name
. Tous ces documents se trouvent dans le dossier /system/library/
. Par exemple, pour accéder aux produits du panier d'achat actuel, vous devez utiliser la classe Cart
, qui est dans /system/library/cart.php
et peut être accédé en utilisant $this->cart->getProducts()
articles D'usage courant
-
customer.php
- en relation avec le client fonctions -
user.php
- Admin relatives à l'utilisateur des fonctions de -
cart.php
- Panier fonctions associées -
config.php
- tous les réglages sont chargés à partir de ce -
url.php
- fonctions de génération D'URL
comprendre le paramètre de route
OpenCart-cadre s'appuie sur le route=aaa/bbb/ccc
dans le paramètre query string pour savoir quoi charger, et est la fonctionnalité sous-jacente pour trouver les fichiers que vous devez éditer pour chaque page. La plupart des routes utilisent en fait seulement le aaa/bbb
qui devrait ê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 le contrôleur ou les dossiers de modèle. La deuxième partie se rapporte habituellement au nom de fichier, sans le .php
ou .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 le dossier /catalog/language/
du sous-dossier your-language
. Dans cela, les valeurs générales de texte utilisées à travers les différentes pages sont stockées dans le fichier your-language.php
à l'intérieur du dossier, donc pour la langue anglaise du côté du catalogue, vous trouverez les valeurs dans catalog/language/english/english.php
. Pour le texte de page spécifique, vous aurez besoin du route
pour la page (c'est généralement le cas, mais pas toujours comme vous pouvez spécifier n'importe quel fichier de langue que vous aimez). Par exemple , la page de recherche a la route product/search
, et donc le texte spécifique de la langue pour cette page peut être trouvé dans catalog/language/english/product/search.php
(notez 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');
alors vous pouvez utiliser la fonction de bibliothèque de langue 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 assignées dans le fichier de langue en utilisant 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 dans le langage global fichier english/english.php
sont automatiquement chargés et disponibles à utiliser sans la $this->language->load
méthode
la Compréhension des 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 dossier /catalog/controller/
. En continuant à partir du dernier exemple, le contrôleur de la page de recherche se trouve dans /product/search.php
dans ce dossier. À nouveau, remarquez que la route suivie par .php
est utilisée.
en ouvrant le fichier du contrôleur, vous verrez une classe de cas Pascal étendre la classe Controller
, appelée ControllerProductSearch
. Ceci est à nouveau spécifique à la route, avec Controller
suivi du nom du sous-dossier et du nom du fichier sans l'extension en majuscules. La capitalisation n'est pas réellement nécessaire, mais elle est recommandée pour une lisibilité aisée. Il est intéressant de noter que classnames ne prennent pas de valeurs de la sous-dossier et nom de fichier autre que Lettres et numéros. Les soulignements sont supprimés.
dans la classe sont les méthodes. Les méthodes dans la classe déclarée public
sont accessibles pour être exécutées via la route - private
ne sont pas. Par défaut, avec une route standard à deux parties ( aaa/bbb
ci-dessus), une méthode par défaut index()
est appelée. Si la troisième partie de l'itinéraire ( ccc
ci-dessus) est utilisée, cette méthode sera exécuté à la place. Par exemple, account/return/insert
chargera le fichier et la classe /catalog/controller/account/return.php
, et essayer d'appeler la méthode insert
15191080920"
La Compréhension Des Modèles
Les modèles dans OpenCart se trouvent dans le dossier /catalog/model/
et sont groupés en fonction de la fonction, et non de la route, et vous aurez donc besoin de 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 à utiliser via l'objet
$this->model_xxx_yyy
et comme pour les contrôleurs, vous ne pouvez appeler que ses méthodes public
. Par exemple, pour redimensionner une image, vous utiliseriez le modèle tool/image
et appelleriez sa méthode resize
comme suit
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
la Compréhension de l'affectation de variable dans les vues à partir du contrôleur
afin de transmettre des valeurs à la vue du contrôleur, vous il suffit d'assigner vos données à la variable $this->data
, qui est essentiellement un tableau de paires de valeurs key=>. À titre d'exemple
$this->data['example_var'] = 123;
accéder à ceci dans une vue est un peu devrait être facile à comprendre si vous êtes familier avec la méthode extract () qui convertit chaque clé en une variable. Ainsi, la clé example_var
devient $example_var
et peut être consultée en tant que telle dans la vue.
comprendre les thèmes
Les thèmes sont disponibles uniquement du côté du catalogue, et sont essentiellement un dossier de modèles, feuilles de style et images de thème. Les dossiers thématiques 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 du dossier default
15191080920"
le côté admin utilise /admin/view/template/
(sautant le /theme/theme-name/
du chemin car il ne permet pas de thèmes différents)
les fichiers de Modèles résident dans un dossier template
dans le dossier 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 une solution de rechange. Cela signifie que les thèmes peuvent être créés avec très peu de fichiers et fonctionner encore pleinement. Il réduit également la duplication de code et les problèmes que les mises à niveau sont faites
la Compréhension de points de vue (templates)
comme pour la langue et les modèles, les fichiers de vue sont généralement liés à la route, bien qu'ils n'aient pas à l'être du tout. Les modèles du côté du 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 routes à trois parties, il est généralement dans aaa/bbb_ccc.tpl
bien qu'il n'y ait pas de règle fixe. Dans l'admin, la plupart des pages, à l'exception que pages énumérant les articles, comme la page de liste de produits, sont dans catalog/product_list.tpl
et le produit éditant la forme est dans catalog/product_form.tpl
. Encore une fois, ils ne sont pas définis, mais un standard pour le panier par défaut.
le fichier template n'est en fait qu'un autre fichier php, mais avec un .TPL extension et est effectivement exécuté dans le fichier controller, donc toutes les choses que vous pouvez coder dans un controller peuvent être exécutées dans un fichier template (bien que non recommandé sauf si absolument nécessaire)
la Compréhension de l'objet de 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 en existe un
$result
retournera un objet pour SELECT
requêtes, contenant quelques propriétés
$result->row
contient les données de la première ligne si l'une ou plusieurs d'entre elles sont retourné comme un 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 ya aussi quelques méthodes supplémentaires le $this->db
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 une requête UPDATE
et ainsi de suite
$this->db->getLastId()
retourne le dernier code d'incrément 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 peuvent être consultés en utilisant $this->request
et ont été "nettoyés" pour se conformer aux guillemets magiques activé / désactivé ,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
sommaire
bien que ce qui précède ne soit pas un guide à l'épreuve des balles pour les développeurs, espérons qu'il servira de bon point de départ pour ceux qui commencent
Bibliothèque Globale des Méthodes de Base : opencart des fonctions de la bibliothèque ainsi que leurs fonctionnalités, la Plupart de ces peut être appelée à partir de n'importe où dans le catalogue ou admin dossiers (les contrôleurs, les modèles, les vues)
CACHE
$this->cache->delete($key) - Deletes cache [product, category, country, zone, language, currency,
manufacturer]
CART
$this->cart->getProducts() Gets all products currently in the cart including options, discounted prices, etc.
$this->cart->add( $product_id, $qty = 1, $options = array()) - Allows you to add a product to the cart
$this->cart->remove( $key ) - Allows you to remove a product from the cart
$this->cart->clear() - Allows you to remove all products from the cart
$this->cart->getWeight() - Sum of the weight of all products in the cart that have require shipping set to Yes
$this->cart->getSubTotal() - returns the subtotal of all products added together before tax
$this->cart->getTotal() - returns the total of all products added together after tax
$this->cart->countProducts() - returns the count of all product in the cart
$this->cart->hasProducts() - returns true if there is at least one item in the cart
$this->cart->hasStock() - returns false if there is at least one item in the cart that is out of stock
$this->cart->hasShipping() - returns true if there is at least one item in the cart that requires shipping
$this->cart->hasDownload() - returns true if there is at least one item in the cart that has a download
associated
CONFIG
$this->config->get($key) - returns setting value by keyname based on application (catalog or admin)
$this->config->set($key, $value) - set the value to override the setting value. DOES NOT SAVE TO DATABASE
CURRENCY
$this->currency->set($currency) - set or override the currency code to be used in the session
$this->currency->format($number, $currency = '', $value = '', $format = TRUE) - format the currency
$this->currency->convert($value, $from, $to) - convert a value from one currency to another. Currencies must
exist
$this->currency->getId() - get the database entry id for the current currency (1, 2, 3, 4)
$this->currency->getCode() - get the 3-letter iso code for the current currency (USD, EUR, GBP, AUD, etc)
$this->currency->getValue($currency) - get the current exchange rate from the database for the specified
currency.
$this->currency->has(currency) - Check if a currency exists in the opencart currency list
CUSTOMER
$this->customer->login($email, $password) - Log a customer in
$this->customer->logout() - Log a customer out
$this->customer->isLogged() - check if customer is logged in
$this->customer->getId() - get the database entry id for the current customer (integer)
$this->customer->getFirstName() - get customer first name
$this->customer->getLastName() - get customer last name
$this->customer->getEmail() - get customer email
$this->customer->getTelephone() - get customer telephone number
$this->customer->getFax() - get customer fax number
$this->customer->getNewsletter() - get customer newsletter status
$this->customer->getCustomerGroupId() - get customer group id
$this->customer->getAddressId() - get customer default address id (maps to the address database field)
DATABASE
$this->db->query($sql) - Execute the specified sql statement. Returns row data and rowcount.
$this->db->escape($value) - Escape/clean data before entering it into database
$this->db->countAffected($sql) - Returns count of affected rows from most recent query execution
$this->db->getLastId($sql) - Returns last auto-increment id from more recent query execution 4
DOCUMENT (*Called from controller only before renderer)
$this->document->setTitle($title) - Set page title
$this->document->getTitle()- Get page title
$this->document->setDescription($description) - Set meta description
$this->document->getDescription()- Get meta description
$this->document->setKeywords()- Set meta keywords
$this->document->getKeywords()- Get meta keywords
$this->document->setBase($base) - Set page base
$this->document->getBase() - Get page base
$this->document->setCharset($charset) - Set page charset
$this->document->getCharset() - Get page charset
$this->document->setLanguage($language) - Set page language
$this->document->getLanguage()- Get page language
$this->document->setDirection($direction) - Set page direction (rtl/ltr)
$this->document->getDirection()- Get page direction (rtl/ltr)
$this->document->addLink( $href, $rel ) – Add dynamic <link> tag
$this->document->getLinks()- Get page link tags
$this->document->addStyle( $href, $rel = 'stylesheet', $media = 'screen' ) – Add dynamic style
$this->document->getStyles()- Get page styles
$this->document->addScript( $script ) - Add dynamic script
$this->document->getScripts()- Get page scripts
$this->document->addBreadcrumb($text, $href, $separator = ' > ') – Add breadcrumb
$this->document->getBreadcrumbs()- Get Breadcrumbs
ENCRYPT
$this->encryption->encrypt($value) - Encrypt data based on key in admin settings
$this->encryption->decrypt($value) - Decrypt data based on key in admin settings
IMAGE
$this->image->resize($width = 0, $height = 0)
JSON
$this->json->encode( $data )
$this->json->decode( $data , $assoc = FALSE)
LANGUAGE
$this->language->load($filename);
LENGTH
$this->length->convert($value, $from, $to) - convert a length to another. units must exist
$this->length->format($value, $unit, $decimal_point = '.', $thousand_point = ',') - format the length to use
unit
LOG
$this->log->write($message) - Writes to the system error log
REQUEST
$this->request->clean($data) - Cleans the data coming in to prevent XSS
$this->request->get['x'] - Same as $_GET['x']
$this->request->post['x'] - Same as $_POST['x']
RESPONSE
$this->response->addHeader($header) - additional php header tags can be defined here
$this->response->redirect($url) - redirects to the url specified
TAX
$this->tax->setZone($country_id, $zone_id) - Set the country and zone id for taxing (integer)
$this->tax->calculate($value, $tax_class_id, $calculate = TRUE) - Calculate all taxes to be added to the total
$this->tax->getRate($tax_class_id) - Get the rates of a tax class id
$this->tax->getDescription($tax_class_id) - Get the description of a tax class id
$this->tax->has($tax_class_id) - Check if a tax class id exists in opencart
SESSION
$this->session->data['x'] - Same as $_SESSION['x']
il y a un site Wiki OpenCart avec de la documentation pour les développeurs débutants. Suivez les urls données ci-dessous pour plus de détails:
http://wiki.opencarthelp.com/doku.php?id=start
http://wiki.opencarthelp.com/doku.php?id=methods_reference
E. G. La référence de la méthode contient des détails pour:
- Login Client
- DB Access
- Panier De La Manipulation
- Config
- Cache
- Traitement Des Devises
il y a encore quelques pages en construction mais cela va être utile.
[mise à Jour]
en date de Jan-2018, opencarhelp.com domaine vers le bas.
PHP est un assez grand langage avec plus de 5000 fonctions intégrées donc une stratégie pour apprendre une nouvelle plate-forme est d'identifier les fonctions qu'il utilise le plus souvent et de passer un certain temps à apprendre à les connaître très bien.
j'ai lancé des requêtes sur le code source D'OpenCart et les 10 fonctions les plus couramment utilisées sont:
array()
count()
explode()
implode()
mktime()
delete()
time()
date()
sprintf()
list()
tous les 52 listés ici ainsi que les commandes Bash Linux que vous pouvez utiliser sur n'importe quelle codebase pour identifier les fonctions couramment utilisées: https://www.antropy.co.uk/blog/efficient-learning-for-new-opencart-developers /