[pdoTools] 2.10.1 - исправление кэширования скриптов и стилей

Давненько я не писал про обновления pdoTools, ведь там не происходило ничего примечательного — обычная работа над некритичными ошибками и улучшения функционала.

Но сегодняшняя версия стоит отдельного объявления, ведь в ней наконец-то исправлена работа кэширования скриптов и стилей! За отличное расследование и исправление благодарим Сергея Шлокова, а я немного расскажу, как эта ошибка вообще появилась.

Дело в том, что изначально в ранних версиях pdoTools вызывать сниппеты можно было только одним методом — $_modx->runSnippet() и он напрямую вызывал метод modX::runSnippet().
Вызовы Fenom работают уже после того, как MODX парсит кэшированные тэги, поэтому все скрипты и стили, зарегистрированные через Fenom, не попадали в кэш ресурса. Чтобы исправить это, я запихивал в этот кэш вручную всё что было, после каждого запуска Fenom.

Это было крайне неудачным решением, но другого на тот момент я придумать не смог. Так что, с добавлением еще пары костылей оно более менее работало.

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

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

Другие изменения


Еще некоторые изменения:

— Улучшено регулярное выражение для определения синтаксиса Fenom. Теперь ситуаций, когда в чанке один просто тег и парсер не считает его достойным обработки, должно стать гораздо меньше. А ложных срабатываний, надеюсь, не прибавится.

— Пока проверял работу кэширования скриптов и стилей, заметил баг в pdoPage. Если ему указать &cache=`1`, то он перестаёт регистрировать канонические url со второй загрузки. Исправлено.

— Сами канонические url теперь всегда прописываются полным адресом вместе с доменом, независимо от настроек, как то советует Google.

— А pdoMenu теперь должен уметь использовать &conditionalTpls для чанка по умолчанию. Не знаю, насколько это полезно при наличии Fenom, но просили добавить.

— Еще добавили новую системную настройку pdotools_fenom_save_on_errors, которая сохраняет шаблоны при ошибках компиляции в core/cache/pdotools/error/, чтобы вам удобнее было их дебажить.

Остальные изменения можно посмотреть на GitHub.

Новая версия уже в репозиториях, можно обновляться!
Василий Наумкин
22 октября 2017, 10:25
modx.pro
7 849
+17

Комментарии: 79

