1342
- 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.
=================================================
Вот, уже по мелочам но получается поправить то там то сям))
Можешь почитать и вот эту статейку "Ставим красивые цифровые часы на CSS3 и JQUERY"
Это тоже интересно
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.




