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

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

 KAD03 дек. 2015 г., 20:21
Это действительно важный вопрос, иногда помогает преодоление стандартов SO ...
 CodeCrack20 февр. 2018 г., 01:07
@BipulRoy Я рад! Похоже, этоЭто популярный вопрос сейчас!
 Pacerier05 окт. 2014 г., 21:17
Увидетьdocs.opencart.comиобзор фреймворка от Qphoria, Также просмотрите темыФорумы OpenCart> Служба поддержки, В будущем, мы надеемся, у нас будет специальный сайт OpenCart SE по адресуarea51.stackexchange.com/proposals/77558/opencart
 Bipul Roy30 окт. 2017 г., 09:24
Большое спасибо за этот вопрос, он мне очень помог

Ответы на вопрос(6)

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

уже знакомых с PHP, ООП и архитектурой MVC.

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

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

Все функциональные возможности библиотеки доступны через Controller, Model и Views, используя$this->library_name, Все это можно найти в/system/library/ папка. Например, для доступа к текущей корзине покупокпродукты, вынужно будет использовать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 или же.tpl расширение. Третья часть поясняется в разделе «Понимание контроллеров " ниже

Понимание языков

Языки хранятся в/catalog/language/ папка в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 и довольно просто понять. Контроллеры расположены в/catalog/controller/ папка. Продолжая последний пример, контроллер для страницы поиска находится в/product/search.php в этой папке. Еще раз обратите внимание, что маршрут, по которому следует.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;

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

Понимание тем

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

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

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

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

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

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

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

Запросы выполняются с использованием

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

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

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

$result->row содержит первый рядs данные, если один или несколько возвращаются как ассоциативный массив

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

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

Есть также несколько дополнительных методов$this->db объект имеет

$this->db->escape() использованияmysql_real_escape_string () на переданной стоимости

$this->db->countAffected возвращает количество строк, затронутыхUPDATE запрос и так далее

$this->db->getLastId() возвращает идентификатор последнего автоматического приращения, используяmysql_insert_id ()

Понимание зарезервированных переменных

OpenCart имеет предопределенные переменные для использования вместо стандартных,,,,,$_GET$_POST$_SESSION$_COOKIE$_FILES$_REQUEST А ТАКЖЕ$_SERVER

$_SESSION редактируется с помощью$this->session->data где данные являются ассоциативным массивом, имитирующим$_SESSION

Все остальные могут быть доступны с помощью$this->request и былиочищено» соблюдать магические кавычки включенные / отключенные, поэтому

$_GET становится$this->request->get

$_POST становится$this->request->post

$_COOKIE становится$this->request->cookie

$_FILES становится$this->request->files

$_REQUEST становится$this->request->request

$_SERVER становится$this->request->server

Резюме

Хотя вышесказанноеt пуленепробиваемое руководство для разработчиков, надеюсь, оно послужит хорошей отправной точкой для начинающих

 Stann0rz21 нояб. 2012 г., 10:23
Отличный гид Джей
 James P.05 июн. 2013 г., 22:59
Спасибо за публикацию. Очень полезно.
 CodeCrack21 нояб. 2012 г., 02:24
Спасибо! Где ты это взял?
 Stann0rz06 дек. 2012 г., 10:44
Это должно быть предоставлено статус сообщества Wiki
 Jay Gilford22 мар. 2013 г., 19:57
@UltimateKing - это руководство уже предоставляет вам более чем достаточно информации, чтобы начать создавать свои собственные моды. Есть также учебные пособия, относящиеся к разработке модулей в сети
 Jay Gilford21 нояб. 2014 г., 22:19
@Septronic - Не уверен, как бы вы создали продукт из заказа, но если вы хотите добавить товары в корзину из заказа, там 'с "Изменение порядка" пункт на странице списка заказов клиентов
 Neeraj22 июл. 2014 г., 07:19
Привет @JayGilford это действительно очень полезное руководство для начинающих
 Jay Gilford21 нояб. 2012 г., 12:39
@CodeCrack - это настолько продвинутый, насколько это возможно, от меня в любом случае. Отсюда должно быть довольно просто выяснить, что происходит в каждом контроллере и как найти представления, которые вы хотите редактировать и т. Д.
 Muhammad10 мар. 2015 г., 17:37
Вы поразили меня - я искал это в блогах, и я нене ожидаю найти его в stackoverflow - очень информативно
 Pacerier04 окт. 2014 г., 14:36
@JayGilford, термин "CamelCase» является неоднозначным ... должен быть записан как Pascal Case вместо.
 Gregory William Bryant05 авг. 2014 г., 20:07
@JayGilford, отличный гид, он действительно кое-что очистил для меня.
 Harish ST29 июн. 2018 г., 11:20
Как все говорили, этот выделяется!
 Jay Gilford21 нояб. 2012 г., 02:56
Я это написал. Я подумал, что нужно написать и подходит квестон
 Ruzihm18 мая 2019 г., 00:39
Этот ответ содержит некоторую полезную информацию, но на самом деле его следует разбить на отдельные ответы для отдельных вопросов, чтобы упростить поиск и указать на дубликаты вопросов.
 CodeCrack21 нояб. 2012 г., 03:17
Очень хорошо. Способ более информативный, чем у большинства гидов. У вас есть какой-нибудь шанс?
 Jay Gilford04 окт. 2014 г., 15:25
@Pacerier хорошо заметили, хотя дело на самом деле не имеет значения, просто используется стандарт. Пишуcontrollerproductsearch будет работать тоже
 Jay Gilford23 мар. 2013 г., 23:47
Модули, как и любая другая часть MVC. Oни'Просто контроллеры, модели и представления, и если вы будете следовать основным принципам, описанным выше, у вас не будет никаких проблем. Насколько я'Мы уже говорили, что в сети уже есть множество статей по созданию модов.
 VIVEK-MDU23 мар. 2013 г., 11:32
Привет, @ JayGilford. Спасибо за твои отзывчивые комментарии ... Я просто следую твоей инструкции по созданию модуля тоже ... но я изо всех сил пытаюсь связаться с контроллером и моделью (т.е.). Я не могу связаться с моделью и контроллером, что может я делаю для этого ..?
 Septronic21 нояб. 2014 г., 21:47
Фантастическое объяснение. Большое спасибо за ваши усилия. Могу я просто спросить, есть ли способ создания нового продукта на основе параметров, указанных в заказе? Я'искал почти месяц, но безрезультатно. Еще раз большое спасибо за ваш урок.
 VIVEK-MDU26 мар. 2013 г., 12:31
Привет @JayGilford ... спасибо за твои руководящие принципы ... я искал в сети в некотором учебнике .. Здесь ссылки (opencartnews.com/tutorials/...) (opencartnews.com/tutorials/...) (opencartnews.com/tutorials/...Я не могу получить решение для этого ... Вы могли бы предоставить учебник для этого ...
 Septronic22 нояб. 2014 г., 02:35
@JayGilford Спасибо Джей за обновление. Да, я на самом деле искал, чтобы создать продукт из заказа, когда этот заказ размещен. что-то вроде того, когда кто-то перечисляет элемент на eBay. Из любопытства, если вы знаете лучший способ сделать это, я бы купил вам пиво, если вывокруг Лондона или Кембриджа Великобритании в следующий раз :)

более 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/

иков. Следуйте приведенным ниже URL для получения более подробной информации:

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

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

Например. Ссылка на метод содержит подробности для:

Вход для клиентовДоступ к БДОбработка корзины покупокконфигкэшОбработка валюты

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

[Обновить]

По состоянию на январь 2018 года домен opencarhelp.com не работает.

 Pacerier03 окт. 2014 г., 05:19
Кажется, что через пару месяцев все еще не хватает информации. Этот проект был заброшен?
 Dharmang10 окт. 2014 г., 10:18
@Pacerier, я не уверен в этом.
 Nassim11 июн. 2015 г., 12:44
это отличная страница, даже открытая корзина вики ссылается на нее, вы можете увидеть ссылку здесьwiki.opencarthelp.com/doku.php?id=opencart_framework

OpenCart Gurus:

OpenCart Видео Учебники

Введение и содержание Это видео проходит через введение в сериалУстановка OpenCart localhost Это видео проходит установку OpenCart в localhostСтруктура файлов и папок Opencart Описывает структуру файлов и папок OpenCartСоздание схемы таблицы базы данных в OpenCart Он показывает схему таблицы базы данных и показывает, как создавать таблицы базы данных в OpenCart.Библиотека предопределенных объектов библиотеки OpenCart методы Он описывает предопределенные объекты библиотеки OpenCart Методы и показывает, где их найти.

Шаблон MVCL, поток кода и запрос ответ в OpenCart Это показывает образец MVCL, поток кода и запрос & ответ в OpenCart. Они описывают поток как на картинке ниже:

Установить, настроить и удалить модуль Opencart В нем показаны три способа загрузки модулей, а затем установки, настройки и удаления модуля / расширения OpenCart 3.

Макеты и позиции в Opencart 3 Он описывает макеты и положения OpenCart 3. Он показывает, как показать настраиваемые макеты для разных страниц, приводя примеры категорий страниц. Мы показываем другой макет для другой категории.

Обзор событий Opencart Вы узнаете, что такое события в OpenCart, как они работают и что делает их такими полезными.

Документация по Opencart API для разработчика Это видео покажет, как использовать и сделать пользовательский API OpenCart

Как только вы увидите эти видео, вы можете начать кодировать :)

я хотел бы предложить другой подход к освоению OpenCart на основе моего опыта.

Учиться путем практики

Создавая свою собственную платформу OpenCart с нуля с несколькими файлами, вы можете понять, как все соединено. Я буду подражать файловой структуре OpenCart для вас.

Создать файлindex.php

<!--?php
// My simpleCart

</code-->
1. Реестр

Opencart использует шаблон Registry для составления списка всех экземпляров загруженных классов. Это сердце вашего приложения OpenCart. Затем объект реестра передается каждой категории, модели и библиотеке для быстрого доступа к другим объектам.

создать файл с путем<code>/system/engine/registry.php</code>

<code><!--?php
// Registry class. 
class Registry
{
    private $data = array();

