Использование кастомных макросов в XSLT
Материал из Umicms
Представим ситуацию, когда в XSL-шаблоне, мы получили два значения, $x и $y, с которыми необходимо произвести некоторые математические действия. Для выполнения данной задачи можно воспользоваться кастомным макросом, в котором средствами php мы выполним необходимые действия и вернем результат обратно в XSL-шаблон.
В файл classes/modules/custom.php, после слов //TODO: Write your own macroses here, добавим метод:
public function hypotenuse($x, $y){
if(!$x || !$y) return "";
$g = sqrt($x*$x + $y*$y);
$value = number_format($g, 2, '.', '');
return $value;
}
В XSL-шаблоне пропишем следующий вызов:
Гипотенуза = <xsl:value-of select="document(concat('udata://custom/hypotenuse/', $x, '/',$y))/udata" /> см.
Результат работы макроса hypotenuse:
<udata module="custom" method="hypotenuse" generation-time="0.001038">219.01</udata>
В итоге, получим примерно следующий результат:
Гипотенуза = 219.01 см.
при $x = 219, $y = 2.