Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Search the Community

Showing results for tags 'opencart4'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Genaral
    • Новини та оголошення
    • Пропозиції та побажання
    • Акції, подарунки, конкурси та винагороди
  • Opencart 4.x
    • Opencart 4.x: General questions
    • Opencart 4.x: Installing and updating
    • Opencart 4.x: Localization
    • Opencart 4.x: Setting and optimization
    • Opencart 4.x: Sandbox
    • Opencart 4.x: Extension search
    • Opencart 4.x: Bug Reporting
  • Opencart 3.x
    • Opencart 3.x: General questions
    • Opencart 3.x: Installing and updating
    • Opencart 3.x: Localization
    • Opencart 3.x: Setting and optimization
    • Opencart 3.x: Sandbox
    • Opencart 3.x: Extension search
    • Opencart 3.x: Bug Reporting
  • Opencart 2.x
    • Opencart 2.x: General questions
    • Opencart 2.x: Installing and updating
    • Opencart 2.x: Localization
    • Opencart 2.x: Setting and optimization
    • Opencart 2.x: Sandbox
    • Opencart 2.x: Extension search
    • Opencart 2.x / ocStore 2.x: Bug Reporting
  • Реклама и продвижение
    • SEO-питання (оптимізація та просування магазину)
    • Контекстная реклама
    • Торговые площадки
    • E-commerce tracking и бизнес аналитика
    • Разное
  • Підтримка та відповіді на запитання.
    • Загальні питання
    • Встановлення, оновлення, налаштування
    • Шаблони, дизайн та оформлення магазину
    • Модули и дополнения
    • Допомога програмістам та розробникам
    • Мобильная витрина
    • Вопросы безопасности
    • Переклад
    • Отчёты об ошибках
    • Интернет-магазины и электронная коммерция
    • Песочница
  • Услуги
    • Creation of stores
    • Дизайн, верстка и шаблоны
    • Программирование, создание модулей, изменение функциональности
    • Настройка и мелкая работа по уже существующему сайту
    • Shop engine version update
    • Store filling
    • System administration (configuring hosting, servers, software)
    • Другие услуги
  • Разное
    • Пользовательские обзоры дополнений
    • Примеры сайтов на OpenCart (ocStore)
    • Курилка
    • Предложения по улучшению

Categories

  • Templates
    • Free templates
    • Платные шаблоны
  • Filters
  • Promotions & Pricing
  • Реклама и продвижение
  • Coupons & reward points, affiliate programs
  • Blogs, News & Articles
  • Shopping Cart & Order
  • Product Options
  • Product Attributes
  • Product Combinations
  • Search
  • SEO & Optimization
  • Caching & Server Performance
  • Платіжні системи
  • Доставки
  • Editors
  • Design & Navigation
  • Banners, Slideshows & Galleries
  • Email Marketing & SMS Integration
  • Customer Support & Chat
  • Обмен данными
  • Учет в заказе
  • Compare & Wishlist
  • Социальные сети
  • Parsers
  • Модули
  • Tools & Developer Tools
  • Licenses
  • Language packages
  • Other
  • Отчеты
  • Сборки
    • ocStore
  • Services
    • Графика и дизайн
    • Маркетинг

Categories

  • Служебные документы
  • Оплата
  • Документация Opencart

Categories

  • Gereneral questions
  • Purchasing extensions
  • For developer
  • Account
  • Technical support
  • Financial department

