TYPO3 разделил другую оболочку для первой строки с помощью optionSplit

#typo3 #typoscript #typo3-7.6.x

#typo3 #typoscript #typo3-7.6.x

Вопрос:

Я получаю текст из абстрактного поля и разбиваю его на новую строку. Я хочу, чтобы первая строка была заключена в тег H5, а все последующие строки — в теги P.

Это то, что я пробовал:

 tt_content.menu.20.102 = HMENU
tt_content.menu.20.102 {
  1 = TMENU
  1 {
    NO = 1
    NO {
      doNotLinkIt = 1
      stdWrap.cObject = COA
      stdWrap.cObject {

        50 = TEXT
        50.stdWrap {
          field = abstract
          split {
            token.char = 10
            cObjNum = 1 || 2
            1.current = 1
            1.wrap = <h5>|</h5>
            2.current = 1
            2.wrap = <p>|</p>
          }
        }

      }
    }
  }
}
  

Но он переносит все строки в H5… Как мне заставить это работать?

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

1. ваш код отлично работает для меня; Я использую TYPO3 9.5.4 — попробую с 7.6.x как МОЖНО СКОРЕЕ

2. @RiccardoDeContardi На случай, если это что-то изменит, я добавил часть текста из окружающего меню typoscript для контекста…

3. Я не понимаю, почему это происходит, но кажется, что разделение выполняется для всей группы всех абстрактных полей. Я объясняю: если у вас в меню есть две страницы, ОДНА из которых содержит abstract =aa;bb (я использую; в качестве разделяемого токена), а ДВЕ — abstract =cc; dd , то в результате aa, bb будут обернуты <h5> , а cc, dd — <p> .

4. @RiccardoDeContardi Ты прав. Я этого не заметил, потому что тестировал только с 1 страницей. У вас есть какие-либо предложения? или, возможно, альтернативный способ сделать то же самое?

5. Я не знаю, та ли это проблема; Я мог бы предложить вам присоединиться к Slack, где вы могли бы найти некоторую помощь на канале typo3-cms (ссылка: my.typo3.org/index.php?id=35 )

Ответ №1:

Я нашел отчет об ошибке, в котором упоминается эта проблема здесь:https://forge.typo3.org/issues/59533

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

 10 = TEXT
10.field = abstract
10.wrap = <h5>|</h5>
10.listNum = 0
10.listNum.splitChar = 10

20 < .10
20.wrap = <p>|</p>
20.listNum = 1

30 < .20
30.listNum = 2
  

Ответ №2:

Просто комбинация обоих, исходного кода и обходного пути listNum, должна выполнить эту работу. Все еще нужно найти способ перенести оставшуюся часть первого «разделения» во вторую. Поэтому, пожалуйста, считайте этот ответ WIP. Мы все еще обсуждаем это с нашими программистами.Проверьте канал Twitch на станции технического обслуживания TYPO3.

 10 = TEXT
10.field = abstract
10.wrap = <h5>|</h5>
10.listNum = 0
10.listNum.splitChar = 10

20 < .10
20.listNum = 1
20.split {
    token.char = 10
    cObjNum = 1
    1.current = 1
    1.wrap = <p>|</p>
}
  

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

1. Возможно ли использовать replace, чтобы превратить первый символ новой строки в специальный символ, а затем использовать listNum для этого специального символа? (Также 1 очки — это круто)