Встроенный модификатор ereplace

C помощью встроенного модификатора «ereplace» в парсере компонента pdoTools не могу привести строки вида assets/pictures/kepek/2015/18_Korrózió.jpg в следующую строку: assets/pictures/kepek/2014/18_Korrózió_w270_h220.jpg, в строках используется уникод.

Выводятся строки без изменений.

проверил
preg_replace("/^(.+)(.+)(\..{3,4})$/ium", "${1}${2}_w270_h220${3}", $input_lines);

на сайте phpliveregex, регулярное выражение срабатывает

Код вывода:
[[pdoResources? &parents=`5` &includeTVList=`Kep`  &hideContainers=`1` &limit=`0`    &showLog=`1`  &fastMode=`1`
            &tpl=`@INLINE {'{{+tv.Kep}}' | ereplace : '/^(.+)(.+)(\..{3,4})$/imu' : '${1}${2}_w270_h220${3}'} </br>`
]]
Подскажите пожалуйста, что делаю не так?
Антон Грошев
31 марта 2016, 09:33
modx.pro
1 645
0

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

Василий Наумкин
31 марта 2016, 12:41
+1
Подскажите пожалуйста, что делаю не так?
Как минимум, смешиваешь 2 вида синтаксиса в чанке без особой причины. А если учесть, что Fenom отрабатывает в первую очередь, то модификатор получает на вход "[[+tv.Kep]]".

Попробуй так:
&tpl=`@INLINE {$_pls['tv.Kep'] | ereplace : '/^(.+)(.+)(\..{3,4})$/imu' : '${1}${2}_w270_h220${3}'} </br>`
    Антон Грошев
    31 марта 2016, 12:55
    0
    Василий, большое спасибо! Заработало!

    Если не сложно подскажите пожалуйста, как сделать, если усложню задачу:

    Строку вида:
    assets/pictures/kepek/2015/18_Korrózió.jpg

    изменить на assets/pictures/kepek/2014/thumbs/20_Töredék_w270_h220.jpg

    т.е. добавить папку thums перед файлом. Голову сломал как это сделать в регулярном выражений одной строкой.
      Антон Грошев
      31 марта 2016, 16:31
      0
      решил следующим образом

      &tpl=`@INLINE {$_pls['tv.Kep'] | ereplace : '/^(.*[\/])(.+)(.+)(\..{3,4})$/imu' : '${1}thumbs/${2}${3}_w270_h220${4}'} </br>`
      помог в этом ресурс regex101
      Антон Грошев
      22 апреля 2018, 22:35
      0
      Василий, подскажи пожалуйста:

      Как заставить fenom прожевать эту инструкцию с регулярным выражением?

      {'pdoPage' | snippet : [ 'includeTVList'=>'Kép', 'parents'=>5, 'tpl'=>'@INLINE  {$_pls["tv.Kép"] | ereplace : "/^(.*[\/])(.+)(.+)(\..{3,4})$/imu" : "${1}thumbs/${2}${3}_thumb_w270_h220${4}" }" ']}
      выводит ошибку

      Unexpected token '${' in expression in modchunk/a186e5edb5a26a35539d3aa180d7eac0 line 8, near '{$_pls[«tv.Kép»] | ereplace: "/^(.*[\/])(.+)(.+)(\..{3,4})$/imu": "${' < — there
        Дмитрий
        23 апреля 2018, 01:48
        0
        Я не Василий, но всё же попробую.
        Нужно сделать чанк не инлайновым, а обычным, и смотреть, что получается. Такая ошибка обычно говорит об ошибке парсинга шаблонизатора, то есть где-то синтаксис некорректный
        Антон Грошев
        25 апреля 2018, 13:09
        0
        не у кого нет решения данной проблемы? выводил в отдельный чанк, та же проблема.
        Антон Грошев
        23 апреля 2018, 11:52
        0
        также перестал работать пакет articles если указан pdotools и включен fenom. (ошибка pdotools.class.php: 977) Unexpected token ':' in 7ff2e169dc058307be33c22826eeb38e line 99, near '{«class_key»:' < — there )

        другие тоже указывают проблемы с новой версией pdotools 2.11.0-pl
          Антон Грошев
          23 апреля 2018, 12:11
          0
          article заработал если заменить в шаблонах новостей строку [[*content]] на {$_modx->resource.content}
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            9