Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

OCTorg - Русская сборка на основе OpenCart 4

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.

Разработчикам

Этот раздел - для тех, кто пишет собственное расширение или тему для продажи на octorg.ru. Он не требует глубоких знаний платформы - только базового понимания структуры расширений OpenCart.

Какие файлы нужны в корне вашего расширения

extension/ваш_модуль/
├── install.json      ← пишете и обновляете сами
├── octorg.json        ← НЕ трогайте, создаётся автоматически при публикации
├── schema.php         ← опционально, если у вашего расширения есть свои таблицы в БД
├── admin/
├── catalog/
└── ...

install.json — обычный манифест расширения. Единственное, что важно для системы обновлений: поле version. Каждый раз, когда вы публикуете новую версию, увеличивайте его:

{
  "code": "ваш_модуль",
  "name": "Название расширения",
  "description": "Короткое описание",
  "version": "1.2.0",
  "author": "Ваше имя",
  "link": ""
}

octorg.json — создаётся автоматически платформой в момент, когда вы публикуете файл через форум (раздел «Файлы»). Он содержит цифровую подпись, которой сайт при обновлении проверяет, что архив действительно пришёл от OcTorg и не был подменён. Вам не нужно ничего для этого писать или подписывать самостоятельно - просто не кладите такой файл в свой архив вручную, он появится сам.

Если у вашего расширения есть собственные таблицы в БД: schema.php

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

Главное правило: при первой установке расширения вы, как обычно в OpenCart, создаёте таблицы в своём методе install() (через CREATE TABLE IF NOT EXISTS, как делали всегда). Но когда вы обновляете уже установленное расширение, ваш install()/uninstall() не вызываются заново - при обновлении система не переустанавливает расширение (это опасно и может удалить данные покупателя, если ваш uninstall() чистит таблицы или настройки).

Поэтому для любых изменений структуры БД в новых версиях (добавили таблицу, добавили колонку, добавили индекс) - опишите текущую, актуальную структуру в schema.php. Это не история миграций и не список шагов «что изменилось в версии 1.2, 1.3, 1.4» - просто опишите, какой структура должна быть прямо сейчас, в этой версии. При обновлении система сама сравнит это описание с тем, что реально есть в базе у покупателя, и аккуратно добавит то, чего не хватает. Она никогда не удаляет и не меняет то, что уже есть - только добавляет недостающие таблицы, колонки и индексы.

Пример schema.php:

<?php
return [
    // имя таблицы без префикса oc_ — префикс добавляется автоматически
    'custom_table' => [
        'columns' => [
            'id'         => ['type' => 'int', 'auto' => true],
            'product_id' => ['type' => 'int'],
            'name'       => ['type' => 'varchar', 'length' => 64],
            'email'      => ['type' => 'varchar', 'length' => 96, 'nullable' => true],
            'status'     => ['type' => 'enum', 'values' => ['new', 'done'], 'default' => 'new'],
            'comment'    => ['type' => 'text', 'nullable' => true],
            'date_added' => ['type' => 'datetime'],
        ],
        'primary' => ['id'],
        'indexes' => [
            'product_id',                                   // простой индекс по одной колонке
            ['columns' => ['email'], 'unique' => true],      // уникальный индекс
        ],
    ],
];

Поддерживаемые типы колонок: int, smallint, tinyint, varchar (с length, по умолчанию 255), text, datetime, enum (с values). Необязательные ключи у колонки: unsigned (для int/smallint), nullable, default, auto (автоинкремент, обычно только для первичного ключа).

Когда покупатель обновит ваше расширение с версии, где этой таблицы ещё не было, - таблица создастся. Когда в будущей версии вы добавите в schema.php ещё одну колонку - при следующем обновлении она добавится сама, без кода с вашей стороны, кроме правки этого файла.

Если вы уберёте таблицу или колонку из schema.php в новой версии - она НЕ удалится у тех, кто уже установил расширение. Система только добавляет недостающее, сравнивая файл с тем, что реально есть в базе - она никогда не смотрит в обратную сторону («чего в файле больше нет - надо убрать из базы»). Если вам действительно нужно удалить старую таблицу/колонку - это нужно будет обработать в коде расширения.

Что система делает при обновлении

  1. Скачивание нового архива и проверка его подлинности по подписи из octorg.json.

  2. Резервная копия текущей версии расширения.

  3. Включение режима технических работ на сайте.

  4. Замена файлов на новые.

  5. Применение schema.php (см. выше).

  6. Выключение техработ, пересчёт установленной версии.

  7. Автоматический откат к резервной копии, если что-то пошло не так.

Вам, как разработчику, достаточно: публиковать архив через форум (подпись и octorg.json создаются автоматически), поднимать version в install.json, и держать schema.php в актуальном состоянии, если у вас есть свои таблицы.

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.