Как сохранить в списке только первый абзац $product.description_short?

#regex #prestashop #smarty #prestashop-1.6

#регулярное выражение #prestashop #умный #prestashop-1.6

Вопрос:

Я хочу сохранить только первый абзац описания продукта в категориях.

Пример: <p>This is a pretty good description.</p><p>The rest of the description, even if it's cool to I don't want it.</p>

Для : <p>This is a pretty good description.</p>

Это код по умолчанию в product-list.tpl Prestashop (1.6):

 <p class="product-desc" itemprop="description">
   {$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
</p>
  

Это то, что я пробовал код по умолчанию в product-list.tpl Prestashop (1.6):

 <p class="product-desc" itemprop="description">
   {assign var $newdescription = $product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}
   {preg_replace('(?<=</p>)s <p>.*','',$newdescription)}
</p>
  

Ответ №1:

 {$_shorten = explode('</p>', $product.description_short)}
// with valid html tags
{$_shorten.0|cat:'</p>'}
// or if you want to strip tags:
{$_shorten.0|strip_tags}
  

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

1. Привет @r_a_f Я попробовал 2 способа, описанных выше. Последний хорошо отображает все <p>, но я не могу сохранить только первый :/

2. так что ваш html, вероятно, более сложный (пустые пробелы и т.д.) — попробуйте обновленный код (explode(‘</p>’ …)