扩展 erlydtl

Posted

技术标签:

【中文标题】扩展 erlydtl【英文标题】:Extending erlydtl 【发布时间】:2013-10-28 17:43:36 【问题描述】:

如何扩展“erlydtl”?

我非常喜欢 django 模板,以及模板语言可以扩展的方式。例如,我喜欢“sekizai”之类的扩展名。

可以为 erlydtl 提供自定义标签模块。但是如何添加对更复杂标签的支持,例如 sekizai 提供的?

在 django 中,使用 sekizai 我可以执行以下操作(取自 sekizai 文档)。

% render_block "css" %

并添加以下内容以添加到上面的块中

% addtoblock "css" %
<link href="/media/css/stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
% endaddtoblock %

这会在调用 % render_block % 的地方添加内容。

【问题讨论】:

【参考方案1】:

您需要编写自己的模块并定义被调用的函数并为您的模板标签提供数据。

例子:

文件perc_filter.erl

-module(perc_filter).
-export([percentage/2]).

percentage(Input, Whole) when is_integer(Input), is_integer(Whole) ->
    [Result] = io_lib:format("~.2f", [Input / Whole * 100]),
     Result.

在模板中:

 x|percentage:1000 

【讨论】:

编写标签模块很容易。这里的主要问题是模板标签“addtoblock”应该向已经存在的标签“render_block”添加一些东西。而且我不知道该怎么做。

以上是关于扩展 erlydtl的主要内容,如果未能解决你的问题,请参考以下文章