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

Leaderboard

Popular Content

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

  1. Якщо ви використовуєте панелі управління серверами VestaCP/Hestia в режимі Nginx+php-fpm без Apache (то ви вже молодці :). І плануєте встановити (або вже використовуєте) багатомовність з префіксами виду /uk/url.html то перед вами постане одна проблема, яка пов'язана з кривим дефолтним конфігом Nginx в цих панелях. Проблема полягає в тому що сервер не буде обробляти запити типу /uk/index.php?route= і видаватиме помилку 404. Лікуємо. Перед if (!-f $document_root$fastcgi_script_name) { return 404; } в location ~ [^/]\.php(/|$) { потрібно записати if (!-e $request_filename) { rewrite ^/(.+)$ /index.php?_route_=$1 last; }
    1 point
  2. Щось в останній час мене включило кодити, давно такого не було з початку вторгнення. Зайнявся Opencart 4, наваяв багато крутих штук для нього, і майже дописав підтримку доповнень від Opencart 3 (принаймні на рівні доставок-оплат). І тут виникло відчуття розвилки - можна намагатися врятувати Opencart 4, або дати йому потонути. По факту Opencart 4 "не взлітає". Вялі інновації, переускладнений код, всі старі проблеми не вирішені. До цього плюсується абсолютна неадекватність Даніеля і його одноосібний контроль на репозиторієм. Проект, який би міг яскраво рухатись вперед силами ком'юніті, ледь ворушиться по міліметру за півроку. Зашквару ситуації додає те, що люди качають на opencart.com Opencart 4, як актуальну версію, а на форумах та й сам Даніель кажуть, що це бета і використовуйте Opencart 3 (причому не з сайту, а з гітхабу). Люди чухають потилицю і йдуть собі далі. Як на мене, розклад з Opencartом зараз один з найгірших за всі роки, і треба щось робити. Можна почати ваяти публічний Opencart 5, взявши за базу Opencart 3 (а калічну четвірку лишити Даніелю). У людей купа класних ідей, персонально у мене теж є немало крутих наробок. Цим постом я хочу прощупати, чи є у нас ентузіазм? ) Ніша Opencart Opencart вирізняється серед інших рішень простотою коду, який можна читати, розуміти і правити. Абсолютна прозорість, процедурність та голі SQL запити цьому допомагають. Це його і слабкість, і сила. І тільки у цій ніші він може жити. vQmod/ocMod є вираженням ідеї "я бачу, що мені треба поміняти в коді, і я просто міняю". Будь-які спроби від цього піти одразу переводять проект в іншу категорію, де і так є свої давні гравці - Prestashop, Magento, Woo. Загалом, треба починати з основ. І перше питання, яке треба вирішити - це code style. Я зробив трансформацію кодової бази Opencart 3 з своїм баченням основ, хочу вам це показати і почути вашу думку. Ось збірка, у ній можна подивитись, як виглядає новий код - https://devs.mx/down/opencart_experiment1.zip Що зроблено? 1. $registry "упразднен", всі об'єкти переведені на статичні класи. Це дає можливість доступатися до них з любого місця без всякої додаткової магії. Раніше було: $this->url->link('product/product', 'product_id=' . $this->request->get['product_id']) Стало: url::link('product/product', 'product_id=' . request::get['product_id']) Так, :: естетично виглядає гірше, ніж ->, але крім цього одні плюси, і в швидкодії теж. Нарешті IDE повністю розуміє, що звідки береться, працює підсвітка параметрів, code completion та переходи по Ctrl-клік. 2. Моделі уже не треба завантажувати в явному вигляді перед використанням. Із звертання для лаконічності забрано префікс model_. Було: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); Стало: $product_info = catalog_product::getProduct($product_id); 3. Моделі адмінки мають префікс admin_, що дає можливість завантажувати адмінські моделі в каталозі і навпаки: $product_id = admin_catalog_product::addProduct(request::post); $preview = catalog_product::getProduct($product_id); 4. Забрано DB_PREFIX. Ситуації, коли в одну базу треба поставити 2 магазини - супер-рідкі і вирішуються створенням нової бази. Було: $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store ... ") Стало: db::query("SELECT * FROM category c LEFT JOIN category_description cd ON (c.category_id = cd.category_id) LEFT JOIN category_to_store ... ") 5. Додано коротку функцію esc(), яка екранує та додає одинарні лапки. Було: $this->db->query("INSERT INTO " . DB_PREFIX . "category_description SET category_id = $category_id, name = '" . $this->db->escape($value['name']) . "', description = '" . $this->db->escape($value['description']) . "'"); Стало: db::query("INSERT INTO category_description SET category_id = $category_id, name = " . esc($value['name']) . ", description = " . esc($value['description'])); 6. Додана коротка функція config(), яка повертає ключ конфігурації, що починається з префікса config_, та переводить його в int, якщо він закінчується на _id. Було: $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) WHERE cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id')) . "'") Стало: db::query("SELECT * FROM category c LEFT JOIN category_description cd ON (c.category_id = cd.category_id) WHERE cd.language_id = " . config('language_id') . " AND c2s.store_id = " . config('store_id')) 7. Повністю забраний механізм events, як непрозорий. 8. Більшість шляхів та URL тепер відносні. config.php тепер один, в ньому немає купи дублюючих визначень: <?php const SITE_URL = 'http://localhost/opencart5/'; const DIR_STORAGE = 'system/storage/'; // DB const DB_HOSTNAME = 'localhost'; const DB_USERNAME = 'root'; const DB_PASSWORD = 'root'; const DB_DATABASE = 'opencart5'; 9. З адмінської частини забрано user_token в URL. Хтось знає реальний сценарій атаки, від якого він захищав? Якщо так, то є менш кодо-засираючі методи захиститись, наприклад автоматичне додавання IP, з якого логіняться, в білий список. 10. При цьому всьому за допомогою обгорток повністю підтримується старий синтаксис і працють доповлення Opencart 3. Принаймні, я встановив модуль Нової Пошти і він нормально працює ) Поки більше нічого не поміняно, візуально все виглядає по старому. Як вам такий напрямок змін?
    1 point
  3. 35,833 downloads

    Вітрина: https://demo3.ocstore.com/ Адмінка: https://demo3.ocstore.com/admin Логін: demo Пароль: demo ocStore має 2 варіанти для вибору: ocStore-3.0.3.7-uk (only for Ukraine).zip - Лише для українського ринку, містить тільки українську локалізацію, гривню та області України (всі інші країни, валюти і регіони видалені) ocStore-3.0.3.7-uk-en (Ukraine + Global).zip - Містить українську та англійську локалізації, в базі присутні всі країни і регіони, а також валюти гривня, долар і євро Значення номерів версій У назві OpenCart присутня нумерація релізу, яка в свою чергу розбита на чотири пункти MAJOR.MINOR.FEATURE.PATCH. MAJOR – цей пункт вказує на основні зміни в ядрі OpenCart які обернено не сумісні зі старими релізами. MINOR – цей пункт вказує на зміни, які сумісні в однакових мінорних версіях, але можуть вплинути на роботу сторонніх розширень. FEATURE – цей пункт вказує на розширення чи додавання нового функціоналу (шлюзів оплати, методів доставки тощо) PATCH – цей пункт вказує на виправлення помилок, є безпечною для оновлення в однакових мажорних та мінорних версіях У версії ocStore може бути п'ята цифра релізу, вона позначає проміжний номер збірки. Відмінності між ocStore 3.0.3.7 і ocStore 3.0.2.0 Виправлено: Виправлено SeoPro, в якому виправлено генерацію повного шляху для товарів при включеній опції враховувати категорію Скореговано переклад регулярних платежів Змінено: Змінено стандартне джерело курсу валют (Додано Центробанк ЄС, Центробанк РФ, Нацбанк України, Fixer) Винесено в налаштування ліміт кількості елементів, що відображаються при пошуку з автодоповненням в адмінці Застосування фільтрів в адмінці натисканням на Enter на сторінках замовлень, повернень, покупців, періодичних замовленнях, статтях блогу Додано: Додано відображення номера замовлення під час його редагування в адмінці Доданий редактор модифікаторів з можливістю бекапа (мігрований з ocStore 2.3.0.2.4) Додано можливість зміни сортування модулів у макетах перетягуванням Додано можливість сортування товарів та статей перетягуванням у рекомендованих модулях Додано Домовой - Віджет для моніторингу стану магазину 1.0.1 Додано спосіб виведення тегів canonical, prev, next Додано гнучке керування висновком тега noindex Відмінності між ocStore 3.0.3.7 і OpenCart 3.0.2.0 Локалізація: Додана українська локалізація Локалізація бази (схеми, статуси, повернення та ін.) Додано мультимовність редактора Summernote Додано мультимовність календаря SEO: Додавання мета-тегів og:url, og:image, og:type, og:title; Додавання файлу robots.txt; Додані title та h1 для товарів; Додані title та h1 для категорій; Для статей додані title, h1, meta keywords та meta description; Для виробників додані title, h1, meta keywords, meta description та description; Доданий альтернативний метод формування ЧПУ, що виключає формування різних посилань для однієї сторінки; Додано noindex і follow для технічних сторінок, сортувань, лімітів та за необхідності можна керувати цими параметрами на сторінках товарів, категорій, статей, виробників, блогу Доданий SeoPro Додано спосіб виведення тегів canonical, prev, next Додано гнучке керування висновком тега noindex Розширення функціоналу: Додано можливість приховування модулів, методів оплат і доставок, що не використовуються. Доданий блог Додано редактор модифікаторів з можливістю бекапа Зв'язування блогу з товарами, категоріями, виробниками Рекомендовані товари з прив'язкою до товарів, категорій, виробників Статті блогу з прив'язкою до товарів, категорій, виробників Назва в заголовку під час редагування категорій, виробників, товарів, статей Додані макети у виробниках Пошук в адмін панелі Додано можливість зміни сортування модулів у макетах перетягуванням Додано можливість сортування товарів та статей перетягуванням у рекомендованих модулях Додано Домовой - Віджет для моніторингу стану магазину 1.0.1 Змінено: У логотипі на головній прибрано посилання на саму себе Кнопка видалення кешу системи та зображень тепер розміщена в Налаштуваннях розробника До бібліотеки зображень додано заглушку 'no_image'. Виправлена пагінація (видалено дубль першої сторінки, прибрано дублювання мета) Поліпшення фільтру товарів в адмін панелі Порядок сортування розширень (активні зверху) Оптимізовано лістинг категорій в адмінці У навігацію додано швидке додавання категорій, покупців, продуктів, виробників, завантажень Перехід до каталогу з адмін панелі Підбір товарів за будь-яким із символів в адмін панелі Номер замовлення на сторінці підтвердження Винесено в налаштування ліміт кількості елементів, що відображаються при пошуку з автодоповненням в адмінці Змінено стандартне джерело курсу валют (Додано Центробанк ЄС, Центробанк РФ, Нацбанк України, Fixer) Застосування фільтрів в адмінці натисканням на Enter на сторінках замовлень, повернень, покупців, періодичних замовленнях, статтях блогу Оновлено клас файлового кешу для усунення помилки Сайт ocStore https://ocstore.com/ OpenCart форум https://opencartforum.com/ Документація https://docs.ocstore.com/ Facebook https://www.facebook.com/opencartforum YouTube https://www.youtube.com/c/OpenCartForumCom
    Free
    1 point
  4. Мені здається ви горобця гарматою валите. Навіщо вам саме змінну робити, виводьте у шаблоні просто як html. Або у мовних файлах зробіть для мультимовності картинки $_['qwerty'] = '<img src="image/catalog/icon-guarantee.png" />';
    1 point
  5. Нова версія ShowCase 1.3 Додано e-mail повідомлення адміністратору під час запиту покупців про товари в модулі "Питання та відповіді" на сторінці товару. Додано інтерактивний стан кнопок (при додаванні товарів у кошик, порівняння та закладки). Активувати можна у налаштуваннях головного модулю управління шаблоном тут: https://share.cleanshot.com/VmfY9nw3 В модулі "OCTemplates - Analytics&E-commerce" поле "Ідентифікатор відстеження" зроблено необовʼязковим. Покращення та стилізація стандартного оформлення замовлення Opencart. Дрібні баг фікси та покращення. Додані\Оновлені\Видалені файли: Завантажити останню та актуальну версію шаблону, ви можете у центрі підтримки: https://octemplates.net/ Інструкція з оновлення тут: https://scdocs.octemplates.net/update Настійно рекомендуємо перед оновленням зробити резервну копію сайту (файли + база даних через PHPMYADMIN). За необхідності звертайтеся до нашої технічної підтримки. Ви можете замовити платну послугу оновлення шаблону до актуальної версії. Нова версія шаблону це: виправлення та покращення функціоналу + нові модулі та рішення. Увага! Якщо Ви вносили/вносите нестандартні та кастомізовані редагування у файли нашого шаблону, то Ваші доробки будуть затерті при оновленні.
    1 point
    Модуль топчик з крутою тех. підтримкою! Раджу додати у кожен магазин де цінують клієнтів та свій час☺️
    1 point
  6. Здравствуйте, большое спасибо, я знаю про этот модуль и он мне полностью подходит, но при попытке купить , сервис пишит что лицензия недоступна на домены _ru_,_рф_,su. Поэтому и возник вопрос про альтернативный модуль.
    1 point
  7. https://ager.ua/ часто спрашивают люди по одежде https://msdrop.com.ua/ тоже достаточно известный
    1 point
  8. улыбнуло честно говоря ))) если функция resize это шаблон и дефолтный контроллер с данной функцией формирующий опции тоже шаблон, ну наверно лучше промолчать ))) @Dimasscus без обид, учите матчасть. хотя если вам так удобнее жить, дело ваше. пусть будет по вашему вы правы, признаю свою ошибку, виноват шаблон. только успокойтесь
    1 point
  9. ну если товарищу нравится, что бы его было слово последним, даже если он не понимает о чем говорит и в чем проблема или не хочет понять. Бывает (( Объясняю проблему проблема в модуле, модуль изменяет функцию resize, если нет картинки, то он вставляет заглушку, в связи с этим при использование данной функции в контроллере 'image' => $this->model_tool_image->resize($option_value['image'], 50, 50), получаем не пустоту, а заглушку. Что бы не ковырять модуль и не искать в XML ке где он и что там меняет, в контроллере дописал проверку на присутствие картинки 'image' => empty($option_value['image']) ? false : $this->model_tool_image->resize($option_value['image'], 50, 50), проблема решена полностью.
    1 point
  10. Может кому пригодится. Начиная, как я понимаю, с 3.0.3.5 в опенкарте поменяли загрузчик шаблонов на ArrayLoader, соответственно теперь ничего через include не работает. Исправляется это таким образом: в system/library/template/twig.php меняем $loader = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code)); на $loader1 = new \Twig\Loader\ArrayLoader(array($filename . '.twig' => $code)); $loader2 = new \Twig\Loader\FilesystemLoader([DIR_TEMPLATE]); $loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]); ну а дальше в любом шаблоне включаем свой шаблон в виде: {% include 'мой_шаблон/template/partials/breadcrumb.twig' %} Проверено на 3.0.3.6 На гитхабе на эту тему есть пулл-реквест, но Даниэль живёт в своём формате и поэтому ожидать, что это войдёт в релиз не приходится.
    1 point
  11. файл - catalog\controller\product\category.php находим строки if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; }и if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } меняем "p.sort_order" на нужное значение : pd.name, p.model, p.quantity, p.price, rating, p.date_added думаю не сложно догадаться что значит каждое значение.Второе значение ASC меняем на DESC для сортировки по убыванию,соотвественно наоборот по увеличению. Для изменения типа отображения по-умолчанию,для версии 2.x в файл шаблона catalog\view\theme\шаблон\template\product\category.tpl перед <?php echo $footer; ?> добавляем <script> if (!localStorage.getItem('display')) { localStorage.setItem('display', 'list'); } </script>
    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.