websfera
22 октября 2017, 13:34
0
при обновлении зависание страницы и ошибка 500, сайт и админка в ауте
здесь подробнее описал modx.pro/help/13592/
    Семён Кудрявцев
    22 октября 2017, 13:35
    0
    Классное и долгожданное обновление! А что за инструмент для тестирования регулярок на скрине изображен?
    Jury
    22 октября 2017, 14:43
    0
    Молодцы, теперь работа сайтов будет более стабильная
      nuraksha
      22 октября 2017, 15:22
      0
      Добрый день!
      Установил pdoTools.
      Теперь выходит ошибка на сайте — HTTP ERROR 500.
      В логах сервера показывает ошибку —
      Backend fatal error: PHP Fatal error: Cannot use [] for reading in /var/www/vhosts/site.ru/httpdocs/core/components/pdotools/model/pdotools/pdotools.class.php on line 373\n
      Версия PHP — 5.4.16
      Сергей Шлоков
      22 октября 2017, 16:50
      0
      Отличная новость! Теперь можно вернуться к стандартному default.js в Tickets.

      А на этот сайт обновление пока не ставил? Барахлит.
        Василий Наумкин
        22 октября 2017, 17:08
        0
        Первым делом поставил.

        Что именно барахлит?
          Сергей Шлоков
          22 октября 2017, 17:15
          0

          Похоже, что скрипты в кэше остаются. Возникает ошибка, что TicketsConfig.editor не определен.
            Василий Наумкин
            22 октября 2017, 18:17
            0
            Я ни разу не словил, но на всякий случай поудалял кэш еще пару раз.

            Возможно, это уже какой-то другой глюк именно на modx.pro
              Сергей Шлоков
              23 октября 2017, 09:30
              0
              Попробуй зайти гостем на главную.
                Василий Наумкин
                23 октября 2017, 10:41
                0
                Очень смешной баг новой версии. Это происходит внутри pdoPage
                $output = $pdoPage->pdoTools->runSnippet($scriptProperties['element'], $scriptProperties);

                и получаем добавление скриптов и стилей в modX::resource->_loadedjscripts с последующим сохранением их в кэш.
                  Сергей Шлоков
                  23 октября 2017, 10:54
                  0
                  Я так понимаю, что похожая ситуация будет и с другими сниппетами pdoTools (mFilter и др. с параметром element)
                    Василий Наумкин
                    23 октября 2017, 11:39
                    +1
                    Конечно! Выложил исправление.
                    $output = $pdoPage->pdoTools->runSnippet('!' . ltrim($scriptProperties['element'], '!'), $scriptProperties);
        mngatoff
        22 октября 2017, 17:12
        0
        правильно я понимаю, что теперь можно кэшированный минификс пользовать?
        Igor Ivanov
        23 октября 2017, 09:04
        0
        Василий, спасибо огромное! Исчезли дубли каноникалов, про которые писали здесь modx.pro/help/12465/#comment-89059. Еще бы научится заставлять pdoPage делать каноникал в нижнем регистре, почему-то когда в файле snippet.pdopage.php делаю
        $canurl = mb_strtolower($canurl);
        перед
        $modx->regClientStartupHTMLBlock('<link rel="canonical" href="' . $canurl . '"/>');
        это никакого влияния не оказывает. Как можно принудительно привести канонический url к нижнему регистру?
          Василий Наумкин
          23 октября 2017, 09:16
          +1
          Тут нужно подумать, с какого перепуга у тебя вообще url не в нижнем регистре. Проблема явно не в pdoPage.
            Igor Ivanov
            23 октября 2017, 09:25
            0
            Нет конечно, проблема не в нем, какой url в адресной строке, такой он и использует. Просто если самому написать урл с большой буквы, то такой же каноникал и вставится в страницу. У меня из-за дублирования каноникала возникли проблемы с индексированием, описывал здесь modx.pro/help/12465/#comment-89059
            И хотя теперь, после обновления pdoTools дублей быть не должно, в качестве превентивной меры хочу сделать принудительное приведение url к нижнему регистру, но не получается. Вот я и спрашиваю совета, как такое лучше сделать?
              mngatoff
              25 октября 2017, 01:58
              1
              +1
              пользуйтесь на здоровье
              case 'OnHandleRequest':
                      // Приведение к нижнему регистру
                      $request = $_REQUEST;
                      $url = $request['q'];
                      if (!empty($url)) {
                          unset($_GET['q']);
                          $params = http_build_query($_GET);
                          if (strlen($params)) {
                              $params = '?' . $params;
                          }
                          if (preg_match('/[A-Z]/', $url)) {
                              $modx->sendRedirect(strtolower($url).$params);
                          }
                      }
                      break;
          Сергей Шлоков
          23 октября 2017, 18:06
          +1
          Кстати, ещё одно нововведение осталось незамеченным, которое появилось в версии 2.9.3 — возможность сохранять код в кэше в случае ошибки компиляции Fenom. Только сегодня выловил у себя ещё одну. Когда страниц много — хрен поймёшь где она. А щас открыл кэш и посмотрел. Мне кажется, было бы неплохо в статье это отменить.
          Sergey Leleko
          24 октября 2017, 06:41
          0
          Не знаю, у одного меня или нет. Но после обновления до последней pl2 версии. Рабочий сайт стал содержать в логах много ошибок:
          [2017-10-24 08:33:17] (ERROR @ /var/www/data/www/poster/core/components/pdotools/model/pdotools/pdotools.class.php : 974) Unexpected tag 'id' in 7e3b12d6e990bd3d8307caca45f688c7 line 1, near '{id' <- there

          Визуально причем вроде как все работает. Как выяснить на какое именно место ругается?
          Кеш чистил…
            Igor Ivanov
            24 октября 2017, 07:09
            +1
            — Еще добавили новую системную настройку pdotools_fenom_save_on_errors, которая сохраняет шаблоны при ошибках компиляции в core/cache/pdotools/error/, чтобы вам удобнее было их дебажить.
            Володя
            24 октября 2017, 08:21
            0
            Заметил что зачем то обрабатываются настройки медиасорс. Возможно на них ругань.
            Стали обрабатываться с изменением
            Улучшено регулярное выражение для определения синтаксиса Fenom
            Вопрос — а нафига они вообще обабатываются? причем в админке.
              Sergey Leleko
              24 октября 2017, 08:57
              0
              Согласен, ниже написал, что это породило у меня проблему.
                Сергей Шлоков
                24 октября 2017, 09:35
                0
                Есть системная настройка pdotools_fenom_syntax, в которой можно указать свою регулярку.
              Sergey Leleko
              24 октября 2017, 08:53
              0
              del
                Sergey Leleko
                24 октября 2017, 08:56
                0
                Оказалось что ругань идет на
                [[migxResourceMediaPath? &pathTpl=`assets/MediaGallery/{id}/` &createFolder=`1`]]
                . Это динамический источник файлов для Migx галереи. Можно ли гдето добавить в исключение эту конструкцию?
                {id}
                .

                причем как выше Володя писал, это pdoTools выдергивает из источника файлов. Если бы он не трогал источник файлов, то все бы было нормально
                  Сергей Шлоков
                  24 октября 2017, 09:29
                  0
                  Убери закрывающую фигурную скобку из регулярки.
                    Василий Наумкин
                    24 октября 2017, 10:02
                    0
                    Да, парсер в MODX проходит даже по настройкам источника файлов, чтобы парсить вот такие конструкции.

                    Попробуй ради интереса переписать это на Fenom
                    {'migxResourceMediaPath' | snippet : ['pathTpl' => 'assets/MediaGallery/{id}/', 'createFolder' => 1]}
                    вдруг сработает?
                      Володя
                      24 октября 2017, 10:49
                      0
                      Понятно что сработает. Но это не выход.
                      Предполагается что все настройки медиасорс должны быть корректны для fenom.
                      И если это не так — идти их исправлять. Не всегда это вариант.
                      Как вариант решения этого можно ввести настройку ограничивающую обработку контекста в github.com/bezumkin/pdoTools/blob/master/core/components/pdotools/model/pdotools/pdoparser.class.php#L43
                      если такой вариант приемлим — я могу сделать pr.
                      Спасибо!
                        Василий Наумкин
                        24 октября 2017, 10:59
                        +1
                        Предполагается что все настройки медиасорс должны быть корректны для fenom
                        Они обычно и так корректны, просто автор MIGX, зачем-то, использует фигурные скобки вместо квадратных, как в MODX принято.

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

                        Как вариант решения этого можно ввести настройку ограничивающую обработку контекста
                        Ну а если кто специально хочет использовать именно Fenom в настройках источника — им как быть?

                        В общем, посмотрим количество отзывов об этой проблеме.
                          Володя
                          24 октября 2017, 11:17
                          0
                          Ну а если кто специально хочет использовать именно Fenom в настройках источника — им как быть?
                          разрешить обработку fenom в контексте mgr
                          то есть в данном случае речь идет именно о настройке что отключала бы fenom в админке.
                            Василий Наумкин
                            24 октября 2017, 11:38
                            0
                            Ну ок, в админке оно обрабатываться не будет, допустим. А на фронтенде разве настройки источника файлов не парсятся?

                            Если хоть один сниппет MIGX грузит этот источник и делает ему initialize() — будут ровно те же записи в логах, и всё равно придётся что-то менять: или регулярку синтаксиса, или настройки источника.

                            Я просто с MIGX не знаком, поясните, пожалуйста.
                              Володя
                              24 октября 2017, 12:52
                              0
                              А на фронтенде разве настройки источника файлов не парсятся?
                              в каком месте они там парсятся?
                              Если хоть один сниппет MIGX грузит этот источник и делает ему initialize() — будут ровно те же записи в логах, и всё равно придётся что-то менять: или регулярку синтаксиса, или настройки источника.
                              согласен.
                              Я просто с MIGX не знаком, поясните, пожалуйста.
                              я сам им не пользуюсь.

                              Я вообще конкретно MIGX в данном случае не касаюсь. Есть конкретная ситуация касаемо обработки настроек в админке парсером fenom и я лишь сказал о том что неплохо ввести ограничение на это и все.

                              Что с этим делать решать тебе.
                                Василий Наумкин
                                24 октября 2017, 13:38
                                +2
                                Что с этим делать решать тебе.
                                Ограничить не сложно, но хотелось бы понять — есть ли смысл.

                                Пока, наверное, просто уберу из регулярки такие {теги}, потому что не могу придумать, где они используются в самом Fenom.
                                  Володя
                                  24 октября 2017, 14:56
                                  0
                                  Да, текущую проблему это решает.
                                  Спасибо!
                                    Семён Кудрявцев
                                    24 октября 2017, 20:10
                                    0
                                    По-моему такой вариант как в — 2.10.1-pl3 является оптимальным,
                                    Fenom перестал детектить случаи когда фигурные скобки использовались в input-ах в атрибуте pattern — например
                                    <input type="tel" pattern="8[0-9]{3}-[0-9]{3}">
                                    а также в скриптах на странице, где встречаются конструкции с пустыми фигурными скобками:
                                    function(){}
                                    //или
                                    catch(err){}
                                    И при этом остаётся возможность расширять Fenom своими тегами, хоть и приходится вызывать их если они без параметров с пробелом
                                    {googlemap}//так тег не работает
                                    {googlemap }//так без проблем
                                    А на счёт работы Fenom в админке, Володин вариант сделать настройку для тех кому это очень надо, по-моему неплохая идея.
                                    Просто если привыкаешь к Fenom, то уже само собой напрашивается его использование везде и повсюду и, порой, даже забываешь о местах где он не должен работать.
                                    Сегодня обновил пакет на более чем 10 сайтах, полёт нормальный. Будем наблюдать дальше.
                                      Сергей Шлоков
                                      24 октября 2017, 20:26
                                      1
                                      +1
                                      А на счёт работы Fenom в админке, Володин вариант сделать настройку для тех кому это очень надо, по-моему неплохая идея.
                                      Тем кому уж очень нужно могут создать плагин и отключить Fenom в админке
                                      // Событие OnHandleRequest
                                      if ($modx->context->key == 'mgr') $modx->getParser()->pdoTools->config['useFenom'] = false;
                                        Семён Кудрявцев
                                        24 октября 2017, 21:05
                                        0
                                        Ну вот, тоже отличное решение. Просто я бы до него не догадался бы никогда) Поэтому создание настройки мне показалось как удачное решение, требующее менее высокого порога владения MODX
                                    mngatoff
                                    25 октября 2017, 02:05
                                    0
                                    а если у меня весь сайт построен на тегах {mobile}{/mobile} и {desktop}{/desktop}, которые плагином добавляются, не обновляться теперь что ли? весь сайт покрашится?
                                    по-моему проблема с источниками файлов такого не стоит вообще. Если человек включает феном на весь сайт, пофиксить пути в источнике должно быть его ответственностью, как ты и говорил
                                    upd. кстати, ниже всплыл пример использования таких тегов в самом феноме — {ignore}{/ignore}. Крайне нужная штука порой.
                                      Сергей Шлоков
                                      25 октября 2017, 08:34
                                      +1
                                      2 варианта
                                      1. Указать свою регулярку в системной настройке pdotools_fenom_syntax.
                                      2. Добавить пробел после тега.
                                        mngatoff
                                        25 октября 2017, 12:43
                                        0
                                        по-моему это неправильно — это нативная работа феном вообще-то, почему ее нужно накостыливать? получается, Бруно ( который Мигас написал) как обычно без оглядки на всех делает по-своему, а мы из-за него убираем каноническую опцию из феном? Уж что-что, а ignore точно должен быть из коробки
                                        Сергей Шлоков
                                        25 октября 2017, 13:38
                                        0
                                        по-моему это неправильно — это нативная работа феном вообще-то, почему ее нужно накостыливать?
                                        Потому что выше люди писали, что нативная работа, это когда можно указывать такие конструкции без боязни ошибки
                                        <input pattern="\+7\s\(\d{3}\)\s\d{3}-\d{2}-\d{2}"/>
                                        Так что с какой стороны посмотреть.

                                        Уж что-что, а ignore точно должен быть из коробки
                                        В фреймворках он работает без проблем. И если бы ты прочитал мою статью про тег ignore, ссылку на которую давали ниже, то ты бы понял, что Fenom не может работать нативно в MODX. Василий его более менее натянул, но специфика MODX ломает идеальную логику работы Fenom. И поэтому иногда возникают проблемы с выводом конструкции {тег}.

                                        Если не понятно почему в фреймворках работает, а в MODX нет, могу объяснить поподробнее.
                                        Василий Наумкин
                                        25 октября 2017, 13:39
                                        +2
                                        В версии 2.10.1-pl3 всё работает как надо и ничего не ломается.
                                        Сергей Шлоков
                                        26 октября 2017, 13:39
                                        +3
                                        Уж что-что, а ignore точно должен быть из коробки
                                        Добавил PR, который учитывает специфику парсинга MODX. Он решает проблему с ignore — где он бы не был указан (в шаблоне, ресурсе или чанке), он будет работать как от него и ожидается.
                                        mngatoff
                                        26 октября 2017, 18:00
                                        0
                                        ты вот кстати пишешь, что игнор не работает, я замечал это в ранних версиях pdotools с fenom, не уже несколько месяцев как он прекрасно отрабатывал везде где нужно)
                                        Сергей Шлоков
                                        26 октября 2017, 19:57
                                        +2
                                        Ты меня раскусил. Все кто писал про проблему с ignore (даже в комментариях к этому посту) — на самом деле это всё я писал.

                                        Видимо ты так и не нашел 5 минут, чтобы прочитать мою статью.
                                        Как сейчас модно писать TL;DR — пример из неё, чтобы не читать. Версия pdoTools тут, как видишь, не причем.
                                        mngatoff
                                        26 октября 2017, 21:31
                                        0
                                        больше желчи :) я тут никого не подлавливаю, я про случаи когда надо заэкранить какой-нибудь js или css. В первых версиях игнор не справлялся с этим, потом стал работать. Что касается паттернов — тут я не спорю, но так как ими не пользуюсь никогда в связи с избирательной поддержкой браузерами этой фичи, то и не сталкивался с таким — ни подтвердить, ни опровергнуть не мог бы всё равно. Никакого подстёба в моих словах нет, только наблюдение на тему.
                                        Сергей Шлоков
                                        27 октября 2017, 07:06
                                        1
                                        +1
                                        Не хотел отвечать — думал ты стебаешься. А сейчас думаю, ты скорее всего до конца не вник. Не имеет значения, что ты укажешь — паттерн или стили или еще чего с фигурными скобками. ignore не работает из-за специфики парсинга MODX. Попробуй добавить в примере выше (доступ я давал) в секцию HEAD следующий код
                                        {ignore}<style>body {color: red}</style>{/ignore}
                                        Fenom выдаст ошибку компиляции.
                        Sergey Leleko
                        24 октября 2017, 12:21
                        0
                        Спасибо, помогло решить эту проблему!
                        Но иногда стала всплывать старая ошибка кеширования, правда крайне редко
                      Юрий
                      24 октября 2017, 10:08
                      0
                      Здравствуйте! Подскажите пожалуйста, в чем может быть проблема, не работает Fenom если:
                      1. На сайт добавлены в хед критические стили CSS (для оптимизации скорости)
                      2. Стоит добавить на сайт код гугл тег менеджер или аналитику и все ломается(
                      Вот что получается prntscr.com/h18wxu и prntscr.com/h18x4k, системные настройки prntscr.com/h18x9x
                      И так на нескольких сайтах, PDO последней версии
                        Евгений Webinmd
                        24 октября 2017, 10:16
                        0
                        попробуйте поместить стили и скрипты в тег {ignore}… {/ignore}
                          Юрий
                          24 октября 2017, 10:25
                          0
                          спасибо, попробую. А с аналитикой и тег менеджером как быть, тоже можно так поместить попробовать (это не повлияет на работу гугл аналитики)?
                            Евгений Webinmd
                            24 октября 2017, 10:26
                            0
                            можно, ни на что не влияет
                              Юрий
                              24 октября 2017, 11:52
                              0
                              спасибо большое помогло. Но возник такой момент теперь, на страничках, где не использовался феном, теперь вылазит на сайте prntscr.com/h1a6ex и соответственно не работает аналитика (сервис показывает ошибку)
                              Дмитрий Суворов
                              24 октября 2017, 10:30
                              0
                              нет, это влияет только на то, что fenom не будет обрабатывать содержимое тега ignore.
                              А он ругается на фигурные скобки. Если ignore не поможет, то просто поставьте в этих местах после открывающих { пробел
                                Юрий
                                24 октября 2017, 11:55
                                0
                                спасибо). Пробовал ранее { пробел для критических CSS, но у меня там было скобок 100-200, я и бросил эту затею (только сейчас вспомнил что можно было автозаменой сделать))). Но возник такой момент теперь, на страничках, где не использовался феном, теперь вылазит на сайте ignore prntscr.com/h1a6ex и соответственно не работает аналитика (сервис показывает ошибку)
                                    Юрий
                                    24 октября 2017, 12:09
                                    0
                                    Спасибо)
                                    Там написано «Самый просто вариант — указать в шаблоне кэшируемый тег [[*content]]» — у меня в шаблоне так и есть, но теги всеравно вылазят prntscr.com/h1aenk
                                      Дмитрий Суворов
                                      24 октября 2017, 12:11
                                      0
                                      там ключевая фраза это:

                                      В общем идея должна быть понятна — тег {ignore} должен присутствовать в итерации, после которой больше не будет тегов Fenom.
                                    Василий Столейков
                                    27 октября 2017, 11:41
                                    1
                                    0
                                    пробел для критических CSS, но у меня там было скобок 100-200, я и бросил эту затею
                                    Делается это просто — устанавливаешь modDevTools, в поиске этого компонента вбиваешь открывающую скобку "{" и в поле замены скобку с пробелом "{ ". Заменяешь все совпадения оптом. Всего эти действия занимают минуту от силы.
                                    Всегда это делаю перед тем как включить Fenom на страницах.
                            Dekr
                            24 октября 2017, 11:41
                            1
                            +1
                            По поводу migxResourceMediaPath

                            Вот такая запись у меня не заработала:
                            {'migxResourceMediaPath' | snippet : ['pathTpl' => 'assets/MediaGallery/{id}/', 'createFolder' => 1]}
                            Рабочая:
                            {$_modx->runSnippet('migxResourceMediaPath', ['pathTpl' => '/images/gallery/{id}{alias}/', 'createFolder' => 1])}
                            Вдруг кому еще пригодиться.
                              Sergey Leleko
                              24 октября 2017, 12:22
                              0
                              Выше Василий, еще более изящный вариант предложил. Но и ваш и его вариант работает! Спасибо
                              Sergey Leleko
                              24 октября 2017, 12:31
                              0
                              Есть один момент не понятный:
                              Вот такой вызов
                              {'!pdoResources' | snippet : [
                                                                        'tpl' => '@INLINE
                                                                                    <!-- item -->
                                                          							<div class="col-md-2 col-sm-4 item">
                                                          								<a href="{$uri}" class="">
                                                          									{$pagetitle}
                                                          								</a>
                                                          								<div class="crest"></div>
                                                          								<div class="crest2"></div>
                                                          							</div>',
                                                          				'showLog' => 1
                                                                        ]}
                              отладка
                              0.0002561: pdoTools loaded
                              0.0000691: xPDO query object created
                              0.0006971: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties`
                              0.0012379: Processed additional conditions
                              0.0017569: Added where condition: modResource.parent:IN(3,4,5,6,7,8,9,10,11,12,13,14,15), modResource.published=1, modResource.deleted=0
                              0.0001769: Sorted by modResource.publishedon, DESC
                              0.0000069: Limited to 10, offset 0
                              0.0004539: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `pmodx_site_content` AS `modResource` WHERE  ( `modResource`.`parent` IN (3,4,5,6,7,8,9,10,11,12,13,14,15) AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 )  ORDER BY modResource.publishedon DESC LIMIT 10 "
                              0.0008991: SQL executed
                              0.0001900: Total rows: 12
                              0.0002332: Rows fetched
                              0.0008690: Created inline "modChunk" with name "376a2e035e8b1e047dd42b7dca5e9d30"
                              0.0037138: Compiled Fenom chunk with name "modchunk/376a2e035e8b1e047dd42b7dca5e9d30"
                              0.0051739: Returning processed chunks
                              0.0106580: Total time
                              11 796 480: Memory usage
                              из 12 ресурсов выводится только 10. Настройки публикации в всех в состоянии опубликовано, и показывать в меню.
                              В чем может быть дело?
                              По отладки вижу лимит 10 стоит, но я его не ставил

                              Дописал 'limit' => 0, но не помню чтобы по умолчанию раньше был лимит в 10
                                Василий Наумкин
                                24 октября 2017, 13:38
                                +1
                                но не помню чтобы по умолчанию раньше был лимит в 10
                                А он всегда был, хоть ты и не помнишь.
                                  Sergey Leleko
                                  24 октября 2017, 14:03
                                  0
                                  К psoResources в доке так как ты говоришь написано, по умолчанию limit 10, а вот docs.modx.pro/components/pdotools/general-settings тут говорится в общих параметрах по умолчанию limit 0. Вот меня и сбило это столку. Ок понял спасибо
                                mngatoff
                                27 октября 2017, 23:44
                                0
                                Василий, у меня небольшая просьба! не мог бы ты добавить поддержку файлов .fm для файловых элементов?
                                Чтобы в phpstorm не привязывать синтаксис fenom к файлам .tpl, а оставить их для smarty, как и было
                                  Семён Кудрявцев
                                  28 октября 2017, 10:04
                                  0
                                  Интересно, зачем? Может Вы нашли или написали плагин для подсветки синтаксиса Fenom в PHPStorm? Тогда, очень прошу поделитесь.
                                  Если же нет, то какой смысл? Оба шаблонизатора близки по синтаксису и со smarty хотя бы какая-то подсветка есть в IDE
                                    Igor Ivanov
                                    28 октября 2017, 10:38
                                    0
                                    Ну вот, например, в sublime text есть поддержка Fenom, было бы удобно иметь возможность привязать синтаксис Fenom к .fm
                                      mngatoff
                                      29 октября 2017, 03:20
                                      0
                                      github.com/klkvsk/fenom-phpstorm-plugin вот плагин, он старенький и работает только подсветка, и немного глючный, но всё лучше чем ничего. Василий как-то предлагал подвсетку для смарти, но в этом случае всё в ошибках — всё-таки различия существенные. В этом плагине как раз синтаксис автоматически привязывается к файлам .fm
                                        Василий Наумкин
                                        29 октября 2017, 10:22
                                        0
                                        В этом плагине ошибок гораздо больше.

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

                                        Всего одно подчеркивание. Попробуй ради интереса подсветить такой код тем древним плагином.
                                          mngatoff
                                          29 октября 2017, 15:39
                                          0
                                          fenom — 0 ошибок
                                          smarty — 3 ошибки.



                                          Помимо extended он еще тильду не признает и выражения с вопросительным знаком, типа {if $a?} или {$a ?: $b}

                                          Не спорю, сам плагин смарти гораздо лучше. Жаль что нормального под феном нет, постоянная краснота напрягает немного)

                                          так что, смилостивишься добавить .fm? )
                                            Василий Наумкин
                                            29 октября 2017, 15:54
                                            0

                                            Слева Smarty, справа Fenom.

                                            Второй, похоже, просто вообще не умеет детектить ошибки синтаксиса — вот их и нет. Что бы ты не писал — ему всё в порядке:


                                            Я могу, конечно, добавить в pdoTools хоть какие расширения, но пусть хоть 5 человек об этом попросит. А то прям работа под заказ получается — никому не нужно, кроме тебя.
                                              mngatoff
                                              29 октября 2017, 16:00
                                              0
                                              ну… справедливо, наверное
                                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                    79