343 сообщения в этой теме

27 минут назад, markimax сказал:

Да подчеркну все же преимущества шаблонизаторов

«Преимущество» шаблонизаторов только в одном
Чтобы криворукие идиоты не вставляли в tpl new Class() и т.п. вызовы которые должны быть в контроллерах :mrgreen:

Ахаах в яблочко)
А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет?

И если кеш файовый не пригоден на том или ином проекту будет может как в XenForo шаблоны переносить в БД хранить?

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
37 минут назад, Waha сказал:

Ахаах в яблочко)
А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет?

А у него нет никакого кеширования и вряд ли будет в ближайшее время и читая его ответы пользователям с нагруженными проектами (кто то кстати у нас на форуме давал ссылки на его ответы возмущенным пользователям)- не планирует особо, там много чего надо переделывать в архитектуре opencart
И даже в twig выключено, я так понял из - за проблем "синхронизации" архитектур
Вообще с кешированием в opencart все "сложно" и запутано, нету единых стандартов.

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 18.04.2017 в 12:07, Waha сказал:

Думаю Даниель специально так делает, все хотят заработать и несовместимость модулей один из способов продавать больше. Платформа то бесплатная, надо же где-то монетизацию включать) И не жалуйтесь, кто не ленивый использует это с выгодой.

Вы зрите в корень.

Только я не понимаю, почему подавляющее большинство здешних постояльцев не хотят увидеть позитив с финансовой стороны, но упорно ищут любые зацепки, что бы покритиковать.

Такое складывается впечатление, что они тут не по собственной воле что бы заработать на предоставлении услуг и товаров, а их кто-то когда-то заставил это сделать, они "отстрелялись", сделав пару шаблонов/модулей ещё под 1.5 и теперь любое продолжение работы - это каторга и бесперспективная трата времени, а тут еще и палки в колеса ставят. Вот же демон этот Даниэль, правда? Лол.

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@destreser все очень просто, тут люди думают не только за деньги 

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 минут назад, ArtemPitov сказал:

@destreser все очень просто, тут люди думают не только за деньги 

Совершенно верно
Думают про экосистему opencart
Чтобы он был популярен (а будет популярен - еще больше кстати заработают разработчики)
Посмотрите на маркетплейс - да оттуда свалило очень много разработчиков хороших модулей.
Их просто достал частичный маразм Даниэля (twig это вообще имхо идиотизм)
Посмотрите какая фрагментация opencart сейчас ... не должно такого быть 

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, markimax сказал:

Думают про экосистему opencart

При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает  второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь?

Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь.

Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще.

Изменено пользователем destreser
1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
33 минуты назад, destreser сказал:

При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает  второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь?

Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь.

Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще.

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

На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было.
на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения
 

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так:

Скрытый текст

a44355e1fe0aabe7622d2d475b61050b.png

при том, что 2.3 цифры приятнее:

Скрытый текст

34239e8f6434cbf23e2f89c4cbdd7104.png

Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один -
***
- Мужик, хоч е*ться?
- Хочу!
- Прокалывает все шины шилом и говорит: Вот - е*сь!
***
))

2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, RGB сказал:

Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится

Да откуда?

 

Основное время отобрал шаблонизатор

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, RGB сказал:

Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так:

  Показать контент

a44355e1fe0aabe7622d2d475b61050b.png

при том, что 2.3 цифры приятнее:

  Показать контент

34239e8f6434cbf23e2f89c4cbdd7104.png

Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится

Да у меня почти такие же печальные результаты
Это все "работа" шаблонизатора
Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов
Так что я думаю не стоит ждать и от релиза скорости
Лучше переключать в режим php tpl
Ох и прогнулся Даниэль перед "спонсорами" - инвесторами

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

А хотите еще "приколоться" с twig шаблонизатора ?
Смотрите какой php код генерит с тривиального шаблона twig

 

{% extends "base.html" %}

{% block title %}Серия романов о Гарри Поттере{% endblock %}

{% block content %}
<h1>Серия романов о Гарри Поттере</h1>

<div id="books">
    {% for book in books %}
    <div class="book">
        <strong>{{book.number}}</strong>. "<em>{{book.title}}"</em> - {{book.date}}
    </div>
    {% endfor %}
</div>
{% endblock %}

 

мАмА дАрАгАя :

 

Скрытый текст

<?php

/* base.html */
class __TwigTemplate_8944b57466f08564caa53a1988261ae0 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = false;

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        // line 1
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ru\">
<head>
    <title>";
        // line 4
        $this->displayBlock('title', $context, $blocks);
        echo "</title>
    <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\"/>
</head>
<body>

