Вот что я имею в моем шаблоне 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-й, потому что, на мой взгляд, интересно знать.