Проблема со спецсимволами &{' в Fenom, ignore не работает

Всем привет.
Использую MODX Revolution 3.0.4, pdotools-3.0.2-pl, migx-3.0.2-beta1.

{set $faqRubric = $_modx->resource.faqRubrics | fromJSON}

{foreach $faqRubrics as $faqRubricItem}

	<h2>{$faqRubricItem.titleRubric}</h2>

	{set $faqRows = $faqRubricItem.faq | fromJSON}

	{foreach:ignore $faqRows as $idx => $row}
		<h3>{$row.q}</h3>
		<p>{$row.a}</p>
	{/foreach}
	
{/foreach}
Не отображает ничего, кроме html-разметки. Если убираю :ignore, то не работает вообще (белая страница и лог ошибки в админке) из-за того, что в {$row.a} находится скопипастенный текст, в котором встречается мусор в разметке типа такого



В связи с этим 2 вопроса:
  1. Как заставить работать ignore во вложенном цикле?
  2. Естьи какой-то способ очистить контент от таких мусорных тегов с помощью sql, console, еще что-то?
Вручную чистить не вариант, т.к. очень много таких страниц, а весь сайт реализован на pdoTools + Fenom.

Буду благодарен за подсказку.
Anton
30 января 2024, 13:26
modx.pro
367
0

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

Артур Шевченко
30 января 2024, 16:55
0
Нужно сделать замену открывающих фигурных скобок на открывающие фигурные скобки с пробелом, а ignore тут вообще не нужен.
    Anton
    30 января 2024, 17:09
    0
    Я не понял. Можно подробнее, пожалуйста?
      Артур Шевченко
      30 января 2024, 17:11
      +1
      из-за того, что в {$row.a} находится скопипастенный текст, в котором встречается мусор в разметке типа такого
      Значит нужно сделать так
      {$row.a | replace: '{' : '{ '}
        Anton
        30 января 2024, 17:55
        0
        Это божественно! Спасибо за подсказку!

        Можно ли как-то предупредить, через плагин, чтобы такой не копипастился в TinyMCE. Чтобы очищал сразу или предупреждение выдавал?
          Артур Шевченко
          30 января 2024, 18:14
          0
          При сохранении ресурса можешь чистить
            Anton
            30 января 2024, 22:14
            0
            Дело в том, что сайт заполняют девочки — научные сотрудницы, они такое не смогут. Вот и думаю как им упростить работу.
            Можно ли как-то их предупреждать, что скопированный текст содержит не допустимые символы?
              Артур Шевченко
              30 января 2024, 23:45
              0
              Ты можешь написать плагин, который при сохранении ресурса получит значения полей и удалит из них всё лишнее. Девочки вообще не будут думать что и как они копируют.
                Anton
                01 февраля 2024, 14:13
                0
                Спасибо. Есть ли пример такого плагина?
                Я не понимаю как он будет удалять? Какой-то регуляркой? Если не трудно, подскажи, пожалуйста.
                  Артур Шевченко
                  01 февраля 2024, 21:41
                  +1
                  Документация, а регулярку придётся самому писать.
                    Anton
                    02 февраля 2024, 10:17
                    0
                    Спасибо. Буду пробовать, preg_replace надо использовать, если правильно пониманию.
                    Единственно, что пока не понимаю: как взять содержимое из TV текущего ресурса, который реализован с помощью MIGX?

                    Понимаю, что «так же, как и у обычного тв». Но если не трудно, то можно помочь с этой строчкой кода?
                      Артур Шевченко
                      02 февраля 2024, 10:25
                      1
                      +1
                      Если на событие OnDocFormSave
                      $migx = $resource->getTVValue('tvname');
                      $migx = json_decode($migx, true);
                      Anton
                      02 февраля 2024, 16:10
                      0
                      Большое спасибо, с этого места уже получится самому!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
12