OC v2.х Давайте обсуждать Opencart 4

  • Автор темы Автор темы mr.teray
  • Дата начала Дата начала

mr.teray

Продвинутый (IV)
Сообщения
61
Реакции
19
Баллы
178
"Мысли в слух"
у меня на дворе подходит к своему завершению 2024 год.
В 2014 году я начал самостоятельную разработку магазина под себя на основе опенкарта, сейчас в использовании 2.1, внес кучу правок в исходный код и улучшил функционал, половину я уже и забыл что есть, а чего нету в опенкарте.
Оно работает я и не лезу)

модули которые были на 2.1, а сейчас не обновлялись для 3 версии, не говоря про 4 версию.
есть так же важные модули которые для 4 версии так и не вышли. например "csv"

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

И это все не частое явление.. ну короче.. пора бы уже и шаблон обновить.... и вот думаю... уже была у меня рабочая 3 версия готовая к запуску с моими данными, но все равно там небыло всего того, что есть у меня сейчас на 2.1

Хочу с нуля 4 делать, с сохранением базы заказов, товаров и тд, это просто, а вот модули..., я 3 версию я копал, копал и понял, что этот твиг это как сказал один мудрый человек на форуме "мертворожденный ребенок"=)) как и сама 3 версия. Но я даже на 2.3 не обновился и модули которые были на 2.3, я переписывал под 2.1..
Может я сейчас хочу усложнить себе жизнь, но не пора ли 4 версию начинать реализовывать в магазинах? Хотя Даниель на гитхабе там уже кучу всего обещает, но как то сроки явно не соблюдены.. о которых он пишет

Так вот вопрос есть уже те, кто копает 4рку на вполне рабочем магазине, а не так.. сайт для себя и его семьи?))) Какие видите перспективы, или ждем 5-6 версию?))))
 
Ну зная тебя, ты всегда ко всему критически относишься)
А по факту в опенкарт не вижу разницы между tpl-twig ... Тут больше роль кеширование играет
По факту твиг отработал, закешировался и все... дальше работает тпл


А по факту кому не нравится твиг даже в 4 можно вернутся к тпл без проблем.
Это не критическое отношение, а здоровый смысл и стремление к минимализму. Если что-то решается малой кровью, то зачем тогда внедрять монстра?
 
Это не критическое отношение, а здоровый смысл и стремление к минимализму. Если что-то решается малой кровью, то зачем тогда внедрять монстра?
Я ж почему и говорю, шаблонизатор можна отключить если он не устраивает)
 
Конечно можно, только вот потом почему то шаблоны на твиге не будут работать :pop:
Почему не будут? Оставь админку на твиге используй дуально как например симпл чекаут работает, сам шаблон можешь использовать спокойно, либо если полное отрицание от твига, переведи ее на тпл либо бери с 2ки, один раз посидел сделал себе сборку и пользуй)
Админку можешь не трогать думаю тут не принципиально уже для нее твиг или тпл
 
Почему не будут? Оставь админку на твиге используй дуально как например симпл чекаут работает, сам шаблон можешь использовать спокойно, либо если полное отрицание от твига, переведи ее на тпл либо бери с 2ки, один раз посидел сделал себе сборку и пользуй)
Админку можешь не трогать думаю тут не принципиально уже для нее твиг или тпл
system/library/template/twig.php
PHP:
    public function render($filename, $code = '') {
просто добавляешь в эту функцию поддержку тпл и дальше спокойно используешь tpl в связке с twig
 
Вариант 2. проще
пример:
/admin/controller/event/theme.php
там уже даже дефолтно есть используй тпл, если не найдешь твиг, и так по всему опенкарту 3 (4 вроде так же)
PHP:
if (is_file(DIR_TEMPLATE . $route . '.twig')) {
      $this->config->set('template_engine', 'twig');
    } elseif (is_file(DIR_TEMPLATE . $route . '.tpl')) {
      $this->config->set('template_engine', 'template');
    }

system/engine/loader.php
function view
PHP:
$template = new Template($this->registry->get('config')->get('template_engine'));
на

PHP:
$this->config->set('template_engine', 'template');
 $html = $this->load->view("extension/module/account", $data);
 $this->config->set('template_engine', 'twig');
пример
 
Последнее редактирование:
Глянул древнее видео про opencart 4, и вообще знаете - куча полезных мелких нюансов, звучит приятно. Обновление версии из админки, модули в отдельной папке целиком а не по всему сайту, cke по умолчанию вместо summernote, переименовка адреса админки, параметр текущего языка в ссылке, вариации товаров, одобрение аккаунтов клиентов, убрали api или ошибку api в заказах, одностраничное оформление заказа, двухфакторка, cron в админке, но видимо не прижилось. Может с возвращением окмода, и с учётом всего наделанного - и стрельнет 4.1

 
переименование админки у меня еще в 2.1 стоит)) чтобы всякие колаборанты не шоркались, делов там было.. понты... правда модули приходилось переделывать при установке, но то копейки)
 
Ну бОльшая часть из перечисленного решается модулями-правками, но так по чуть-чуть и за***ся можно, приятнее когда из коробки
 
как трубе сяоми) которым бы еще уши, часики, зарядки да и ноутбук в придачу в комплектуху, да?
 
Ну то что я перечислил - не считаю что лишние фичи, иногда не хватало. Лишнего тоже много, но ломать проще, чем думать как сделать правильнее. Модули - хорошо, но когда из коробки работает - как-то надёжнее, а не каждый дрочит как хочет, уже какой-никакой стандарт
 