Blogs

  • Konorws (Разработка и модификация Opencart)
  • Блог mr.Kent)
  • Прожектор Бритни Спирс
  • Layk
  • Продвижение интернет-магазина, seo оптимизация
  • Записная книжка
  • Блог RGB
  • Модули которые сделают сайт лучше
  • Блог веб-студии NeoSeo
  • Useful IT
  • Записи
  • Найденные решения проблем с Opencart
  • ocdroid blog
  • Заметки на полях...
  • Pimur
  • Серж Ткач
  • О жизни, смерти, о бизнесе и Опенкарте
  • Просто мысли от laim731
  • Маркетинг и продвижение интернет-магазина
  • Мой копирайтинг
  • SEO боксинг специального назначения
  • Get-Web Dev
  • Seok
  • Блоги sitecreator-а
  • Best practice
  • Vlad-Egorov-Blog
  • Блог spectre
  • commanddotcom
  • Внимание мошенники
  • Наблюдения обычного человека
  • Блог Rassol2
  • Блог Exploits
  • блог для натуралов
  • Настюша, тут есть темы
  • Пропитано рекламой
  • Tutorial
  • ОтВинта
  • Tg chnls
  • Блог
  • Блог sv2109
  • КАК ОРГАНИЗОВАТЬ НОВОСТНЫЕ ПОДПИСКИ НА БАЗЕ API OPENCART 3/0/2
  • VDS/VPS, серверы под Linux: установка, настройка, оптимизация
  • IT блог
  • Блог
  • Opencart SEO
  • Путёвые заметки о работе магазина NiceBike на платформе OpenCart
  • Blondi Blog
  • Полезные статьи, новости.
  • Блог владельца магазина
  • разное
  • ПРОДАЖА АКАУНТОВ-binance ВЕРИФИЦИРОВАННЫe ЧИСТЫЕ УСПЕВАЙТЕ КУПИТЬ ПО НИЗКОЙ ЦЕНЕ
  • Диспансеризация
  • wozobat
  • quasarbyte
  • Мой блог
  • Igorych
  • aaaaa
  • 👌🔊Bellsouth CUSTOMER support number 1+(8O8)678=9O64-☎phone number
  • Liudmila marketer
  • Заметки реалиста
  • ocstore на ноліках
  • Про Opencart
  • Блог про рутинні процеси в магазині на ocsote
  • Radaevich
  • Плагіни Opencart
  • Крафтовий OpenCart: Старт пригоди. Ціна створення сайту на Опенкарт
  • Щось про щось
  • Від власника до розробника

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Сайт


Skype


City:


Interests

