Вот что я имею в моем шаблоне Smarty:
<div class="tbl_pagination"> {if $pager}{$pager->links}{/if} <div>
Мои {$pager->links} этот HTML- {$pager->links} :
<div class="tbl_pagination"> <ul><li><a href="javascript:toPage(3)" title="previous page">Back</a></li> <li><a href="javascript:toPage(1)" title="page 1">1</a></li> <li><a href="javascript:toPage(2)" title="page 2">2</a></li> <li><a href="javascript:toPage(3)" title="page 3">3</a></li> <li class='active'>4</li> <li><a href="javascript:toPage(5)" title="page 5">5</a></li> <li><a href="javascript:toPage(6)" title="page 6">6</a></li> <li><a href="javascript:toPage(7)" title="page 7">7</a></li> <li><a href="javascript:toPage(5)" title="next page">Next</a></li> </ul></div> </div>
Я пытаюсь заменить две разные вещи:
Я хочу завершить удаление атрибута the title .
В зависимости от того, у кого есть класс, необходимо иметь a href .
Вот что мне хотелось бы выглядеть так:
<div class="tbl_pagination"> <ul><li><a href="javascript:toPage(3)">Back</a></li> <li><a href="javascript:toPage(1)">1</a></li> <li><a href="javascript:toPage(2)">2</a></li> <li><a href="javascript:toPage(3)">3</a></li> <li class='active'><a href="#">4</a></li> <li><a href="javascript:toPage(5)">5</a></li> <li><a href="javascript:toPage(6)">6</a></li> <li><a href="javascript:toPage(7)">7</a></li> <li><a href="javascript:toPage(5)">Next</a></li> </ul></div> </div>
Можно ли это сделать в системе шаблонов Smarty с помощью функции замены?
Поскольку вы упомянули в своих комментариях, что вы достигли (2) самостоятельно, вот решение для первой замены, с помощью двух методов:
Вы можете использовать regex_replace :
{$pager->links|regex_replace:'/title="[\w\s]+"/':""}
Кроме того, вы можете напрямую использовать preg_replace php, например:
{'/title="[\w\s]+"/'|preg_replace:'':$pager->links}
Сначала это может показаться странным, но позвольте мне объяснить синтаксис:
Smarty поддерживает передачу переменной / string некоторой функции php с помощью | (трубы). Тем не менее, дополнительные параметры затем передаются с параметром : (двоеточие). Это согласовано для синтаксиса модификаторов переменных
Например, если вы хотите подсчитать буквы в строке, вы должны:
{$pager->links|strlen}
И если вы хотите узнать, находится ли значение foo в массиве $bar вы бы сделали:
{'foo'|in_array:$bar}
так что для php-функции, которая выглядит как func($arg1, $arg2, $arg3) , это означает {$arg1|func:$arg2:$arg3}
Излишне говорить, что предпочтительный метод (1), я предложил только 2-й, потому что, на мой взгляд, интересно знать.