Как стать гуру 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/