Как обрезать протокол из URL-адреса в шаблоне Twig для Grav CMS

Мне нужно вывести URL-адрес без протокола (http: или https:) из шаблона ветки с использованием Grav CMS.

Как лучше всего это сделать?

Twig предоставляет функцию MATCH для сравнения, которая использует регулярное выражение, и REPLACE, которая не использует регулярное выражение.

Поэтому кажется, что я застрял с выполнением запутанного оператора 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()) }}" />

Я получаю пустую строку, когда я вызываю этот макрос.


person Jeff Wilkerson    schedule 22.06.2017    source источник


Ответы (1)


Я обнаружил, что Grav CMS предоставляет функцию regex_replace.

Вот мое решение: <meta property="og:url" content="{{ page.url()|regex_replace('/^https?:/', '') }}" />

person Jeff Wilkerson    schedule 22.06.2017