    public function set($key, $value){
        $this--->data[$key] = $value;
    }

    public function get($key){
        return (isset($this->data[$key])) ? $this->data[$key] : false;
    }
}

</code>

в вашем<code>index.php</code>

<code><!--?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');

//initialize registry
$registry = new Registry;

</code--></code>
<code>2. Выход</code>

<code>Теперь давайтеs добавить вывод, который будет нашим HTML в будущем. В конце концов, вся идея заключается в том, чтобы отправить строку текста в браузер.</code>

<code>Создать файл<code>system/library/response.php</code></code>

<code><code><!--?php
class Response {
    private $output;

    public function getOutput() {
        return $this--->output;
    }

    public function setOutput($output) {
        $this->output = $output;
    }

    public function output() {
        if ($this->output) {
            echo $this->output;
        }
    }
}
</code></code>

<code>и в вашем<code>index.php</code></code>

<code><code><!--?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add response object to the registry
$registry--->set('response', $response);

//lets set an output as a test
$registry->get('response')->setOutput('Hello World');

//send the output to the client
$registry->get('response')->output();

</code></code>

<code>Обратите внимание, я добавил Hello world только в качестве примера. Мы удалим это дальше. Обновите свой сайт, чтобы проверить это. Браузер должен отображаться.<code>Hello World</code></code>

<code>3. Контроллеры</code>

<code>Думайте о контроллерах как о страницах. Они будут определять, что будет отображаться клиенту: текст, HTML, JSON, скачать или даже изображение. Сейчас нам просто нужна страница, которая отправляет текст.</code>

<code>Мы создадим контроллер для<code>home</code> стр.</code>

<code>добавить файл с путем<code>catalog/controller/common/home.php</code></code>

<code><code><!--?php

class ControllerCommonHome{

    private $registry = array();

    public function __construct($registry){
        $this--->registry = $registry;
    }

    public function index(){

        $output = 'Home Page';
        //using the registry to get the response object and set the Output
        $this->registry->get('response')->setOutput($output);
    }
}
</code></code>

<code>и отредактируйте свой<code>index.php</code></code>

<code><code><!--?php
// My simpleCart

//load registry
require_once('system/engine/registry.php');
//load response
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add resoinse object to the registry
$registry--->set('response', $response);

//load controller common/home
require_once('catalog/controller/common/home.php');
$controller = new ControllerCommonHome($registry);
$controller->index();

//send the output to the client
$registry->get('response')->output();
</code></code>

<code>обратите внимание, как я прошел<code>$refistry</code> в ControllerCommonHome, чтобы я мог получить доступ к нему внутри контроллера.</code>

<code>4. Маршрутизатор</code>

<code>Мы нене хочу, чтобы контроллеры были жестко закодированы, верно. Мы будем использовать параметр<code>route</code> с адреса URL, чтобы сказать нашей корзине, какой контроллер загрузить.</code>

<code>Создать файл с путем<code>system/library/request.php</code></code>

<code><code><!--?php
class Request {
    public $get = array();

    //for now I just need the $_GET parameter
    public function __construct() {
        $this--->get = $_GET;
    }
}
</code></code>

<code>Создайте класс Router, который будет отвечать за инициализацию файла Controller на основе маршрута (другими словами: динамически вызывать контроллер)</code>

<code><code><!--?php
class Router {
    private $registry;

    public function __construct($registry) {
        $this--->registry = $registry;
    }

    public function dispatch($route) {
        require_once('catalog/controller/'.$route.'.php');
        $class = "Controller".str_replace('/', '', $route);
        $controller = new $class($this->registry);
        $controller->index();
    }
}
</code></code>

<code>загрузить его в свой<code>index.php</code></code>

<code><code><!--?php
require_once('system/engine/registry.php');
require_once('system/engine/router.php');
require_once('system/library/response.php');
require_once('system/library/request.php');

$registry = new Registry;

$response = new Response;
$registry--->set('response', $response);

$request = new Request;
$registry->set('request', $request);

//get the route from the url
if(isset($registry->get('request')->get['route'])){
    $route = $registry->get('request')->get['route'];
}else{
    $route = 'common/home';
}

//initiate the router and dispatch it base on the route
$router = new Router($registry);
$router->dispatch($route);


$registry->get('response')->output();
</code></code>

<code>Обратите внимание, как я загружаю все в<code>$registry</code> а затем передать его<code>$router</code> который затем передает его.<code>$controller</code></code>

<code>Этот пост уже слишком длинный, но я надеюсь, что он даст общее представление о шаблоне MVC в OpenCart.</code>

<code>Если вы хотите, чтобы я продолжил читать этот пост и рассказал, как работают другие вещи, такие как модели и представления, оцените этот ответ, чтобы я знал.</code>

<code>Также проверьте мой Youtube<a href="https://www.youtube.com/dreamvention">https://www.youtube.com/dreamvention</a> и мой блог<a href="https://dreamvention.com/blog">https://dreamvention.com/blog</a> Я буду публиковать больше советов и учебных пособий для вас, ребята!</code>

Основные функции библиотеки 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 addres,s 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']  

Ваш ответ на вопрос