if и заявление возможно в html файлах Jekyll

Я хочу создать оператор if/and в своем коде, чтобы предложить 3 разных варианта ссылки.

Я пробовал код if/else, и он работает. Наличие двух операторов if (один с оператором «И») не будет работать, поскольку в ошибке указано, что после первого оператора «если» должен быть закрывающий оператор. Я также пытался использовать «elseif» и «else if» во втором утверждении, но безуспешно. Есть ли способ сделать это, что я не нахожу?

<li class="{% if page.body_class == 'language' %}active{% endif %} hidden-md hidden-lg">
                {% if page.alternate_mx == null %}
                  <a href="/mx/" title="En Español">Español</a>
                {% if page.alternate_mx == null and page.translate_mx %}
                  <a href="/mx/{{page.translate_mx}}" title="En Español">Español</a>
                {% else %}
                  <a href="{{ site.url }}{{site.baseurl}}{{page.alternate_mx}}" title="En Español">Español</a>
                {% endif %}
   </li>
  • Если page.alternate_mx отсутствует, то должна появиться первая ссылка.
  • НО, если page.alternate_mx отсутствует И есть page.translate_mx, используйте вторую ссылку.
  • Если есть page.alternate_mx используйте третью ссылку.

Я получаю эту ошибку: «Liquid Exception: синтаксическая ошибка Liquid (строка 144): тег if никогда не закрывался в /usr/src/app/_includes/header/header-en.html, включенный в /_layouts/default. html web_1  |              Ошибка: синтаксическая ошибка Liquid (строка 144): тег if никогда не закрывался web_1  | ...error: web_1  |              Ошибка: для получения дополнительной информации запустите jekyll build --trace."


person user973542    schedule 26.06.2019    source источник


Ответы (2)


Это не работает, потому что у вас есть if if else endif, первый блок if не закрыт. Если elsif у вас не работает, вы можете попробовать изменить операторы следующим образом:

<li class="{% if page.body_class == 'language' %}active{% endif %} hidden-md hidden-lg">
        {% if page.alternate_mx == null %}
            {% if page.translate_mx %}
                <a href="/mx/{{page.translate_mx}}" title="En Español">Español</a>
            {% else %}
                <a href="/mx/" title="En Español">Español</a>
            {% endif %}
        {% else %}
          <a href="{{ site.url }}{{site.baseurl}}{{page.alternate_mx}}" title="En Español">Español</a>
        {% endif %}
</li>

Также вам, вероятно, следует использовать && вместо and, потому что они имеют разный приоритет.

<li class="{% if page.body_class == 'language' %}active{% endif %} hidden-md hidden-lg">
                {% if page.alternate_mx == null %}
                  <a href="/mx/" title="En Español">Español</a>
                {% elsif page.alternate_mx == null && page.translate_mx %}
                  <a href="/mx/{{page.translate_mx}}" title="En Español">Español</a>
                {% else %}
                  <a href="{{ site.url }}{{site.baseurl}}{{page.alternate_mx}}" title="En Español">Español</a>
                {% endif %}
   </li>
person Mikhail Antonov    schedule 26.06.2019

Я закончил тем, что использовал это, и это сработало отлично.

<li class="{% if page.body_class == 'language' %}active{% endif %} hidden-md hidden-lg">

{% if page.translate_mx %}
          <a href="{{page.translate_mx}}" title="En Español">Español</a>
    {% elsif page.alternate_mx == null %}
           <a href="/mx/" title="En Español">Español</a>
    {% else %}
          <a href="{{page.alternate_mx}}" title="En Español">Español</a>
 {% endif %}

</li>```
person user973542    schedule 26.06.2019