<div id=\"content\">
    ";
        // line 10
        $this->displayBlock('content', $context, $blocks);
        // line 12
        echo "</div>

</body>
</html>";
    }

    // line 4
    public function block_title($context, array $blocks = array())
    {
    }

    // line 10
    public function block_content($context, array $blocks = array())
    {
        // line 11
        echo "    ";
    }

    public function getTemplateName()
    {
        return "base.html";
    }

    public function getDebugInfo()
    {
        return array (  52 => 11,  49 => 10,  44 => 4,  37 => 12,  26 => 4,  21 => 1,  63 => 14,  50 => 11,  47 => 10,  43 => 9,  38 => 6,  35 => 10,  29 => 3,);
    }
}

<?php

/* books.html */
class __TwigTemplate_b8cee45188afdb4e6ad9c60dbacb54c3 extends Twig_Template
{
    public function __construct(Twig_Environment $env)
    {
        parent::__construct($env);

        $this->parent = $this->env->loadTemplate("base.html");

        $this->blocks = array(
            'title' => array($this, 'block_title'),
            'content' => array($this, 'block_content'),
        );
    }

    protected function doGetParent(array $context)
    {
        return "base.html";
    }

    protected function doDisplay(array $context, array $blocks = array())
    {
        $this->parent->display($context, array_merge($this->blocks, $blocks));
    }

    // line 3
    public function block_title($context, array $blocks = array())
    {
        echo "Серия романов о Гарри Поттере";
    }

    // line 5
    public function block_content($context, array $blocks = array())
    {
        // line 6
        echo "<h1>Серия романов о Гарри Поттере</h1>

<div id=\"books\">
    ";
        // line 9
        $context['_parent'] = (array) $context;
        $context['_seq'] = twig_ensure_traversable((isset($context["books"]) ? $context["books"] : null));
        foreach ($context['_seq'] as $context["_key"] => $context["book"]) {
            // line 10
            echo "    <div class=\"book\">
    \t<strong>";
            // line 11
            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["book"]) ? $context["book"] : null), "number"), "html", null, true);
            echo "</strong>. \"<em>";
            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["book"]) ? $context["book"] : null), "title"), "html", null, true);
            echo "\"</em> - ";
            echo twig_escape_filter($this->env, $this->getAttribute((isset($context["book"]) ? $context["book"] : null), "date"), "html", null, true);
            echo "
    </div>
    ";
        }
        $_parent = $context['_parent'];
        unset($context['_seq'], $context['_iterated'], $context['_key'], $context['book'], $context['_parent'], $context['loop']);
        $context = array_merge($_parent, array_intersect_key($context, $_parent));
        // line 14
        echo "</div>
";
    }

    public function getTemplateName()
    {
        return "books.html";
    }

    public function isTraitable()
    {
        return false;
    }

    public function getDebugInfo()
    {
        return array (  63 => 14,  50 => 11,  47 => 10,  43 => 9,  38 => 6,  35 => 5,  29 => 3,);
    }
}

<?php

require_once 'lib/Twig/Autoloader.php';
Twig_Autoloader::register();

$loader = new Twig_Loader_Filesystem('templates');
$twig = new Twig_Environment($loader, array(
    'cache'       => 'compilation_cache',
    'auto_reload' => true
));

$books = array(
    array('number' => 'Книга 1', 'title' => 'Гарри Поттер и философский камень', 'date' => '30.06.1997'),
    array('number' => 'Книга 2', 'title' => 'Гарри Поттер и Тайная комната', 'date' => '2.07.1998'),
    array('number' => 'Книга 3', 'title' => 'Гарри Поттер и узник Азкабана', 'date' => '8.07.1999'),
    array('number' => 'Книга 4', 'title' => 'Гарри Поттер и Кубок огня', 'date' => '8.07.2000'),
    array('number' => 'Книга 5', 'title' => 'Гарри Поттер и Орден Феникса', 'date' => '21.07.2003'),
    array('number' => 'Книга 6', 'title' => 'Гарри Поттер и Принц-полукровка', 'date' => '16.07.2005'),
    array('number' => 'Книга 7', 'title' => 'Гарри Поттер и Дары Смерти', 'date' => '21.07.2007')
);

echo $twig->render('books.html', array('books' => $books));

 

 

 

Занавес

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ?
Мне на ум не приходит ни одного разумного объяснения
Может я чего то не понимаю ?
Вот честно

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Booz money, как говорил Никсон в Футураме ;)

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, markimax сказал:

После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ?
Мне на ум не приходит ни одного разумного объяснения
Может я чего то не понимаю ?
Вот честно

Так вот же ))

Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?))
в гит и т.д. - может остановится пока не поздно..

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для переноса темы из одного проекта в другой, с одой системы в другую

 

 

