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.

95
demandé sur tereško 2012-11-20 21:45:51

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

300
répondu Jay Gilford 2017-05-11 20:31:43

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 = ' &gt; ') – 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']  
35
répondu Abdul Rehman 2016-09-07 07:17:28

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:

  1. Login Client
  2. DB Access
  3. Panier De La Manipulation
  4. Config
  5. Cache
  6. 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.

9
répondu Dharmang 2018-01-09 12:22:43

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 /

0
répondu Paul Feakins 2017-11-20 10:23:50