如何在 Grav CMS 的 Twig 模板中 trim 来自 URL 的协议
How to trim the protocol from a URL in a Twig Template for Grav CMS
我需要使用 Grav CMS 从 twig 模板输出没有协议(http: 或 https:)的 URL。
最好的方法是什么?
Twig 提供了一个不使用正则表达式的MATCH function for comparisons that uses regex, and a REPLACE function。
因此,我似乎坚持做一个复杂的 if 语句,例如:
`
{% if url starts with 'https:' %}
{{ url|replace('https:') }}
{% else %}
{% if url starts with 'http:' %}
{{ url|replace('http:') }}
{% else %}
{{ url }}
{% endif %}
`
有没有更好的方法来完成这项壮举?如果我把这段代码放在一个宏中,我该如何使用这个宏?这是完整的宏:
`
{% macro fixUrl(url) %}
{% if url %}
{% if url starts with 'https:' %}
{{ url|replace('https:') }}
{% else %}
{% if url starts with 'http:' %}
{{ url|replace('http:') }}
{% else %}
{{ url }}
{% endif %}
{% endif %}
{% endif %}
{% endmacro %}
`
我这样调用宏:<meta property="og:url" content="{{ self.fixUrl(page.url()) }}" />
当我调用这个宏时得到一个空字符串。
我发现 Grav CMS 提供了一个 regex_replace 功能。
这是我的解决方案:
<meta property="og:url" content="{{ page.url()|regex_replace('/^https?:/', '') }}" />
我需要使用 Grav CMS 从 twig 模板输出没有协议(http: 或 https:)的 URL。
最好的方法是什么?
Twig 提供了一个不使用正则表达式的MATCH function for comparisons that uses regex, and a REPLACE function。
因此,我似乎坚持做一个复杂的 if 语句,例如:
`
{% if url starts with 'https:' %}
{{ url|replace('https:') }}
{% else %}
{% if url starts with 'http:' %}
{{ url|replace('http:') }}
{% else %}
{{ url }}
{% endif %}
`
有没有更好的方法来完成这项壮举?如果我把这段代码放在一个宏中,我该如何使用这个宏?这是完整的宏:
`
{% macro fixUrl(url) %}
{% if url %}
{% if url starts with 'https:' %}
{{ url|replace('https:') }}
{% else %}
{% if url starts with 'http:' %}
{{ url|replace('http:') }}
{% else %}
{{ url }}
{% endif %}
{% endif %}
{% endif %}
{% endmacro %}
`
我这样调用宏:<meta property="og:url" content="{{ self.fixUrl(page.url()) }}" />
当我调用这个宏时得到一个空字符串。
我发现 Grav CMS 提供了一个 regex_replace 功能。
这是我的解决方案:
<meta property="og:url" content="{{ page.url()|regex_replace('/^https?:/', '') }}" />