2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, chukcha сказал:

Для переноса темы из одного проекта в другой, с одой системы в другую

типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу?
 

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, AWARO сказал:

один стандарт

Условно -да

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

короч опенкарт превращается потихоньку в //
вот не по теме опенкарт впихнутый в джумлу
https://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну я так и предполагал
Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart
Вот Даниэль и прогнулся
Но это то понятно.

Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 минут назад, AWARO сказал:

вот не по теме опенкарт впихнутый в джумлу

там-то почти 100% ОС, в смысле ядра
Не знаю как там с ЧПУ, но работает же

2

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Только что, chukcha сказал:

там-то почти 100% ОС, в смысле ядра
Не знаю как там с ЧПУ, но работает же

работает, с него и попал сюда на форум
но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще...
сео это просто название там..
по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход.
В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии...
А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно)))
засунул руку в монитор и взял с полки че надо

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Посмотрел через профайлер по запросам - в тройке добавились новые типа такого:

0.00429s	15	SELECT * FROM oc_theme WHERE store_id = '...' AND theme = '...' AND route = '...'
0.00315s	11	SELECT * FROM oc_translation WHERE store_id = '...' AND language_id = '...' AND route = '...'

в итоге главная страница после свежей установки имеет такую статистику по запросам:

Total time 0.5381 seconds | Total queries:99

А в 2.3.0.2 она была "легче" на целых 26 запросов:

Total time 0.3941 seconds | Total queries:73

 

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, RGB сказал:

Посмотрел через профайлер по запросам - в тройке добавились новые типа такого:


0.00429s	15	SELECT * FROM oc_theme WHERE store_id = '...' AND theme = '...' AND route = '...'
0.00315s	11	SELECT * FROM oc_translation WHERE store_id = '...' AND language_id = '...' AND route = '...'

 

Лишние запросы это всего ~ 0.075 c
А вот все остальное (почти 0.3 c)  "сьел" парсинг регулярками шаблонизатор
Регулярки оооочень много жрут ресурсов, особенно когда шаблон большой, а его парсят и парсят, парсят и парсят, парсят и парсят ...
 

Скрытый текст

 


 foreach ($this->filters as $pattern => $filter) {
            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);

            if ($count) {
                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
                    array_shift($matches);
                    $filter->setArguments($matches);

                    return $filter;
                }
            }
        }

            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
            }

            $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string);

preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE);

                if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lexRawData($match[1]);
                // {% line \d+ %}
                } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lineno = (int) $match[1];
                } else {
                    $this->pushToken(Twig_Token::BLOCK_START_TYPE);
                    $this->pushState(self::STATE_BLOCK);
                    $this->currentVarBlockLine = $this->lineno;
                }

 


 if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) {

...

...

...

 

И это только одна "миллионная" часть их в коде шаблонизатора
Иногда простой регуляркой (одной) сжимаешь код html (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы"

0

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
14 минут назад, markimax сказал:

Лишние запросы это всего ~ 0.075 c
А вот все остальное (почти 0.3 c)  "сьел" парсинг регулярками шаблонизатор
Регулярки оооочень много жрут ресурсов, особенно когда шаблон большой, а его парсят и парсят, парсят и парсят, парсят и парсят ...
 

  Показать контент

 



 foreach ($this->filters as $pattern => $filter) {
            $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count);

            if ($count) {
                if (preg_match('#^'.$pattern.'$#', $name, $matches)) {
                    array_shift($matches);
                    $filter->setArguments($matches);

                    return $filter;
                }
            }
        }


            if (0 == strlen($string) ? false : (1 == preg_match('/^./su', $string) ? false : true)) {
                throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.');
            }

            $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string);


preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE);


                if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lexRawData($match[1]);
                // {% line \d+ %}
                } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) {
                    $this->moveCursor($match[0]);
                    $this->lineno = (int) $match[1];
                } else {
                    $this->pushToken(Twig_Token::BLOCK_START_TYPE);
                    $this->pushState(self::STATE_BLOCK);
                    $this->currentVarBlockLine = $this->lineno;
                }

 



 if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) {

...

...

...

 

И это только одна "миллионная" часть их в коде шаблонизатора
Иногда простой регуляркой (одной) сжимаешь код html (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы"

 

Просто ***ный стыд... И как это Г можно было встроить в движок...!? Чем дальше копаю версию 3.0 тем больше понимаю, что направление развития платформы достаточно спорное... Скорее всего версия ocStore 3.x будет поставляться с допилом который будет полностью вырубать twig  и использовать tpl 

1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!


Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.


Войти

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.