Found 4 results

  1. Цей огляд заснований на diff найпростіших вбудованих модулів. Але все перевірено на простому власному модулі, в якому немає ані подій, ані vQmod. Основні зміни у коді стандартного модуля * Примітка Слово Opencart, виділене жовтим кольором — це код модуля (!). Але, мабуть, ви й самі здогадалися У контролері OpenCart 3 OpenCart 4 class ControllerExtensionModuleAccount extends Controller { namespace Opencart\Admin\Controller\Extension\Opencart\Module; class Account extends \Opencart\System\Engine\Controller { protected function validate() { public function save(): void { // ... $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } private $error = array(); Більше не потрібно. Всі помилки обробляються відразу в методі save() if (isset($this->error['warning'])) { $data['error_warning'] = $this->error['warning']; } else { $data['error_warning'] = ''; } Не потрібно. Обробка помилок відбувається у методі save(). також Обробка помилок if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { Більше не використовується. Збереження форми відбувається шляхом надсилання AJAX-запиту до методу save() $data['action'] = $this->url->link('extension/module/account', 'user_token=' . $this->session->data['user_token'], true); // 4.0.0.0 $data['save'] = $this->url->link('extension/opencart/module/account|save', 'user_token=' . $this->session->data['user_token']); // 4.0.2.0 $data['save'] = $this->url->link('extension/opencart/module/account.save', 'user_token=' . $this->session->data['user_token']); *Зміни у побудові шляхів впливають на будь-які посилання всередині модуля. Ну, це і так зрозуміло. $data['cancel'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module', true); $data['back'] = $this->url->link('marketplace/extension', 'user_token=' . $this->session->data['user_token'] . '&type=module'); $this->load->model('extension/dashboard/map'); $this->load->model('extension/opencart/dashboard/map'); $results = $this->model_extension_dashboard_map->getTotalOrdersByCountry(); $results = $this->model_extension_opencart_dashboard_map->getTotalOrdersByCountry(); if (isset($this->request->post['module_account_status'])) { $data['module_account_status'] = $this->request->post['module_account_status']; } else { $data['module_account_status'] = $this->config->get('module_account_status'); } $data['module_account_status'] = $this->config->get('module_account_status'); У моделі OpenCart 3 OpenCart 4 class ModelExtensionDashboardMap extends Model { namespace Opencart\Admin\Model\Extension\Opencart\Dashboard; class Map extends \Opencart\System\Engine\Model { У в'юшці В OpenCart 4.0.0.0 був FontAwesome 5.15.4, а в OpenCart 4.0.2.0 FontAwesome 6.1.1. Це впливає на класи іконок. OpenCart 3 OpenCart 4 pull-right float-end data-toggle="tooltip" data-bs-toggle="tooltip" <i class="fa fa-save"></i> <!-- 4.0.0.0 --> <i class="fas fa-save"></i> <!-- 4.0.2.0 --> <i class="fa-solid fa-save"></i> {{ cancel }} {{ button_cancel }} {{ back }} {{ button_back }} <ul class="breadcrumb"> <ol class="breadcrumb"> <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li> <li class="breadcrumb-item"><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li> {% if error_warning %} <div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }} <button type="button" class="close" data-dismiss="alert">&times;</button> </div> {% endif %}{% if error_warning %} -- (AJAX) <div class="panel panel-default"> <div class="card"> <div class="panel-heading"> <h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit }}</h3> </div> <!-- 4.0.0.0 --> <div class="card-header"><i class="fas fa-pencil-alt"></i> {{ text_edit }}</div> <!-- 4.0.2.0 --> <div class="card-header"><i class="fa-solid fa-pencil"></i> {{ text_edit }}</div> <div class="panel-body"> <div class="card-body"> <form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-module" class="form-horizontal"> <form id="form-module" action="{{ save }}" method="post" data-oc-toggle="ajax"> * Якщо пропустити data-oc-toggle="ajax", то форма обробиться по-старому з повним завантаженням сторінки (принаймні у версії 4.0.0.0). Хоча сам .alert у bootstrap 5 трохи змінився. <div class="form-group"> <div class="row mb-3"> control-label col-form-label <select name="module_account_status" ... <!-- 4.0.2.0 --> <input type="checkbox" name="module_account_status" ... Шляхи в AJAX-запитах url: 'index.php?route=extension/module/imagescanner/getNotUsedImagesList <!-- 4.0.0.0 --> url: 'index.php?route=extension/imagescanner/module/imagescanner|getNotUsedImagesList <!-- 4.0.2.0 --> url: 'index.php?route=extension/imagescanner/module/imagescanner.getNotUsedImagesList Шляхи до зображень var img_loader = new Image().src='view/image/imagescanner-loader.gif'; var img_loader = new Image().src='extension/imagescanner/admin/view/image/imagescanner-loader.gif'; А воно запитує: http://opencart-4000.loc/admin/extension/imagescanner/admin/view/image/imagescanner-loader.gif Значить треба вказати повний шлях до файлу var img_loader = new Image().src='{{ constant('HTTP_CATALOG') }}extension/imagescanner/admin/view/image/imagescanner-loader.gif'; Обробка помилок Щоб поля з помилками підсвічувалися і до них були пояснювальні підписи, першою дією у в'юшці необхідно вписати порожні контейнери для текстів помилок. <div id="error-field" class="invalid-feedback"></div> Далі, при обробці форми по AJAX можна отримати наступний формат відповіді: { "error": { "name_1": "Product Name must be greater than 1 and less than 255 characters!", "keyword_0_1": "SEO URL keyword required!", "warning": "Warning: Please check the form carefully for errors!" } } Потім воно буде універсально оброблено в admin/view/javascript/common.js з урахуванням того, чи це рядок, чи це об'єкт, та чи є там редірект. Також воно автоматично переведе under_score індекси массиву з помилками в kebab-case html-ідентифікаторів, в яких потрібно показати відповідні тексти червоним кольором. TypeError: Cannot access offset of type string on string in при обробці помилок У js при обробці відповіді AJAX-запиту робиться розмежування між отриманим рядком та об'єктом. Все тому, що в найпростішому "модулі" (наприклад, account) в помилки потрапляє лише рядок з текстом без зайвих проблем. І ось я скопіпастив звідти, а потім побачив, що в товарах йде інакше, і скопіпастив шматок коду ще й звідти. У результаті напоровся на помилку: TypeError: Cannot access offset of type string on string in ... $json['error'] = $this->language->get('error_text'); // В найпростішому модулі присвоюється рядок ... if (isset($json['error']) && !isset($json['error']['warning'])) { $json['error']['warning'] = $this->language->get('error_warning'); // Намагається рядку присвоїти індекс масиву, але це ж PHP 8... } Власні бібліотеки у складі модуля Якщо ваш модуль використовує бібліотеку, яка зазвичай завантажувалася в system/library, то зараз при розпакуванні архіву вона потрапить до extnension/modulecode/system/library/ . OpenCart автоматично створює простори імен, як для контролерів з моделями, так і для бібілотек: // 4.0.0.0 [Opencart\Admin\Controller\Extension\Imagescanner] => Array ( [directory] => .../opencart-4000.loc/extension/imagescanner/admin/controller/ [psr4] => ) [Opencart\Admin\Model\Extension\Imagescanner] => Array ( [directory] => .../opencart-4000.loc/extension/imagescanner/admin/model/ [psr4] => ) [Opencart\System\Extension\Imagescanner] => Array ( [directory] => .../opencart-4000.loc/extension/imagescanner/system/ [psr4] => ) // 4.0.2.0 [Opencart\System\Library\Extension\Imagescanner] => Array ( [directory] => .../opencart-4021.loc/extension/imagescanner/system/library/ [psr4] => ) Зверніть увагу, що варіант іменування класу бібліотеки ImageScanner при підключенні перетвориться на image_scanner.php (system/engine/autoloader.php). Тоді як Imagescanner відповідатиме imagescanner.php. Це при тому, що в контролері назва класу в стилі CamelCase працює ок. А чому так — це вже окрема історія. У файлі бібліотеки Задамо простір імен: // 4.0.0.0 namespace Opencart\System\Extension\Modulecode\Library; // 4.0.2.0 namespace Opencart\System\Library\Extension\Imagescanner; Називаємо клас: class Yourclassname { У файлі контролера Створюємо екземпляр класу бібліотеки у нашому контролері: // 4.0.0.0 $this->instance = new \Opencart\System\Extension\Modulecode\Library\Yourclassname(); // 4.0.2.0 $this->stdelog = new \Opencart\System\Library\Extension\Imagescanner\Stdelog('imagescanner'); З іншого боку чудово відпрацює і по-старому, і ще й ніяких приколів зі змінами в системі: require_once DIR_EXTENSION . 'modulecode/system/library/modulecode.php'; $this->instance = new Yourclassname(); // и не паритися Папка модуля На прикладі присутньої в системі папки extension/opencart (де складені всі дефолтні модулі) здавалося, що OpenCart 4 з'явилося поняття "папка постачальника". Але потім з'ясувалося, що при спробі встановити в ту ж папку інший свій модуль, воно не працює До речі, якщо в інсталяційному архіві будуть нестандартні шляхи до файлів (я, наприклад, пробував modulecode/library/file.php на 4.0.0.0), то при видаленні модуля з адмінки папка модуля не видаляється, хоча всі стандартні файли та папки звідти видалені. Тобто це може створити проблеми при оновленні модуля, адже в існуючу папку модуля установник не хоче записувати. І ще з цією папкою є один приємний момент: щоб упакувати модуль, досить просто скопіювати папку та заархівувати. Більше не потрібно ритися в папках і копіювати кожен файл окремо. P.S. На преший погляд, адаптація модуль під OpenCart 4 має бути досить простою. Я цю статтю довше писав, ніж адаптував модуль. Але огляд поки що не повний. Дописуватиму згодом. Також буду додавати в текст статті зауваження з коментарів. --
  2. Вітаю, шановна спільното! Хочу представити вам попередній реліз модулю з відкритим кодом для автоматизованого перекладу контенту для OpenCart. Розширення працює в обхід стандартного API Google Translate, використовуючи незалежні та децентралізовані шлюзи проекту з відкритим кодом Lingva, які можна знайти у розділі Instances. Тим не менше, по результату, це ідентичні дані перекладача Google, але за посередництва незалежних провайдерів, які виконують роль шлюзу / проксі. Оскільки наразі актуальним є переклад сайтів українською мовою, в той час як більшість постачальників все ще надає контент російською мовою, я вирішив зробити це розширення безкоштовним. Безкоштовним також є і сам доступ до шлюзів Lingva, проте кожен з них може застосовувати власні правила та квоти на кількість запитів. Тому перед використанням, ознайомтесь з умовами. Модуль в процесі тестування, реалізований для OpenCart v4 та PHP8 Наразі підтримується переклад товарів, зокрема заголовків та описів. Інші поля ми генеруємо алгоритмічно, тому не бачу сенсу перевантажувати шлюзи зайвими запитами. З метою обходу обмежень на кількість символів в запиті GET, реалізований по-строковий переклад полів товару description, який розділяється тегами нової строки та потім об'єднується і зберігається в базу даних. Це дозволяє перекладати довгі тексти, які закодовані з кирилиці шляхом urlencode, при цьому не порушуючи семантику речення. При виникненні помилок, переклад товару ігнорується та записується в журнал, шлях до якого можна побачити в інтерфейсі модуля, вкладка "Інформація". На даний момент, модуль працює задовільно перекладена база із ~1000 товарів, утім, поки що не публікую його в каталозі та не наводжу технічні подробиці, оскільки поточний реліз орієнтований на розробників, будьте ласкаві долучатися до критики, тестування та розробки! Ліцензія MIT. Проект на GitHub
  3. Друзья, уже несколько месяцев в официальном репозитории на гитхабе появилась 4 версия OpenCart Периодически я устанавливаю свежий код с гита, для просмотра. Что сразу бросилось в глаза это смена структуры товаров и опций(опции теперь как отдельные товары), также там свежий bootstrap. Это круто что на 4 релизе начали подходить к реализации продуктов в формате монолитного контейнера. Есть и другие измеенения, по этому наблюдаем и готовимся к релизу ocStore 3.0.3.7. Также я наблюдаю активность в репозитории учасников нашего сообщества, которые активно бросают pull реквесты, хотелось бы чтобы вы также активно их бросали и в нашу сборку. Я создал fork оригинального OpenCart 4 в master репозитории для релиза ocStore 4, а вы со знанием дела и структуры четвертой версии OpenCart и при желением сможете принять участие в предрелизной версии ocStore 4 и сократить время выхода полноценного релиза ocStore 4. Эта тема в момент когда мы закончим работы над ocStore 3.0.3.7 и выйдет релиз OpenCart 4, станет топиком дорожной карты и работ по релизу ocStore 4. Так что, развиваем текущие магазины и ждем выхода нового ядра OpenCart/ocStore, для создания новых магазинов. Это тема может быть активной для обсуждения OpenCart 4 и всего что с ним связано, также я думаю что на определенном этапе, при выходе 4 версии откроем новый раздел на форуме и переделаем структуру версии 1.5.х
  4. На данный момент продолжается работа над 4 версией движка. На сегодня для тестирования доступна версия 4.0.0.0_b. Сроков выхода новой версии пока нету, но уже можно посмотреть какие там запланированы изменения. Из основного - минимальная версия PHP - 8 "Warning: You need to use PHP8 or above for OpenCart to work!" - убрали модификаторы (ocmod) Вот только не понятно как можно убирать модификаторы, если с помощью событий еще можно сделать очень мало? И как при этом писать дополнения? Или будет как в версии 1.5 движка - отдельно OpenCart и отдельно все скачивали vQmod? - добавлена схема для базы данных system/helper/db_schema.php Опять таки, зачем она нужна если запросы к базе все еще пишутся в одну строчку? - для товара добавлены варианты Можно указать главный товар и его варианты, например один товар с различными вариантами цветов, теперь это будут разные товары для каждого цвета со своими наборами опций, ценой, остатками и другими полями - папка дополнений переехала из /catalog и /admin в /extension/opencart/catalog /extension/opencart/admin Свои же дополнения будут храниться в /extension/username/catalog /extension/username/admin спасибо @chukcha за уточнение Суть это не меняет, но структуру файлов всех дополнений придется переделывать. - неймспейсы теперь везде было class ModelCatalogProduct extends Model { стало namespace Opencart\Catalog\Model\Catalog; class Product extends \Opencart\System\Engine\Model { - и строгая типизация было public function getProducts($data) { стало public function getProducts(array $data = []): array { Шаблон - Bootstrap обновлен до 5 версии при этом поддержку font-awesome убрали, видимо иконки уже есть в Bootstrap - jQuery 3.6 вместо 2.1 - возможно, в движок будет добавлен React или Vue Разговоры об этом идут, я уже писал об этом на форуме, также писал о том, насколько маловероятно что это будет реализовано - появилась новый шаблон product/thumb.twig для блока товара в категории, поиске, производителе итд. Более подробно тут - появился новый шаблон common/pagination.twig для пагинации Админка - появился новый тип дополнений - Startup предположительно для добавления своих скриптов, которые будут выполняться при загрузке магазина - появились задания крона wget "http://localhost/opencart/4.0b/admin/index.php?route=common/cron" --read-timeout=5400 - добавлено GDPR Approvals для пользователей - возле логотипа пользователя появился колокольчик для уведомлений о новостях, новых версиях и обновлениях от OpenCart но по идее это могут использовать и сами модули для создания своих уведомлений. Общие впечатления К сожалению, вот уже несколько новых мажорных версий, начиная со второй, вместо того, чтобы решать глобальные проблемы движка, такие как отсутствие нормальной системы расширений, отсутствие нормальных инструментов работы с базой данных, валидаторов, дублирование кода, устаревшее ядро движка, которое уже больше 10 лет как почти не изменяется, а также многие другие, OpenCart идет по пути "сделаем все красиво" и в каждой новой версии тратится куча времени для обновления дизайна, сначала добавили Bootstrap, потом в каждой новой версии его обновляют, добавили twig, обновили jQuery.. Каких-то кардинальных изменений я совсем не заметил, на мажорную версию это никак не тянет, максимум на 3.1. Хотя, работа над 4 версией еще не закончена, есть слабая надежда что еще что-то добавят. Если что-то пропустил - дополняйте или поправляйте в комментариях.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.