Есть такое регулярное выражение
//div[@class=”entry”]/p[1]
С его помощью выбирается текст выделенный первыми тегами <p></p>
А как выбрать не весь текст, а только до каких то слов или точки. Например до слов “Об этом”
Если возможно, то еще бы выполнить условие по количеству знаков.
Для этого есть несколько вариантов, заранее считаем что получено краткое содержание по указанному вами xpath правилу:
//div[@class="entry"]/p[1]
Используем модификатор truncate чтобы обрезать и так как в описании могут содержаться теги и обрезка будет не корректно то еще применим strip_tags и strip
{$description|strip_tags|strip|truncate:150}
Это следует указывать во вкладке шаблон -> шаблон краткого описания.
Если нужно брать до слов “Об этом” то также в шаблонах
{$description|ereplace:'/(.+?)Об этом.+?/isu','${1}'}
Или совместить все вместе:
{$description|strip_tags|strip|ereplace:'/(.+?)Об этом.+?/isu','${1}'|truncate:150}
Не сработал ни один вариант:
{$description|ereplace:’/(.+?)Об этом.+?/isu’,’${1}’} – поле краткого описания без записи
{$description|strip_tags|strip|ereplace:’/(.+?)Об этом.+?/isu’,’${1}’|truncate:150} – импорт вообще отказался работать.
Заработал только такой вариант:
{$content|strip_tags|strip|truncate:150} – ошибка была в применении переменой $description вместо $content, но он обрезает не корректно, надо было до точки но не более 150 символов.
Остальные варианты к сожалению не работают
Спасибо, очень наглядно.
Я пока обхожусь html/css селекторами, но чувствую что регулярки изучать придётся.
vikontответил 23 минуты назад
Не сработал ни один вариант:
{$description|ereplace:’/(.+?)Об этом.+?/isu’,’${1}’} – поле краткого описания без записи
{$description|strip_tags|strip|ereplace:’/(.+?)Об этом.+?/isu’,’${1}’|truncate:150} – импорт вообще отказался работать.
Заработал только такой вариант:
{$content|strip_tags|strip|truncate:150} – ошибка была в применении переменой $description вместо $content, но он обрезает не корректно, надо было до точки но не более 150 символов.
Остальные варианты к сожалению не работают
Так, вы меня совсем запутали.
Это
//div[@class="entry"]/p[1]
не регулярное выражение а xpath правило
и я думал что вы имеете ввиду что поставили это правило для выборки анонса материала во вкладке материал на странице настройки правил, в таком случае все что я писал выше нормально срабатывает
а у вас она по ходу стоит во вкладке шаблон для удаления первого параграфа
тут с регулярками нужно быть осторожным чтобы в итоге не повредить html код основного текста, не оставить там какой то не закрытый тег что может привести к тому что на странице материала слетит дизайн сайта и во всех регулярках учитывать html элементы
Возможно есть путаница, но вы сами написали, что
”
{$description|strip_tags|strip|truncate:150}
Это следует указывать во вкладке шаблон -> шаблон краткого описания.
Если нужно брать до слов “Об этом” то также в шаблонах
{$description|ereplace:'/(.+?)Об этом.+?/isu','${1}'}
Или совместить все вместе:
{$description|strip_tags|strip|ereplace:'/(.+?)Об этом.+?/isu','${1}'|trunca " Вот я и разместил в шаблонах.
Please login or Register to submit your answer