ты же понимаешь, что все как у всех это не дело))) а тут я смотрю что не конкурент один обоссаный шаблон у всех почти)) никакой индивидуальности...
 
Все эти изменения приживаются в той или иной степени, но вот то что в опенкарт проблема с математикой, так тут ничего уже не поделаешь.
Я надеялся что хотя бы в 4й версии изменят логику подсчета суммы, так нет, упорно не хотят менять и не хотят признать что 2 х 3 = 6 а не 7 и не 5
 
Все эти изменения приживаются в той или иной степени, но вот то что в опенкарт проблема с математикой, так тут ничего уже не поделаешь.
Я надеялся что хотя бы в 4й версии изменят логику подсчета суммы, так нет, упорно не хотят менять и не хотят признать что 2 х 3 = 6 а не 7 и не 5
Это о чём именно идёт речь?
 
Это о чём именно идёт речь?

сейчас во всех версиях опенкарт не правильно реализовано округление
сейчас так: сумма=цена * курс * количество ->округление
должно быть: цена * курс ->округление * количество
 
сейчас во всех версиях опенкарт не правильно реализовано округление
сейчас так: сумма=цена * курс * количество ->округление
должно быть: цена * курс ->округление * количество
А, тогда это не баг, а фича.
 
Все эти изменения приживаются в той или иной степени, но вот то что в опенкарт проблема с математикой, так тут ничего уже не поделаешь.
Я надеялся что хотя бы в 4й версии изменят логику подсчета суммы, так нет, упорно не хотят менять и не хотят признать что 2 х 3 = 6 а не 7 и не 5
Можешь толком обьяснить живой пример, потому что нет ни фичи ни бага такого
есть понятие символов после запятой. (мелочь) 100.6 + 100.5 будет 101 логично, при условии что после запятой нет символов.
за форматирование валюты отвечает

PHP:
    public function format($number, $currency, $value = '', $format = true) {
        $symbol_left = $this->currencies[$currency]['symbol_left'];
        $symbol_right = $this->currencies[$currency]['symbol_right'];
        $decimal_place = $this->currencies[$currency]['decimal_place'];

        if (!$value) {
            $value = $this->currencies[$currency]['value'];
        }

        $amount = $value ? (float)$number * $value : (float)$number;
     
        $amount = round($amount, (int)$decimal_place);
     
        if (!$format) {
            return $amount;
        }

        $string = '';

        if ($symbol_left) {
            $string .= $symbol_left;
        }

        $string .= number_format($amount, (int)$decimal_place, $this->language->get('decimal_point'), $this->language->get('thousand_point'));

        if ($symbol_right) {
            $string .= $symbol_right;
        }

        return $string;
    }
Причем вообще к опенкарту?)

round() лично я с ним не поспорю)
Использовать другие методы типо bcdiv() и bcmul() и т.д смысла нет мы не используем более 2 значений после точки
 
Последнее редактирование:
Можешь толком обьяснить живой пример, потому что нет ни фичи ни бага такого
есть понятие символов после запятой. (мелочь) 100.6 + 100.5 будет 101 логично, при условии что после запятой нет символов.
за форматирование валюты отвечает


Причем вообще к опенкарту?)

round() лично я с ним не поспорю)
Использовать другие методы типо bcdiv() и bcmul() и т.д смысла нет мы не используем более 2 значений после точки
ситуация такова, когда убираем вообще мелочь после запятой и у нас должны быть целые цифры, в корзине 2 товара ценой по 100, а реально считается 100.4 + 100.4 и тоже будет 201, а если в корзину добавлено 100 товаров то разница уже даже очень велика
По сути нужен костыль типа
Код:
$clear_price = $this->currency->format($unit_price, $this->session->data['currency'], false, false);
$total = $this->currency->format($product['quantity'], $this->session->data['currency'], $clear_price);
но там столько этих костылей надо вставлять где нужно корректировать с (базовая цена* количество)* курс конвертации, на (базовая цена* курс конвертации)* количество, где первая половина логической операции округляет данные и только потом, корректную сумму умножать на количество.
 
ситуация такова, когда убираем вообще мелочь после запятой и у нас должны быть целые цифры, в корзине 2 товара ценой по 100, а реально считается 100.4 + 100.4 и тоже будет 201, а если в корзину добавлено 100 товаров то разница уже даже очень велика
По сути нужен костыль типа
Код:
$clear_price = $this->currency->format($unit_price, $this->session->data['currency'], false, false);
$total = $this->currency->format($product['quantity'], $this->session->data['currency'], $clear_price);
но там столько этих костылей надо вставлять где нужно корректировать с (базовая цена* количество)* курс конвертации, на (базовая цена* курс конвертации)* количество, где первая половина логической операции округляет данные и только потом, корректную сумму умножать на количество.
Все правильно, php следует матиматике. Это не опенкарт)
Скрытое содержимое. Вам нужно войти или зарегистрироваться.

Если нужно чтобы при 100.4 + 100.4 = 200 то нужно в cart.php /system/library/cart.php
ищем все что связано с price и берем в round( ); говорим движку что уже работаем с округленными числами
В итоге вот 2 товара по 100.4
Скрытое содержимое. Вам нужно войти или зарегистрироваться.



Вот cart.php с round() из чистого ocstore 3.0.3.7
Так что не нужно искать ошибки где ее нет, и костыли тоже не нужны :) просто нужно указать ему как работать по своему...
 
Последнее редактирование:
Назад
Верх