ocdev_pro Опубліковано: 18 квітня 2017 Share Опубліковано: 18 квітня 2017 27 минут назад, markimax сказал: Да подчеркну все же преимущества шаблонизаторов «Преимущество» шаблонизаторов только в одном Чтобы криворукие идиоты не вставляли в tpl new Class() и т.п. вызовы которые должны быть в контроллерах Ахаах в яблочко) А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет? И если кеш файовый не пригоден на том или ином проекту будет может как в XenForo шаблоны переносить в БД хранить? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 18 квітня 2017 Share Опубліковано: 18 квітня 2017 37 минут назад, Waha сказал: Ахаах в яблочко) А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет? А у него нет никакого кеширования и вряд ли будет в ближайшее время и читая его ответы пользователям с нагруженными проектами (кто то кстати у нас на форуме давал ссылки на его ответы возмущенным пользователям)- не планирует особо, там много чего надо переделывать в архитектуре opencart И даже в twig выключено, я так понял из - за проблем "синхронизации" архитектур Вообще с кешированием в opencart все "сложно" и запутано, нету единых стандартов. Надіслати Поділитися на інших сайтах More sharing options... destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 В 18.04.2017 в 12:07, Waha сказал: Думаю Даниель специально так делает, все хотят заработать и несовместимость модулей один из способов продавать больше. Платформа то бесплатная, надо же где-то монетизацию включать) И не жалуйтесь, кто не ленивый использует это с выгодой. Вы зрите в корень. Только я не понимаю, почему подавляющее большинство здешних постояльцев не хотят увидеть позитив с финансовой стороны, но упорно ищут любые зацепки, что бы покритиковать. Такое складывается впечатление, что они тут не по собственной воле что бы заработать на предоставлении услуг и товаров, а их кто-то когда-то заставил это сделать, они "отстрелялись", сделав пару шаблонов/модулей ещё под 1.5 и теперь любое продолжение работы - это каторга и бесперспективная трата времени, а тут еще и палки в колеса ставят. Вот же демон этот Даниэль, правда? Лол. Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 @destreser все очень просто, тут люди думают не только за деньги 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 5 минут назад, ArtemPitov сказал: @destreser все очень просто, тут люди думают не только за деньги Совершенно верно Думают про экосистему opencart Чтобы он был популярен (а будет популярен - еще больше кстати заработают разработчики) Посмотрите на маркетплейс - да оттуда свалило очень много разработчиков хороших модулей. Их просто достал частичный маразм Даниэля (twig это вообще имхо идиотизм) Посмотрите какая фрагментация opencart сейчас ... не должно такого быть 1 Надіслати Поділитися на інших сайтах More sharing options... destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 (змінено) 4 часа назад, markimax сказал: Думают про экосистему opencart При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Змінено 19 квітня 2017 користувачем destreser 1 Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 33 минуты назад, destreser сказал: При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Раньше все кто сейчас продают модули, развивали и поддерживали систему абсолютно безоплатно, альтруисты, и значительно позже начали монетизироваться. И это уже больше подходит как вознаграждение за труды которые были приняты для раскрутки платформы и поддержки форума, ведь все темы на форуме в которых просят совета или решают проблему решаются как раз за счет этих самых продавцов модулей (опытных специалистов). На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было. на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения 1 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Скрытый текст при том, что 2.3 цифры приятнее: Скрытый текст Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 18 квітня 2017 Share Опубліковано: 18 квітня 2017 37 минут назад, Waha сказал: Ахаах в яблочко) А что на счет кеширования, если оно будет из коробки или почти из коробки от Даниеля, разве будет разница есть шаблонизатор или нет? А у него нет никакого кеширования и вряд ли будет в ближайшее время и читая его ответы пользователям с нагруженными проектами (кто то кстати у нас на форуме давал ссылки на его ответы возмущенным пользователям)- не планирует особо, там много чего надо переделывать в архитектуре opencart И даже в twig выключено, я так понял из - за проблем "синхронизации" архитектур Вообще с кешированием в opencart все "сложно" и запутано, нету единых стандартов. Надіслати Поділитися на інших сайтах More sharing options... destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 В 18.04.2017 в 12:07, Waha сказал: Думаю Даниель специально так делает, все хотят заработать и несовместимость модулей один из способов продавать больше. Платформа то бесплатная, надо же где-то монетизацию включать) И не жалуйтесь, кто не ленивый использует это с выгодой. Вы зрите в корень. Только я не понимаю, почему подавляющее большинство здешних постояльцев не хотят увидеть позитив с финансовой стороны, но упорно ищут любые зацепки, что бы покритиковать. Такое складывается впечатление, что они тут не по собственной воле что бы заработать на предоставлении услуг и товаров, а их кто-то когда-то заставил это сделать, они "отстрелялись", сделав пару шаблонов/модулей ещё под 1.5 и теперь любое продолжение работы - это каторга и бесперспективная трата времени, а тут еще и палки в колеса ставят. Вот же демон этот Даниэль, правда? Лол. Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 @destreser все очень просто, тут люди думают не только за деньги 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 5 минут назад, ArtemPitov сказал: @destreser все очень просто, тут люди думают не только за деньги Совершенно верно Думают про экосистему opencart Чтобы он был популярен (а будет популярен - еще больше кстати заработают разработчики) Посмотрите на маркетплейс - да оттуда свалило очень много разработчиков хороших модулей. Их просто достал частичный маразм Даниэля (twig это вообще имхо идиотизм) Посмотрите какая фрагментация opencart сейчас ... не должно такого быть 1 Надіслати Поділитися на інших сайтах More sharing options... destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 (змінено) 4 часа назад, markimax сказал: Думают про экосистему opencart При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Змінено 19 квітня 2017 користувачем destreser 1 Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 33 минуты назад, destreser сказал: При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Раньше все кто сейчас продают модули, развивали и поддерживали систему абсолютно безоплатно, альтруисты, и значительно позже начали монетизироваться. И это уже больше подходит как вознаграждение за труды которые были приняты для раскрутки платформы и поддержки форума, ведь все темы на форуме в которых просят совета или решают проблему решаются как раз за счет этих самых продавцов модулей (опытных специалистов). На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было. на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения 1 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Скрытый текст при том, что 2.3 цифры приятнее: Скрытый текст Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 В 18.04.2017 в 12:07, Waha сказал: Думаю Даниель специально так делает, все хотят заработать и несовместимость модулей один из способов продавать больше. Платформа то бесплатная, надо же где-то монетизацию включать) И не жалуйтесь, кто не ленивый использует это с выгодой. Вы зрите в корень. Только я не понимаю, почему подавляющее большинство здешних постояльцев не хотят увидеть позитив с финансовой стороны, но упорно ищут любые зацепки, что бы покритиковать. Такое складывается впечатление, что они тут не по собственной воле что бы заработать на предоставлении услуг и товаров, а их кто-то когда-то заставил это сделать, они "отстрелялись", сделав пару шаблонов/модулей ещё под 1.5 и теперь любое продолжение работы - это каторга и бесперспективная трата времени, а тут еще и палки в колеса ставят. Вот же демон этот Даниэль, правда? Лол. Надіслати Поділитися на інших сайтах More sharing options...
ArtemPitov Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 @destreser все очень просто, тут люди думают не только за деньги 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 5 минут назад, ArtemPitov сказал: @destreser все очень просто, тут люди думают не только за деньги Совершенно верно Думают про экосистему opencart Чтобы он был популярен (а будет популярен - еще больше кстати заработают разработчики) Посмотрите на маркетплейс - да оттуда свалило очень много разработчиков хороших модулей. Их просто достал частичный маразм Даниэля (twig это вообще имхо идиотизм) Посмотрите какая фрагментация opencart сейчас ... не должно такого быть 1 Надіслати Поділитися на інших сайтах More sharing options... destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 (змінено) 4 часа назад, markimax сказал: Думают про экосистему opencart При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Змінено 19 квітня 2017 користувачем destreser 1 Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 33 минуты назад, destreser сказал: При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Раньше все кто сейчас продают модули, развивали и поддерживали систему абсолютно безоплатно, альтруисты, и значительно позже начали монетизироваться. И это уже больше подходит как вознаграждение за труды которые были приняты для раскрутки платформы и поддержки форума, ведь все темы на форуме в которых просят совета или решают проблему решаются как раз за счет этих самых продавцов модулей (опытных специалистов). На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было. на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения 1 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Скрытый текст при том, что 2.3 цифры приятнее: Скрытый текст Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 5 минут назад, ArtemPitov сказал: @destreser все очень просто, тут люди думают не только за деньги Совершенно верно Думают про экосистему opencart Чтобы он был популярен (а будет популярен - еще больше кстати заработают разработчики) Посмотрите на маркетплейс - да оттуда свалило очень много разработчиков хороших модулей. Их просто достал частичный маразм Даниэля (twig это вообще имхо идиотизм) Посмотрите какая фрагментация opencart сейчас ... не должно такого быть 1 Надіслати Поділитися на інших сайтах More sharing options... destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 (змінено) 4 часа назад, markimax сказал: Думают про экосистему opencart При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Змінено 19 квітня 2017 користувачем destreser 1 Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 33 минуты назад, destreser сказал: При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Раньше все кто сейчас продают модули, развивали и поддерживали систему абсолютно безоплатно, альтруисты, и значительно позже начали монетизироваться. И это уже больше подходит как вознаграждение за труды которые были приняты для раскрутки платформы и поддержки форума, ведь все темы на форуме в которых просят совета или решают проблему решаются как раз за счет этих самых продавцов модулей (опытных специалистов). На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было. на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения 1 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Скрытый текст при том, что 2.3 цифры приятнее: Скрытый текст Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
destreser Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 (змінено) 4 часа назад, markimax сказал: Думают про экосистему opencart При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Змінено 19 квітня 2017 користувачем destreser 1 Надіслати Поділитися на інших сайтах More sharing options...
ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 33 минуты назад, destreser сказал: При всём уважении, это всё красивые слова. Я не хотел бы скатываться к провокационным вопросам, но вот серьезно, вы можете хоть приблизительно назвать скольких людей (в % от этого сообщества) красота кода и архитектуры беспокоит больше, чем потенциальная прибыль? Такие есть, я не спорю, но тут на скорости гиперзвука подлетает второй вопрос - а сколько из них реально коммитит на гх? Тут ведь как получается - если их достаточно много, то почему бы не форкнуть и пилить своё, с блекджеком и без твига? Идей ведь масса, глаза горят, все знают "как правильно". Если же мало - то о каком влиянии на экосистему вообще может идти речь? Ну, я бы мог много написать по этой теме, но я не ставил себе цели кого-то переубеждать, так что воздержусь. Замечу только, что у меня совсем другой взгляд на сабж и даже в использовании шаблонизатора я вижу больше плюсов, чем недостатков. А лично для себя я недостатков не вижу вообще. Раньше все кто сейчас продают модули, развивали и поддерживали систему абсолютно безоплатно, альтруисты, и значительно позже начали монетизироваться. И это уже больше подходит как вознаграждение за труды которые были приняты для раскрутки платформы и поддержки форума, ведь все темы на форуме в которых просят совета или решают проблему решаются как раз за счет этих самых продавцов модулей (опытных специалистов). На счет шаблонизатора, если он создает тормоза, то это явный минус. Да и ничего плохого в tpl для меня лично не было. на счет "бери и пили" так почти все "рукастые" сайтопейсатели уже работают на своих сборках и ставят их клиентам... Идеальной платформы нету, и под каждый проект всегда будут разные решения 1 Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Скрытый текст при том, что 2.3 цифры приятнее: Скрытый текст Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Скрытый текст при том, что 2.3 цифры приятнее: Скрытый текст Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 если посмотреть развитие опенкарта и попытаться осмыслить задачу дениэля то вывод один - *** - Мужик, хоч е*ться? - Хочу! - Прокалывает все шины шилом и говорит: Вот - е*сь! *** )) 2 Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 час назад, RGB сказал: Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да откуда? Основное время отобрал шаблонизатор 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 2 часа назад, RGB сказал: Пока что практически ничего не знаю про twig и с чем его едят, но решил поставить 3.0 и проверить, правда ли изменилась скорость, с которой главная грузится в браузере, получилось вот так: Показать контент при том, что 2.3 цифры приятнее: Показать контент Но учитывая dev-версию тройки, может быть к более-менее стабильному релизу что-то улучшится Да у меня почти такие же печальные результаты Это все "работа" шаблонизатора Я представляю сколько ресурсов уходит на парсинг регулярками twig шаблонов Так что я думаю не стоит ждать и от релиза скорости Лучше переключать в режим php tpl Ох и прогнулся Даниэль перед "спонсорами" - инвесторами 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 А хотите еще "приколоться" с 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Надіслати Поділитися на інших сайтах More sharing options... Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Skunk Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Booz money, как говорил Никсон в Футураме 1 Надіслати Поділитися на інших сайтах More sharing options...
HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 8 минут назад, markimax сказал: После всего "этого" мне кто то может объяснить зачем Даниэль интегрировал twig в opencart ? Мне на ум не приходит ни одного разумного объяснения Может я чего то не понимаю ? Вот честно Так вот же )) Может всеё толпой к нему на форум в тему поддержки 3й версии на тролить всё это дело?)) в гит и т.д. - может остановится пока не поздно.. 1 Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 Для переноса темы из одного проекта в другой, с одой системы в другую 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: Для переноса темы из одного проекта в другой, с одой системы в другую типа портирования? один модуль, шаблон под все движки на свете? один стандарт или я не туда торможу? Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 1 минуту назад, AWARO сказал: один стандарт Условно -да 1 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 короч опенкарт превращается потихоньку в // вот не по теме опенкарт впихнутый в джумлуhttps://miwisoft.com/joomla-extensions/mijoshop-joomla-shopping-cart Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Ну я так и предполагал Видно у кого то из спонсоров - инвесторов их магазины на twig шаблонизаторе и самописном г.. , решили перевести без потерь на opencart Вот Даниэль и прогнулся Но это то понятно. Я другого не пойму - почему эти "тормоза" и [censored] по умолчанию включены в opencart 3 1 Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 19 квітня 2017 Автор Share Опубліковано: 19 квітня 2017 7 минут назад, AWARO сказал: вот не по теме опенкарт впихнутый в джумлу там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же 2 Надіслати Поділитися на інших сайтах More sharing options... HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options... RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
HyperLabTeam Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Только что, chukcha сказал: там-то почти 100% ОС, в смысле ядра Не знаю как там с ЧПУ, но работает же работает, с него и попал сюда на форум но тормозит жутко, джумла + ещё опенкарт через него там бардак вообще... сео это просто название там.. по сути прост коммерческий ход и всё, как Марк заметил этот твиг тоже такой же ход. В общем всё что от начальной версии до 2.3. делалось - примерно то же самое будет и начиная от 3й версии... А потом потомки дениэля и оффлайн магазин запихают в онлайн и обратно))) засунул руку в монитор и взял с полки че надо Надіслати Поділитися на інших сайтах More sharing options...
RGB Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 Посмотрел через профайлер по запросам - в тройке добавились новые типа такого: 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 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Разное Курилка 3.0.0.0 или Что нас ждет
markimax Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 (очищаешь от лишнего) на выходе и тормоз получается ... а здесь их "миллионы" Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Как в рекомендуемых товарах вывести атрибуты? Автор: Kick, 15 березня 2019 opencart 3.0.0.0 0 відповідей 738 переглядів Kick 15 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
ocdev_pro Опубліковано: 19 квітня 2017 Share Опубліковано: 19 квітня 2017 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 Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 3 4 5 6 7 8 Вперед Сторінка 3 з 14 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts