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

Leaderboard

Popular Content

Showing content with the highest reputation on 06/16/2023 in all areas

  1. Version 1.0.7

    605 downloads

    Увага! Всім, в кого версія 1.0.3 або 1.0.4, потрібно оновити до 1.0.5 Модуль Мовні папки в URL (для ocStore 3.x) допомагає отримати зрозумілу традиційну структуру ЧПУ на мультимовних сайтах. Під традиціною структурою URL розуміється наступне: Такі ЧПУ виходять для основної мови сайту (української) site.com.ua — головна сторінка site.com.ua/product1 — сторінка товару Такі ЧПУ виходять для іншої мови сайту (наприклад польскої) site.com.ua/pl — головна сторінка site.com.ua/pl/product1 — сторінка товару Крім мовних папок, модуль додає на сторінки тег hreflang та додає мета-тегі головної сторінки на різних мовах. Увага! Модуль працює лише на ocStore 3.x з увімкненим SeoPro. Рекомендовано використовувати модифікатор, який дозволяє зберігати однакові SEO URL для різних мов: Allow Same SEO URL for different Languages. Бо інакше який тоді сенс в мовних папках, якщо в УРЛ все одно потрібно ставити постфікси або префікси. За умови використання однакових SEO URL для всіх мов, модуль може працювати на чистому OpenCart 3.x. Проблема з пошуком Для нормальної роботи з пошуком потрібно, щоб SEO URL пошукової сторінкі співпадало для всіх мов. Це стосується як пошука товарів, так і пошуку статей. Встановлення --- ========================================================================================= Рекомендовані розширеня Мапа сайту для мультимовного інтернет-магазину. Потрібна лише в тих випадках, якщо стандартна мапа сайту працює з помилками або не приймається в Google Search Console Переглянути - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ImageScanner — Видалення зображень, що не використовуються. Після імпорту (парсингу) товарів, Ви наводите порядки та видаляєте зайві позиції. А ось зображення часто залишаються і займають дисковий простір. Іноді через це доводиться платити більше за хостинг (сервер)... Модуль допомагає видалити зайів файли зображень. Переглянути - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Handy Product Manager — модуль, який допоможе Вам массово відредагувати сотні товарів одним разом. Також у цьому модулі можна редагувати дані у Списку товарів, що буває дуже зручним. Переглянути - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Також варто відзначити, що даний модуль базується на іншому безкоштовному модулі, у якого для трійки немає мовних папок. Той модуль — OCDEV.pro - Мультиязык SEO PRO, код языка в url и правильный hreflang.
    Free
    1 point
  2. TopMarket – это современный адаптивный шаблон для Opencart/ocStore, который отлично смотрится на компьютерах, планшетах и мобильных устройствах. Его дизайн и четкий стиль были разработаны для демонстрации товаров и продаж. Тема шаблона подойдет для любых современных магазинов электроники, техники, мебели, одежды, аксессуаров. Системные требования: PHP 5.6 – 7.3 Совместимость: Работает с OpenCart v3.0, ocStore 3.0 Демо-сайт: Главная страница Категория Страница товара Список модулей, идущих с шаблоном: Баннер Блок категорий Блог Вывод текста во всплывающем окне Отзывы о товаре Дополнительные вкладки в карточке товара Обратная связь Обратный звонок Нашли дешевле? Просмотренные товары Сообщить о наличии Подписка на новости Слайдшоу Упрощенное оформление заказа Ответ на вопрос/отзыв Таблица размеров (Дополнительная информация во всплывающем окне в карточке товара) Текстовые баннеры Товары из категорий Быстрый заказ Быстрый просмотр товара Микроразметка в карточке товара Живой поиск Всплывающая корзина Стикеры товаров Страница 404 Обновление цен при выборе опций Поддержка svg Автоматическая конвертация изображений в формат webp Техническая поддержка: В личных сообщениях на этом форуме. Поддержка осуществляется только пользователям, которые находятся в списке покупателей шаблона. Лицензия: Шаблон можно использовать только на одном основном домене (тестовые без ограничений).
    $50
    1 point
  3. Cтворити невеличкий інтернет-магазин можна всього за ~$100! Дізнайтеся, чим такий ціновий варіант відрізняється від середньоринкового за $400-$700?! Середні ціни на розробку інтернет-магазинів в Україні Цінові сегменти під час створення інтернет-магазинів можна умовно поділити на 4 групи: Low-Cost (~$200) — в цю ціну вписуються всього 2 можливі варіанти: або створити інтернет-магазин самостійно (купити шаблон і модулі), або це буде піратський набір з дошки оголошень (коли вам встановлюють сайт на варезних модулях і пропадають). Бюджетний ($400–$700) — фрілансери та студії-новачки. В основному це розробка на базі ліцензійного шаблону та модулів без особливого коддингу. Невідомо, як скластися з доопрацюваннями та кастомізаціями (вони можуть або не передбачатися, або триватиме дуже довго). Середній ($700–$1000+) — розробники із досвідом, які відповідають за свою роботу. Здебільшого це розробка магазину на шаблонах. Якщо робити унікальний дизайн, вийде дорожче. Преміум (від $5000) — це варіант для великого бізнесу, де багато часу приділяються будь-яким уточненням та узгодженням. Навіть у цьому сегменті бувають шаблонні варіанти. Висока ціна обґрунтовується високим ступенем невизначених моментів (наприклад пікова навантаження в кілька тисяч запитів за хвилину) і кількісттю інтеграцій (CRM, сервіси програм лояльності і тп). А чи можна створити магазин самостійно та взагалі безкоштовно? Взагалі-то система для управління інтернет-магазином OpenCart та її адаптована версія ocStore є безкоштовними. Будь-хто може завантажити програму та встановити на хостинг. Що правда, є деякі нюанси. Дефолтний шаблон OpenCart не дуже гарний. Стандартне оформлення замовлення — достатньо складне для покупця. Також з коробки нічого не пропонується з точки зору спрощення роботи. Наприклад, немає можливості імпортувати товари від постачальника масово, а вручну це може бути дуже довго. А ще є поліпшення SEO-моментів, і тому подібне. Тим не менш, все можна додати за допомогою розширень, які коштують достатньо дешево та в більшості випадків мають ліцензію з правом використовувати все життя без доплати кожного року. До речі, проведене мною раніше опитування клієнтів показало, що багато власників магазинів на базі OpenCart/ocStore встановили систему самостійно. А потім докуповували потрібні модулі та зверталися до підтримки автора за потреби. Саме в цьому спеціалізується сайт opencartforum.com. Це спільнота де є розробники та власники працюючих інтернет-магазинів. Тут можна ставити запитання та отримувати відповіді від інших користувачів. Отже, будучи учасником цієї спільноти, ви можете розраховувати на Low-Cost ціну з підтримкою від авторів доповнень. Від вас же в цьому випадку знадобиться комп'ютерна грамотність і засукати рукави, щоб вивчити систему та модулі. Приблизно це може займати 2-3 години кожного дня протягом декількох місяців. Скільки будуть коштувати додаткові модулі? Не всі інтернет-магазини однакові. Іноді сайт потрібен лише для того, щоб вже існуючи клієнти мали можливість переглянути каталог онлайн. А іноді він має синхронізуватися зі складом та API Нової пошти. Але давайте порахуємо якісь середньо статистичний мінімум розширень, які варто мати. Базовий функціонал Назва Ціна мін Ціна макс Примітка ocStore 0 0 Сама система з базовим функціоналом магазину: каталог товарів, кошик та ін. ocStore - це збірка на базі OpenCart з рядом покращень. Спрощення кошика $10 $20 Мова про модуль, який спрощує стандартну корзину системи. Користувачеві потрібно заповнювати менше інформації під час оформлення замовлення. AJAX Quick Checkout FREE - 0 — модуль, по суті, зроблений для реклами платної версії, тому не вважаю що його можна повноцінно використовувати. Нещодавно у нас на форумі з'явився новий модуль One Page Checkout - Просте оформлення замовлення за $10. Також схожу функцію виконує модуль Купить в 1 клик PRO - Быстрый заказ ще $10 — він дозволяє оформити замовлення прямо на сторінці товару через спливаючє вікно. Фільтр товарів 0 $34 У системі є фільтр зі слабким функціоналом. Знову ж таки, не всім магазинам він потрібен. Деякі примудряються робити фільтрацію за допомогою класифікації у категоріях. У випадку із книгами цілком може спрацювати, якщо категорії відповідатимуть жанрам. Навіть у магазині одягу можна класифікувати за чоловічими/жіночими/дитячими а потім уже зробити підкатегорії. Але в інших випадках параметрів для фільтрації може бути дуже багато і такий спосіб навряд чи підійде для товарів з чіткими технічними характеристиками (техніка). Вказана ціна за OCFilter. РАЗОМ $10 $54 Шаблон дизайну Оскільки серед безкоштовних шаблонів немає особливого вибору, краще відразу враховувати ціну платного варіанту. Платні шаблони виглядають гарніше, мають більше функціоналу. Але! Якщо ви хочете тільки спробувати, то краще не викидати гроші даремно та почати саме з безкоштовного шаблону. Назва Ціна мін Ціна макс Примітка 0 $65 Nice — шаблон явно кращий за дефолтний (який відображається відразу після установки системи). Однак він не багатий на додатковий функціонал. Плюсом є гарна адаптивна версія для телефону та наявність Мега-меню. Увага! На підтримку українського бізнесу один з наших авторів роздає свій комерційний шаблон безкоштовно! Називається Moneymaker. ShowCase — Для прикладу представлений популярний шаблон одеської студії OCTemplates, який, крім дизайну, має довгий список додаткових модулів. Серед них Мега-меню, Мікророзмітка, Знайшли дешевше?, Зворотній дзвінок та ін. Немає хіба що спрощеного кошика, хоча при цьому є Швидке замовлення в 1 клік. РАЗОМ 0 $65 SEO Назва Ціна мін Ціна макс Примітка SeoPro 0 $12 Модуль усуває дублі сторінок. У складання ocStore він вбудований безкоштовно. У разі чистого OpenCart необхідно докуповувати. Генерація ЧПУ 0 $15 SEO URL Generator FREE — модуль, який автоматично заповнює ЧПУ на сайті у разі, якщо товари додаються до магазину через адмінку сайту. Без цього треба вписувати вручну трансліт, що не дуже зручно. SEO URL Generator PRO — знадобиться, якщо ви імпортували товари (з програми складського обліку або xml-постачальника) і після цього виявили, що товар не має ЧПУ. Таке, до речі, не завжди відбувається. Багато модулів імпорту здатні заповнювати ЧПУ. Коректна двомовність 0 $11 Якщо сайт двомовний, то дуже важливо мати окремі адреси для того самого товару для кожної мови. Бо інакше, пошукові системи не зможуть просканувати всі мовні версії. Правильна двомовніть — це коли ви відправляєте посилання своєму другові, і він має бачити ту ж саму мову, що й ви. Для ocStore 3 кращім безкоштовним варіантом буде Мовні папки в URL. SEO мультиязык / мультирегион — платний модуль який підходить і для ocStore, і для чистого OpenCart. Цей модуль працює для різних поколінь системи. Sitemap 0 $15 У системі вже є стандартна мапа сайту (sitemap). Проблеми з нею виникають, коли понад 5000 товарів. Але це також залежить і від потужності сервера. Якщо проблема вже є, то виручить модуль Branched Sitemap. Автозаповнення тега Title та мета-тегу Description $5 $16.5 SEO - Автоматическая генерация title и description — більш дешевий та простий модуль. SEO Tags Generator — автоматичне створення тегів Title та Meta-Description для OpenCart — модуль з більшою кількістю можливостей, якій дозволє зробіть мета-описи максимально інформативними, як це рекомендує Google. Переклад на всі мови сайту (товари, категорії, статті) $15 $15 Модуль Переклад всіма мовами сайту (товари, категорії, статті) дозволяє використовувати інструменти Google-перекладача для автоматичного перекладу. Знову ж таки, не всі сайти двомовні. Однак у реаліях України переважна більшість сайтів зараз роблять двомовними. РАЗОМ $20 $84,5 Заповнення магазину Навряд чи Ви заповнюватимете сотні та тисячі товарів вручну. Слава богу, це й не потрібно. Можна імпортувати товари з XML, або скопіювати з інших сайтів (за допомогою парсера). Назва Ціна мін Ціна макс Примітка Масове додавання товарів $32 $40 SimplePars - Універсальний парсер для ІМ — $32 UniXML - модуль вивантаження в XML форматі + імпорт з XML — $40 * Не виключений варіант, коли на сайті використовуються обидва модулі. Масове редагування товарів 0 $30 Якщо під час парсингу щось піде не так: треба буде масово призначити переклад атрибутів або проставити націнку магазину — загалом може знадобитися модуль Handy Product Manager, щоб "зачесати" товари. Але може й не знадобитися. РАЗОМ $32 $70 Отже, якщо купити модулі і встановити їх самостійно, то за підсумками всіх блоків виходить загальна ціна створення інтернет-магазину від $62 до $273,5. Знову ж таки, маємо на увазі, якщо відразу використовувати нормальний платний шаблон, то мінімальна сума стає вже дещо більшою — $127. Якщо Вам не підходить варіант, коли треба робити все своїми руками, то подібний набір обійдеться в суму близько $500-$700, тому що сюди додасться "зарплата" програміста, який займатиметься Вашим сайтом. Кому підходить варіант створити інтернет-магазин самостійно? Серед покупців модулів хтось працює менеджером в торговельній компанії та хоче знайти собі додаткові канали продажів; в когось є своє виробництво та постійні клієнти, а магазин потрібен лише, щоб не перекидати екселі вручну; дехто має хобі з виготовлення якихось крафтових речей та хоче спробувати продавати їх через інтернет. А дехто взагалі тестує дропшипінг-модель, і йому зайві посередникі просто не потрібні. В принципі серед покупців є такі люди, які не мають бюджету на дорогі студії, але також є й такі, які торгують айфонами, але розуміють, що посередників все одно потрібно постійно контролювати та витрачати на це час, тому простіше вже купити та встановити самостійно. Який незаперечний плюс у тому, щоб робити самому? У вас автоматично з'являється бюджет ~$200–$400 на рекламу. Іноді витрати на рекламу стають болючим питанням, викликають купу сумнівів у тому, чи буде результат. Якщо ви зробите інтернет-магазин самостійно, то у вас автоматично буде сума, яку ви зекономили на послугах розробника. Отже, її не шкода втратити у разі чого. АЛЕ! Якщо реклама все ж таки спрацює, то у вас відразу ж буде віддача від ваших вкладень. Хіба це не чудово?! Але є дуже важлива деталь: у вас має бути час на те, щоб цим всім займатися! В такому разі можна спробувати. Але якщо ви плануєте за тиждень запуститися, а за 2 тижні вже мати перші продажі, тоді краще звертайтеся до розробника, якій все налаштує. Знову ж таки, знайти розробника ви також можете прямо на цьому сайті, розмістивши оголошення в розділі Послуги. P.S. У моїх підрахунках ціни створення інтернет-магазину не враховані витрати на хостинг та домен. Регулярна плата за хостинг буде коштувати ~200 грн/міс., тоді як домен .com.ua коштує 480 грн/рік. P.P.S. Друзі, якщо ви прочитали цю статтю і розумієте, наскільки це круто знати про існування ось такої спільноти та економити на послугах вебстудії — тоді, будь ласка, запостіть посилання на неї в себе в соціальних мережах. Можливо вашим друзям це також стане в нагоді.
    1 point
  4. Цей огляд заснований на 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 має бути досить простою. Я цю статтю довше писав, ніж адаптував модуль. Але огляд поки що не повний. Дописуватиму згодом. Також буду додавати в текст статті зауваження з коментарів. --
    1 point
    Шаблон отличный, поддержка на высочайшем уровне!
    1 point
  5. https://zippy.com.ua/ выше уже упоминалась, но она бесплатная и тем у кого есть производство или производство под заказ- отличное решение, есть прро тоже бесплатное, есть амр касира грубо говоря из недостатков именно сама СРМ часть слабенькая и визуальный вид не очень, но то все ерунда на фоне ее возможностей и крутиться на хостинге рядом с сайтом без проблем. ей не нужны отдельные сервера, очень легенькая)
    1 point
    Шаблон понравился. Качественная разработка. Кроме множества полезных функциональных решений, очень понравился тщательно проработанный стиль темы. Автор корректен и помогает с текущими вопросами.
    1 point
  6. Это давно уже сделано на php И даже мод тут был Вообще я думаю работа специалиста начнется хотябы от 50$ А дальше борьба со всеми витикающими! Ибо не просто так все!!!
    1 point
    Супер, спасибо за модуль! Слава Украине!
    1 point
  7. Не совсем вы правильно поняли, данные поля есть. Туда уже вставлен текст, он отображается там где нужно. Просто я не могу массово все это редактировать. А нужно проставить видео на товары
    1 point
  8. Если надо все имеющиеся SEO URL основного магазина прописать для нового магазина или заполнить недостающие SEO URL в существующих доп.магазинах INSERT INTO `oc_seo_url` (`store_id`, `language_id`, `query`, `keyword`) SELECT `s`.`store_id`, `u`.`language_id`, `u`.`query`, `u`.`keyword` FROM `oc_store` AS `s` LEFT JOIN `oc_seo_url` AS `u` ON (1) LEFT JOIN `oc_seo_url` AS `su` ON (`su`.`store_id` = `s`.`store_id` AND `su`.`language_id` = `u`.`language_id` AND `su`.`query` = `u`.`query`) WHERE `u`.`store_id` = 0 AND `su`.`query` IS NULL; И желательно добавить индекс ALTER TABLE `oc_seo_url` ADD UNIQUE `UK_seo_url` (`store_id`, `language_id`, `query`);
    1 point
    Модуль классный - но продажа его ужасная - особенно с утра ) - купил тут, потом оказывается надо зайти на другой сайт там зарегистрироваться потом еще ждать у моря погоды. Зачем тут тогда продавать вообще. Почему не написаны такие условия покупки в описании.
    1 point
  9. В черновиках блога все еще висит, со статистикой. Но нужен вселенский мотиватор, чтобы ее закончить. В любом случае - дам знать сообществу о ее публикации. Относительно OpenCart, точкой проникновения на сервер служат, в основном (79.3%), административные разделы магазинов и FTP, это происходит из-за компрометации паролей администраторов (тут одно из двух, либо исполнители, либо брутфорс). Через админку шелл можно залить несколькими способами, кол-во вариантов заливки шелла зависит от набора установленных модулей. Варез занимает второе место (12.1%). Уязвимости в движке и модулях (~5%), но тут постараться надо, чтобы "уязвимость в модуль вставить". у OpenCart есть своеобразный архитектурный щит, который не позволяет писать кривые модули. Все остальное приходится на уязвимости ядра или пакетов сервера. Т.е. типичные ошибки это простые пароли, доверие к подрядчикам с сомнительной репутацией или без нее и отсутствие системы слежения за изменениями в файлах, такой как FSMonitor, которые, позволяют быть в курсе изменений в файлах сайта.
    1 point
  10. catalog/language/russian/checkout/cart.php Переменная $_['error_required']
    1 point
×
×
  • 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.