Использование кастомных макросов в XSLT — различия между версиями
Материал из Umicms
| VITL' (обсуждение | вклад)  (Новая страница: «Представим ситуацию, когда в XSL-шаблоне, мы получили два значения, $x и $y, с которыми необход…») | Mad grant (обсуждение | вклад)  | ||
| (не показана 1 промежуточная версия 1 участника) | |||
| Строка 30: | Строка 30: | ||
| при $x = 219, $y = 2. | при $x = 219, $y = 2. | ||
| + | [[Категория:Написание кастомных макросов]][[Категория:Верстка в XSLT]] | ||
Текущая версия на 20:07, 4 июня 2013
Представим ситуацию, когда в 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.
