Как стать гуру OpenCart?
похоже, что у них нет документации, кроме некоторых вызовов api на их официальных форумах. У меня есть опыт работы с Zend framework и CodeIgniter framework. Может ли любой мастер OpenCart порекомендовать мне лучший способ изучить его и освоить в кратчайшие сроки? Мне нужно сделать большой проект с ним в ближайшее время.
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 = ' > ') – 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=starthttp://wiki.opencarthelp.com/doku.php?id=methods_referenceнапример, ссылка на метод имеет детали для:
- Вход Для Клиентов
- доступ к БД
- Корзина Обработка
- Config
- кэш
Валютывсе еще есть некоторые страницы в стадии разработки, но это будет полезно.
[обновление]
по состоянию на январь-2018, opencarhelp.com домен не работает.
PHP-это довольно большой язык с более 5000 встроенных функций
Я выполнил несколько запросов к исходному коду OpenCart и 10 наиболее часто используемых функций:
array() count() explode() implode() mktime() delete() time() date() sprintf() list()
все 52 перечисленные здесь, а также команды Linux bash вы можете использовать на любой кодовой базе для идентификации обычно используемых функции: https://www.antropy.co.uk/blog/efficient-learning-for-new-opencart-developers/