#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 очки — это круто)