
1121
- 0
- Адаптировал: ИИ GPT
- Уровень сложности исполнения: Справочник
Всем привет, давно не писал ни чего, вот залез в чат gpt и решил побаловаться, но нашлось довольно интересное решение коротких записей кода для изображений в короткой и полной новости. Правда GPT тупил по страшному выдавал код больших размеров чем это требовалось, но я добился чего хотел.
И так в дефолтном шаблоне в короткой новости news.short есть выражение для вывода изображений из тела новости и оно довольно массивное
Код:
{% if (news.embed.imgCount > 0) %}
<img src="{{ news.embed.images[0] }}" width="315" height="161"/>
{% else %}
<img src="{{ tpl_url }}/img/img-none.png" width="315" height="161"/>
{% endif %}
Код:
<img src="{% if (news.embed.imgCount > 0) %}
{{ news.embed.images[0] }}{% else %}{{ tpl_url }}/img/img-none.png{% endif %}" width="315" height="161"/>
Код:
<img src="{{ (news.embed.imgCount > 0 and news.embed.images[0] is defined) ? news.embed.images[0] : tpl_url ~ '/img/img-none.png' }}" width="315" height="161"/>
Ну с этим все понятно , просто меня давно интересовал вариант использования изображений из дополнительных полей и тела новости, а также чтобы выводилась изображение заглушка . Итого три условия что они из себя представляют , первое
Код:
{% if (p.xfields.poster.count < 1) %}
{{ tpl_url }}/images/no_image.jpg
{% else %}
{{ p.xfields.poster.entries[0].purl }}
{% endif %}
Второе условие
Код:
{% if (news.embed.imgCount > 0) %}
{{ news.embed.images[0] }}
{% else %}
{{ tpl_url }}/images/no_image.jpg
{% endif %}
Код:
{% if p.xfields.poster.count > 0 and p.xfields.poster.entries[0].purl is defined %}
{{ p.xfields.poster.entries[0].purl }}
{% elseif news.embed.imgCount > 0 and news.embed.images[0] is defined %}
{{ news.embed.images[0] }}
{% else %}
{{ tpl_url }}/images/no_image.jpg
{% endif %}
Код:
{{ p.xfields.poster.count > 0 and p.xfields.poster.entries[0].purl is defined ? p.xfields.poster.entries[0].purl :
(news.embed.imgCount > 0 and news.embed.images[0] is defined ? news.embed.images[0] : tpl_url ~ '/images/no_image.jpg') }}
Код:
{{ p.xfields.poster.count > 0 and p.xfields.poster.entries[0].purl ?? (news.embed.imgCount > 0 and news.embed.images[0] ?? tpl_url ~ '/images/no_image.jpg') }}
Давайте разберёмся, почему это выражение не работает, и как его можно исправить.
Проблема:
В Twig оператор ?? (null-coalescing) имеет более высокий приоритет , чем логические операторы (and, or). Это означает, что в вашем выражении:
Код:
{{ p.xfields.poster.count > 0 and p.xfields.poster.entries[0].purl ?? (news.embed.imgCount > 0 and news.embed.images[0] ?? tpl_url ~ '/images/no_image.jpg') }}
Вот исправленный рабочий вариант:
Код:
{% set poster = p.xfields.poster.entries[0].purl ?? null %} {% set embedImage = news.embed.images[0] ?? null %} {{ poster ?: (embedImage ?: tpl_url ~ '/img/img-none.png') }}
Вот сокращенный рабочий вариант
Код:
{{ (p.xfields.poster.entries[0].purl ?? null)
?: (news.embed.images[0] ?? null)
?: tpl_url ~ '/images/no_image.jpg' }}
1. /images/no_image.jpg - ваш путь до картинки заглушки
2. poster - ваше дополнительное поле для изображений
3. p.xfields.poster.entries[0].purl выводит ссылку на превью( уменьшенное изображение ) если вы в админке не задали уменьшенное изображение то оно не будет отображено,будет выведена заглушка, если надо вывести ссылку на основное изображение то меняем purl на url.
=================================================
Вот, уже по мелочам но получается поправить то там то сям))
Можешь почитать и вот эту статейку "Хак- Свой счетчик на сайт"
Это тоже интересно
- 11.06.18Выводим ссылку на картинку
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.