Скрыть объявление
Гость Присоединяйся к складчине. Автокаталог для грузовых авто

Документация по Opencart v.2x

Тема в разделе "Обсуждения", создана пользователем Shura, 9 июн 2015.

  1. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Основы безопасности
    1.
    Удалите папку install . Об этом вам постоянно сообщают в панели администратора и дабы обезопасить систему, необходимо ее удалить.

    2. Переименовать папку admin . Так же не забывайте изменить название папки в путях файлов конфигурации, этоconfig.php и admin/config.php
    Обратите внимание. Когда вы будите устанавливать модуль или шаблон, вам необходимо предварительно в директории (модуля или шаблона) изменять стандартное название директории admin на ваш.

    2.1. Вместо выше указанного способа вы можете просто запретить доступ к папке admin с помощью .htaccess и .htpasswd
    Так же доступ к папке admin можно запретить с помощью панели управления хостингом. (о данном функционале , читайте в справке вашего хостера)

    3.
    Проверьте, закрыт ли прямой доступ к файлам посредством браузера, например к ваш-сайт/catalog/view/theme/default/template/account/edit.tpl
    Если вместо ошибки 404, вы увидели код шаблона, то вам необходимо принять меры, например в папке catalog создать файл .htaccess со следующим кодом
    Код:
    <FilesMatch "\.(php|tpl|txt)$">
    Order Deny,Allow
    Deny from all
    Allow from "ВАШ IP адрес"
    </FilesMatch>
    Тоже самое относится и к папке system. Доступ к файлам из вне должен быть полностью запрещен.
    Код:
    <Files *.*>
    Order Deny,Allow
    Deny from all
    Allow from "ВАШ-IP-адрес"
    </Files>
    Если с помощью .htaccess не удается достигнуть нужного результата, обратится к вашему "хостеру" с вопросом решения проблемы.

    4. Меняем стандартное название лог файла error.log на другое. Для этого в панели администратора в разделе Меню - Система - Настройки - вкладка Сервер в поле Файл журнала ошибок, необходимо изменить название файла.

    5. Установите права доступа 644 или 444 на указанные файлы
    Код:
    config.php
    index.php
    admin/config.php
    admin/index.php
    system/startup.php
     
  2. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Установка модулей и модификаторов

    Установка модулей

    Для того чтобы установить модуль, необходимо следовать инструкции разработчика модуля.
    Обычно установка модуля сводится к простому копированию файлов в корень вашего сайта
    (корень это там где файлы htaccess и robots.txt, index.php)

    Как пример. Вы разархивировали модуль и перед вами папка upload в которой находятся директории catalog, admin итд.
    Вот именно эти директории и необходимо копировать в корень сайта.

    Далее, обычно, модуль появляется в списке модулей Меню - Модули - Модули (если конечно обратное не указано в описании модуля).

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

    Затем перейти в редактирование модуля и выполнить его настройки, не забыв при этом установить настройку Статус -Включено.

    Если в описании указано, что необходимо обновить кеш модификатора это значит, что вам необходимо перейти в Меню - Модули - Модификаторы и нажать кнопку Обновить.

    Бывают случаи, когда модуль поставляется как архив файлов вместе с модификатором. Устанавливается через Меню - Модули - Установка расширений
    Предварительно необходимо включить в настройках ФТП и настроить.


    Установка модификатора
    Существует несколько способов установки модификаторов:

    1. Загрузка модификатора через Меню - Модули - Установка расширений . Данный метод установки записывает код модификатора в базу данных, так же модификаторы видны в списке модификаторов.

    2. Возможно просто скопировать файл модификатора в папку system . Данный метод не записывает код в базу, а использует его напрямую. Удобен тем, что можно код редактировать дальше не делая повторных загрузок.

    После установки модификатора (или его изменения) необходимо в Меню - Модули - Модификаторы, нажать кнопку Обновить для обновления кеша модификатора
     
  3. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    OpenCart представляет собой отличную платформу для разработчиков, желающих понять, PHP, web-фреймворк в целом. Это один из самых простых способов изучить MVC фремворк. OpenCart позволяет узнать MVC framework, давая вам доступ к знакомы инструментам, такие как, PHP, mySQL и HTML-технологий, на которых она построена. Это руководство предполагает наличия у Вас базовых знания HTML, CSS, Javascript, PHP (в том числе классов и объектов), и mySQL, так как Мы будем описывать, каким образом они используются в OpenCart.

    В данном руководстве разработчика OpenCart 2x, будут описаны лишь основы разработки для OpenCart 2x. Это поможет Вам быстро понят, что же такое OpenCart и быстро разобраться в основах.

    Быстрые ссылки раздела:
    1. Введение в MVC(L)
    2. Разработка модулей. Введение
    3. Модуль в панели администратора
    4. Модуль на Витрине магазина
    5. Установка и Удаление модулей
    6. Загрузка файлов в Контроллере
    7. Модификаторы OCMOD

    назад к Содержанию
     
  4. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Введение в MVC(L)
    OpenCart основан на шаблоне проектирования Модель-Отображение-Контроллер (Model-View-Controller). MVC — это шаблон (паттерн), который позволяет разделить логику от отображения. Это позволяет файлам с отображением содержать минимальное количество скриптов.

    M - Model (Модель)
    Модель предоставляет возможность взаимодействовать непосредственно с базой данных, получая данные и преобразуется его в формат, который подходит для вашего интерфейса. Как правило, модель состоит в основном из запросов к базе данных. Если вы привыкли писать запросы MySQL, Вам понравится OpenCart т.к он не использует ORM, позволяя Вам писать прямые запросы к базе данных.

    V - View (Отображение)
    View - отвечает за отображение информации (визуализацию). Идея Model и Controller это максимально отделить логику и сделать шаблоны проще, т.е по возможности в View должно быть минимум логики. Для того чтобы изменить дизайн магазина, вы просто измените представление, а M, C и L, останется такими же. Файлы представлений View в OpenCart имеют .tpl расширение

    С - Controller (Контроллер)
    Это то место, где обеспечивается связь между представлением и моделью или любыми другими ресурсами. Полученные данные от пользователя обрабатываются в контроллере и выводит результат в представление View

    L - Language (Язык)
    OpenCart расширяет MVC до MVCL, предоставляя простой способ разделения языковой информации для интернационализации. Вы можете использовать языковые файлы для хранения любого текста, такие как заголовки, текст кнопок и другое. Поэтому, для того чтобы перевести Ваш магазин на другой язык, Вам необходимо изменить текст в соответствующем языковом файле.
     
  5. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Разработка модулей. Введение
    Для того, чтобы понять основы разработки модулей для OpenCart, мы рассмотрим готовый модуль google_hangouts.

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

    Ниже показана базовая структура директорий, для нашего первого модуля. Для примера мы взяли модуль google_hangouts
    [​IMG]
     
  6. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Модуль в панеле администратора
    Если посмотреть на предыдущий рисунок, можно увидеть основные директории в папке admin, а именно controller | view | language

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

    Давайте рассмотрим каждую из папок.

    Controller

    Тут располагается наш первый файл, контроллер интерфейса. Opencart автоматически подключает модули, просматривая директорию admin/controller/module Поэтому нет никакой необходимости где то что то добавлять или изменять файлы.

    Любой модуль, расположенный в данной директории, будет автоматически подключен и показан в панели администратора в разделе Модули

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

    Доступ через URL
    Controller (контроллер) это простой файл с классом, названный так, чтобы ассоциироваться с URL по которому он будет вызван.

    В панели администратора URL выглядит следующим образом
    пример: /admin/index.php?route=module/google_hangouts&token
    При обращении к модулю, добавляется токен для безопасности сессии (данное правило с токеном, действительно только для модулей в панели администратора).

    Откройте файл контроллера \admin\controller\module\google_hangouts.php

    Рассмотрим пример URL: /admin/index.php?route=module/google_hangouts&token

    Когда имя контроллера будет найдено в сегменте URL — он будет загружен.

    Первым что загрузится, это функция index(). Функция «index» всегда будет загружаться по умолчанию, если вторая часть в URL не определена.

    Вторая часть адреса определяет, какая функция контроллера должна быть вызвана.
    Например, для URL /admin/index.php?route=module/google_hangouts/validate&token

    будет вызвана функция validate.

    Продолжим. Кратко пройдемся по коду.

    В результате вызова функции index, контроллер загрузит языковые файлы и его переменные
    Код:
    $this->load->language('module/google_hangouts');
    $this->document->setTitle($this->language->get('heading_title'));
    Загрузит модель, для возможности записи настроек модуля в базу.
    Код:
    $this->load->model('setting/setting');
    Далее проверит на соответствие условию: если существует POST запрос, то содержимое POST запроса записывается в базу данных. Это происходит, когда в модуле нажимаем кнопку Сохранить, именно тогда и создается POST со всеми настройками модуля. А далее просто перенаправление на страницу списка модулей.

    Если POST не существует, то естественно запись в базу игнорируется. Это происходит тогда, когда мы просто нажимаем кнопку Изменить, для того чтобы посмотреть настройки модуля. А перед тем как нам откроется форма с настройками модуля, происходит следующее.

    Производится заполнение массива $data для передачи в «Отображение»
    Массив заполняется текстовыми данными, которые мы получили из языкового файла, а так же заполняется другими данными необходимые для работы модуля и его отображения.

    А в конце производим рендеринг данных $data для передачи в отображение view
    Код:
    $this->response->setOutput($this->load->view('module/google_hangouts.tpl', $data));
    View
    View (отображение) отвечает за вывод данных, то есть шаблон, формирующий html код.
    Сам файл шаблона находится в admin/view/template/module и файл имеет расширение tpl

    В нашем случае, формируется форма для заполнения пользователем настроек модуля.

    Если откроете файл \admin\view\template\module\google_hangouts.tpl то можно быстро понять его структуру, увидеть знакомые переменные, для которых мы подготавливали данные в контроллере.


    Language
    Language (язык) – представляет собой файл, в котором можно задавать некие языковые переменные для разных языков. В нашем случае таких языков два, и соответственно папок и файлов тоже 2
    \admin\language\english\module\google_hangouts.php

    \admin\language\russian\module\google_hangouts.php

    При ненадобности, данные файлы можно не создавать.


    Model
    Model (модель)содержит в себе функционал по работе с базой данных.
    Файлы находятся в admin\model\

    А в нашем случае его просто нет, т.к очень редко требуется создании модели для модулей в панели управления. Но если бы он у нас был, он находился бы в папке, например, \admin\model\module\ и в нем, возможно, был бы запрос к базе данных, для записи или обновления определенной таблицы БД.
     
  7. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Модуль в Витрине магазина
    Интерфейс витрины модуля для отображения в витрине магазина, построен по принципу того же шаблона, что и интерфейс панели администратора, описанный выше, т.е MVCL. Модуль так же может получить доступ к любым model файлам, которые уже существуют в OpenCart, а так же вам не нужно создавать новые запросы базы данных, если они уже существуют. Например, модель catalog/product содержит много полезных запросов для выборки товаров. Использование существующих функций, предпочтительнее, чем писать то, что уже написано.

    Отличительной особенностью структуры папок для модулей витрины, является расположение файла шаблона модуля. Он находится по пути catalog/view/theme/default/template/module

    Это дает нам возможность, создавать свой шаблон отображения модуля для каждой темы интернет магазина.

    Стоит отметить, что в модуле витрины, Вам будут предоставлен доступ к параметрам модуля, как через объект контроллера, так и через переменную $settings, которая передается в модуль, при помощи функции index($settings) контроллера. А также у Вас есть возможность контролировать отображение модуля, основываясь на параметры настройки.
     
  8. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Установка и Удаления модуля
    Рекомендуется, чтобы разработчики модулей, включали в создаваемый модуль функции «установки и удаления» в файле controller. В OpenCart существуют стандартные функции, которые будут вызваны при установки или удалении. Это
    public function install() и public function uninstall()

    Установка
    Пример:
    Код:
    public function install() {
      $this->load->model('setting/extension');
      $this->model_setting_extension->install('total', $this->request->get['extension']);
    }
    Удаление
    Пример:
    Код:
    public function uninstall() {
      $this->load->model('setting/extension');
      $this->model_setting_extension->uninstall('total', $this->request->get['extension']);
      $this->load->model('setting/setting');
      $this->model_setting_setting->deleteSetting($this->request->get['extension']);
    }
    Т.е если модуль при установке создает дополнительные таблицы или хранимые настройки, то необходимо при удалении модуля, тоже их удалять.
     
  9. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Загрузка файлов в контроллер
    Основная загрузка файлов, происходит в контроллере. В контроллер загружаются файлы языка, модели и шаблона.

    Рассмотрим каждый в отдельности.

    Загрузка языковых файлов.

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

    Ниже пример загрузки языкового файла и назначение.
    Код:
    $this->load->language('module/google_hangouts');
    $this->document->setTitle($this->language->get('heading_title'));
    $data['entry_code'] = $this->language->get('entry_code');
    Если открыть языковый файл, например по пути, \admin\language\english\module\google_hangouts.php

    Мы увидим, что мы получили доступ к любому тексту через $this->language->get

    А при рендеринге, каждый элемент массива $data будет доступен в виде переменой.

    Пример $data['entry_code'] будет доступен в шаблоне tpl как $entry_code


    Загрузка модели.

    Загрузка моделей в контролер, помогут вам использовать уже готовые встроенные функции OpenCart.

    Разберем небольшой пример загрузки модели.
    Код:
    $this->load->model('setting/setting');
    Код выше позволит нам загрузит методы класса, что обеспечит доступ к методам в пределах класса ModelSettingSetting файлаmodel контроллера.

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

    Пример:
    Код:
    $this->model_setting_setting->editSetting('google_hangouts', $this->request->post);
    Загрузка файла шаблона.

    Приведем простой пример, который показывает возможность загруки файла шаблона в контроллер.
    Код:
    $this->load->view('module/google_hangouts.tpl');
    Загрузка файлов библиотек

    Opencart содержит множество различных библиотек, которые, могут быть загружены в контроллер и использованы по назначению.

    Чтобы получить доступ к определенным функциям библиотек, используйте следующий синтаксис
    Код:
    $this->[тут имя файла библиотеки]->function()
    Например, установка заголовка документа
    Код:
    $this->document->setTitle($this->language->get('heading_title'));
     
  10. Shura

    Shura Хожу брожу. Активист & Помощник

    Регистрация
    5 май 2015
    Сообщения
    807
    Симпатии
    251
    Баллы
    81
    Пол
    Мужской
    Введение в ocmod

    OCMOD это система, которая позволяет владельцу магазина, модифицировать поведение магазина или добавить дополнительный функционал. Для этого достаточно загрузить сжатый файл, который содержит XML, SQL и PHP файлы.

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

    OCMOD основан на кодах Qphoria's VQMOD.

    Установка и структура

    Установка OCMOD файлов производится через панель управления в разделе Модули — Установка расширений.
    Для установки расширения, достаточно загрузить файл .ocmod.zip или .ocmod.xml
    Например: name_modificator.ocmod.zip или name_modificator.ocmod.xml


    Пример структуры OCMOD сжатого файла

    - upload
    - install.sql
    - install.php
    - install.xml

    upload
    Директория в которой расположены файлы (например библиотека или модуль).

    install.sql
    Файл sql запроса для выполнения запроса к базе данных ;

    install.php
    Содержит PHP код который необходимо выполнить при устаовке расширения .

    install.xml
    XML файл модификатор.


    Документация по XML модификатору

    Модификатор создает виртуальную копию файла над которым производит изменения. Используйте эту систему вместо изменения файлов по умолчанию . Различные модификации может быть применены для одного и того же файла

    Пример OCMOD файла:
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <modification>
    <name>Modification Default</name>
    <code>modification_id</code>
    <version>1.0</version>
    <author>OpenCart Ltd</author>
    <link>http://www.opencart.com</link>
    
    <file path="catalog/controller/common/home.php">
    <operation>
    <search><![CDATA[
    $data['column_left'] = $this->load->controller('common/column_left');
    ]]></search>
    <add position="replace"><![CDATA[
    test123
    ]]></add>
    </operation>
    </file>
    
    </modification>

    Описание тегов

    File
    Файл или файлы для изменений

    Система модификатора использует PHP функцию glob с флагом GLOB_BRACE
    http://hk1.php.net/manual/ru/function.glob.php

    Пример:
    Путь к файлу.
    Код:
    <file path="catalog/controller/common/home.php">
    Если необходимо произвести изменения в нескольких файлах или в файлах "по маске", используйте следующий пример:
    Код:
    <file path="system/{engine,library}/{action,loader,config,language}*.php">
    Operation Действия над файлом / файлами

    Атрибуты:
    • error="(skip|abort)" - пропустить при ошибке | прервать работу модификатора


    Search Поиск кода

    Атрибуты:
    • trim="(true|false)" - удалить пробелы
    • regex="(true|false)" - использовать регулярное выражение
    • index="(число)" - выбор определенной найденной позиции по числу

    Пример:
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <modification>
    <name>Modification Default</name>
    <code>modification_id</code>
    <version>1.0</version>
    <author>OpenCart Ltd</author>
    <link>http://www.opencart.com</link>
    
    <file path="catalog/controller/common/home.php">
    <operation>
    <search trim="true|false" offset="1" limit="2"><![CDATA[
    $data['column_left'] = $this->load->controller('common/column_left');
    ]]></search>
    <add position="replace"><![CDATA[
    test123
    ]]></add>
    </operation>
    </file>
    
    </modification>
    Add Добавить или заменить.

    Атрибуты:
    • position="(Replace|Before|After)" - Заменить | Вставить до | Вставить после
    • trim="(true|false)" - удалить пробелы
    • offset="(число)" - перейти на указанное кол-во строк (можно использовать отрицательное значение)
    (внимание, атрибут position не может быть использован если применяется поиск с регулярным выражением).

    Пример
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <modification>
    <name>Modification Default</name>
    <code>modification_id</code>
    <version>1.0</version>
    <author>OpenCart Ltd</author>
    <link>http://www.opencart.com</link>
    
    <file path="catalog/controller/common/home.php">
    <operation>
    <search trim="true|false" offset="1" limit="2"><![CDATA[
    $data['column_left'] = $this->load->controller('common/column_left');
    ]]></search>
    <add position="Replace|Before|After"><![CDATA[
    test123
    ]]></add>
    </operation>
    </file>
    
    </modification>
    Regex - регулярное выражение

    Атрибуты:
    • limit="(число)" - ограничение кол-во найденных одинаковых значений

    Пример:
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <modification>
    <name>Regex Example</name>
    <code>modification_id</code>
    <version>1.0</version>
    <author>OpenCart Ltd</author>
    <link>http://www.opencart.com</link>
    
    <file path="system/{engine,library}/{action,loader,config,language}*.php">
    <operation>
    <search regex="true" limit="3"><![CDATA[
    ~(require|include)(_once)?\(([^)]+)~
    ]]></search>
    <add><![CDATA[
    $1$2(modification($3)
    ]]></add>
    </operation>
    </file>
    
    </modification>
    Когда вы используете regex вы не можете использовать атрибут position, trim or offset . Атрибут limit доступен для использования.
    В примере ниже можно увидеть как в третьей найденой позиции меняется 'foo' на 'bar':

    lorem ifoopsum foo lor foor ipsum foo dolor foo
    ^1 ^2 ^3 ^4 ^5
    Выражение:
    s/\(.\{-}\zsfoo\)\{3}/bar/
    Результат:
    lorem ifoopsum foo lor barr ipsum foo dolor foo
    ^1 ^2 ^3=bar ^4 ^5

    Больше информации по регулярным выражением в PHP вы можете узнать по ссылке ниже:
    http://hk2.php.net/manual/ru/function.preg-replace.php
    Информацию по регулярным выражением можно получить по ссылке ниже:
    http://www.regular-expressions.info
     
  11. Pavlikpuh999

    Pavlikpuh999 Новичок Зарегистрирован

    Регистрация
    11 апр 2016
    Сообщения
    10
    Симпатии
    4
    Баллы
    0
    Пол
    Мужской
    Здравствуйте товарищи гуру. Подскажите как сделать следующее:
    1. Не могу настроить Simple 4.2.5 (все чем располагаю) не упрощает форму заказа
    2. Как мне сделать чтобы человеку выводилось 2 варианта оплаты "наличкой в салоне" и "переводом либо на карту либо на счет", но агрегаторы я ставить не хочу. Хочу чтобы просто при выборе переводом показывалась инструкция что и куда переводить, а на мейл приходило сообщение и мне и покупателю с уникальным номером заказа и его выбором. Делаю магазин мебели.
    Всем кто откликнется заранее спасибо!!!
     
  12. cdreanimator

    cdreanimator Новичок Зарегистрирован

    Регистрация
    22 янв 2016
    Сообщения
    20
    Симпатии
    2
    Баллы
    6
    Пол
    Мужской
    Сайт
    В модулях оплаты отключите все ненужные способы, и, соответственно включите нужные... В Вашем случае нужны два модуля:
    1. Банковский перевод. в настройках напишете инструкцию по переводу
    2.Оплата наличными.

    Переименовать названия способов оплаты можно в языковых файлах.
     
    Pavlikpuh999 нравится это.
  13. Pavlikpuh999

    Pavlikpuh999 Новичок Зарегистрирован

    Регистрация
    11 апр 2016
    Сообщения
    10
    Симпатии
    4
    Баллы
    0
    Пол
    Мужской
    Спасибо, а это все стандартные, предустановленные модули?
     
  14. cdreanimator

    cdreanimator Новичок Зарегистрирован

    Регистрация
    22 янв 2016
    Сообщения
    20
    Симпатии
    2
    Баллы
    6
    Пол
    Мужской
    Сайт
    Да.
     

Поделиться этой страницей

Share
Загрузка...
Плагины для XenForo/