Как стать гуру OpenCart?


похоже, что у них нет документации, кроме некоторых вызовов api на их официальных форумах. У меня есть опыт работы с Zend framework и CodeIgniter framework. Может ли любой мастер OpenCart порекомендовать мне лучший способ изучить его и освоить в кратчайшие сроки? Мне нужно сделать большой проект с ним в ближайшее время.

4 95

4 ответа:

OpenCart 1.5.X разработчик краткое руководство для начинающих

это руководство написано для разработчиков, уже знакомых с PHP, ООП и архитектурой MVC

ниже вы увидите примеры для стороны каталога корзины. Административная сторона идентична по функции за исключением представлений, которые отмечены в соответствующем разделе


Понимание Библиотеки

все функции библиотеки доступен через контроллер, модель и представления с помощью $this->library_name. Все это можно найти в . Например, чтобы получить доступ к продуктам текущей корзины покупок, вам нужно будет использовать Cart класса, который находится в /system/library/cart.php и могут быть доступны с помощью $this->cart->getProducts()

обычно используемые элементы

  • customer.php функции для работы с клиентом
  • user.php - функции, связанные с Администратором
  • cart.php - связанные корзину функции
  • config.php - все настройки загружаются из это
  • url.php - функции генерации URL

понимание параметра маршрута

фреймворк OpenCart опирается на route=aaa/bbb/ccc в параметре строки запроса, чтобы знать, что загружать, и является основной функцией для поиска файлов, которые необходимо отредактировать для каждой страницы. Большинство маршрутов на самом деле используют только aaa/bbb, которые следует рассматривать как две части, однако некоторые содержат три части aaa/bbb/ccc первая часть aaa обычно относится к папке в общей папке, такой как папки контроллера или шаблона. Вторая часть обычно относится к имени файла, без соответствующих .php или на your-language папку. При этом общие текстовые значения, используемые на разных страницах, сохраняются в your-language.php файл внутри папки, так что для английского языка на стороне каталога, вы найдете значения в catalog/language/english/english.php. Для конкретного текста страницы, вам понадобится route для страницы (как правило, это так, но не всегда как вы можете указать любой языковой файл, который вам нравится). Например, на странице поиска есть маршрут product/search, и поэтому конкретный текст для этой страницы можно найти в catalog/language/english/product/search.php (обратите внимание, что имя файла и подпапка соответствуют маршруту, за которым следует .php.

загрузить язык в контроллер, вы используете

$this->language->load('product/search');

затем вы можете использовать функцию библиотеки языков get для получения конкретных языковых текстов, таких как

$some_variable = $this->language->get('heading_title');

языковые переменные назначаются в языковом файле с помощью специальной переменной $_ массив ключей и значений текста. В вашем /catalog/language/english/product/search.php вы должны найти что-то похоже на

$_['heading_title']     = 'Search';

значения в глобальном языковом файле english/english.php автоматически загружаются и доступны для использования без $this->language->load метод


контроллеры понимание

контроллеры загружаются на основании route и довольно прямо вперед, чтобы понять. Контроллеры расположены в . Продолжая с последнего примера, контроллер для страницы поиска находится в /product/search.php в этой папке. Уведомление опять же, что маршрут следовал это.

открыв файл контроллера, вы увидите имя класса Pascal Case, расширяющее Controller класс, называемый ControllerProductSearch. Это опять же специфично для маршрута, с Controller далее следует имя вложенной папки и имя файла без заглавной буквы расширения. Капитализация на самом деле не требуется, но рекомендуется для удобства чтения. Стоит отметить, что имена классов не принимают никаких значений из подпапки и имени файла другие, чем буквы и цифры. Подчеркивания удаляются.

внутри класса методы. Методы в объявленном классе public доступны для запуска по маршруту -private нет. По умолчанию, со стандартным маршрутом из двух частей (aaa/bbb выше), по умолчанию index() метод называется. Если третья часть маршрута (ccc выше) используется, этот метод будет запущен вместо этого. Например, account/return/insert загрузка /catalog/controller/account/return.php файл и класс, и попробуйте вызвать insert метод


Модели Понимания

модели в OpenCart находятся в /catalog/model/ папки и сгруппированы на основе функции, а не маршрута, и поэтому вам нужно будет загрузить их в свой контроллер через

$this->load->model('xxx/yyy');

это загрузит файл в подпапку xxx под названием yyy.php. Затем он доступен для использования через объект

$this->model_xxx_yyy

и как с контроллерами, вы можете только вызвать его public методы. Например, чтобы изменить размер изображения, вы должны использовать tool/image модель и назвать ее resize метод следующим образом

$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);

