#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>’ …)