在template_from_string函数中使用树枝过滤器

时间:2020-10-20 10:31:25

标签: twig octobercms octobercms-plugins twig-extension twig-filter

我正在使用 Rainlab Translate Vojta Svoboda Twig Extensions 插件使用October CMS创建一个多语言网站。 我正在使用树枝函数template_from_string在一个模板文件中创建一个链接按钮。

一切正常。 如果我在link属性中使用|media过滤器,以获取媒体文件的url。 但是,如果我使用|page过滤器来获取页面网址,则会收到未知“页面”过滤器的错误消息。

<!-- It works: -->
<div>
    {% set btn = {
        'link': 'foobar.jpg',
        'label': 'Where is FooBar »'
    } %}
    {{ include(template_from_string('<a class="btn btn-promo btn-white move" href="{{ btn.link|media }}" role="button">{{ btn.label }}</a>')) }}
</div>


<!-- It does not work: -->
<div>
    {% set btn = {
        'link': 'foobar',
        'label': 'Where is FooBar »'
    } %}
    {{ include(template_from_string('<a class="btn btn-promo btn-white move" href="{{ btn.link|page }}" role="button">{{ btn.label }}</a>')) }}
</div>

我一直在解决这个问题,我的问题是:如何使两个过滤器都能工作? 预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我认为您正在忽略东西:)

您可以这样使用

import numpy


def convolve_circularly(a1, a2):
    return numpy.round(numpy.abs(numpy.fft.ifft(numpy.fft.fft(a1) * numpy.fft.fft(a2))))


def min_sum_abs_diff(a1, a2):
    a1 = numpy.array(a1)
    a2 = numpy.array(a2)[::-1]
    return numpy.min(convolve_circularly(a1, 1 - a2) + convolve_circularly(1 - a1, a2))


def slow_min_sum_abs_diff(a1, a2):
    return min(
        sum(abs(a1[i] - a2[i - k]) for i in range(len(a1))) for k in range(len(a2))
    )


def main():
    n = 100
    for r in range(100000):
        a1 = numpy.random.randint(2, size=n)
        a2 = numpy.random.randint(2, size=n)
        r = min_sum_abs_diff(a1, a2)
        slow_r = slow_min_sum_abs_diff(a1, a2)
        if r != slow_r:
            print(a1, a2, r, slow_r)
            break


if __name__ == "__main__":
    main()

您可以使用uint32_t InsertBits(uint32_t input, uint8_t idx, uint8_t bits, uint8_t width) { uint32_t mask = ((1UL << width) - 1) << idx; input &= ~mask; input |= bits << idx; return input; } 并直接通过<div> {% set btn = { 'link': 'fooba'|page, <-- HERE 'label': 'Where is FooBar »' } %} {{ include(template_from_string('<a class="btn btn-promo btn-white move" href="{{ btn.link }}" role="button">{{ btn.label }}</a>')) }} </div> 。您无需在filter on main scope

中使用过滤器

如有疑问,请发表评论。