понимание назначения переменных в представлениях от контроллера

для того, чтобы передать значения в представление с контроллера, вам просто нужно назначить свои данные на $this->data переменная, которая по существу представляет собой массив пар ключ = > значение. В качестве примера

$this->data['example_var'] = 123;

доступ к этому в виде немного должно быть легко понять, если вы знакомы с extract () метод, который преобразует каждый ключ в переменную. Так что example_var ключ $example_var и могут быть доступны как таковые в представлении.


понимание темы

темы доступны только на стороне каталога и в основном представляют собой папку шаблонов, таблиц стилей и тематических изображений. Папки темы помещаются в /catalog/view/theme/ папка, за которой следует имя темы. Имя папки не важность за исключением default папку

сторона администратора использует /admin/view/template/ (пропуск /theme/theme-name/ от пути, поскольку он не позволяет разные темы)

файлы шаблонов находятся в template папка в папке темы. Если какой-либо шаблон недоступен для выбранной темы, вместо него используется шаблон папки по умолчанию. Это означает, что темы могут быть созданы с очень небольшим количеством файлов и по-прежнему полностью функционировать. Это также уменьшает код дублирование и проблемы, как обновления сделаны


понимание представлений (шаблонов)

как и в случае с языком и моделями, файл представления обычно связан с маршрутом, хотя и не должен быть вообще. Шаблоны на стороне каталога обычно находятся в /catalog/view/theme/your-theme/template/ если он не существует, в этом случае будут использоваться шаблоны темы по умолчанию. Для нашего примера страницы поиска выше, файл product/search.tpl. Для маршрутов с тремя частями, как правило, в aaa/bbb_ccc.tpl хотя нет жесткого правила. В Администраторе большинство страниц следуют этому, за исключением того, что страницы с перечислением элементов, такие как страница списка продуктов, находятся в catalog/product_list.tpl и форма редактирования продукта в catalog/product_form.tpl. Опять же, они не установлены, но стандарт для корзины по умолчанию.

файл шаблона на самом деле просто еще один файл php, но с a .расширение tpl и фактически запускается в файле контроллера, поэтому все, что вы можете закодировать в контроллере, можно запустить в a файл шаблона (хотя и не рекомендуется без крайней необходимости)


понимание объекта базы данных

запросы выполняются с помощью

$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");

DB_PREFIX как следует из названия, это константа, содержащая префикс базы данных, если он существует

$result вернет объект для SELECT запросы, содержащие несколько свойств

$result->row содержит данные первой строки, если один или больше вы получаете ассоциативный массив

$result->rows содержит массив результатов строк, идеально подходит для циклического использования foreach

$result->num_rows содержит количество возвращенных результатов

есть также несколько дополнительных методов

методы глобальной библиотеки: основные функции библиотеки opencart наряду с их функциональными возможностями, большинство из них могут быть вызваны из любой точки каталога или папки администратора (контроллеры, модели, представления)

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']  

есть сайт OpenCart Wiki с документацией для начинающих разработчиков. Следуйте URL-адресам, приведенным ниже для получения более подробной информации:

http://wiki.opencarthelp.com/doku.php?id=start
http://wiki.opencarthelp.com/doku.php?id=methods_reference

например, ссылка на метод имеет детали для:

  1. Вход Для Клиентов
  2. доступ к БД
  3. Корзина Обработка
  4. Config
  5. кэш
  6. Валюты

все еще есть некоторые страницы в стадии разработки, но это будет полезно.

[обновление]

по состоянию на январь-2018, opencarhelp.com домен не работает.