Вывод картинки в OpenGraph с использованием MIGX

Добрых уток времени всем. Пытаюсь настроить красивый вид ссылок на сайт в мессенджарах.
Возникла проблема с передачей картинки. У меня на сайте есть несколько типов страниц. На одном из них использую MIGX для создания tv-поля с картинкой новости. На всех остальных этого tv-поля нет вообще.
В head прописал такой код:
<meta property="og:image" content="[[++site_url]][[getImageList?
           &tvname=`image`
           &tpl=`openGraph_Img`
           &limit=`1`
           &docid=`[[*id]]`
         ]]">
В темплейте `openGraph_Img` лежит просто
[[+image]]
Такая конструкция работает на страницах, у которых есть tv-шка с картинкой статьи.
Вопрос: как добавить проверку на отсутсвие tv-шки с картинкой и указанием дефолтной картинки в этом случае?
Пробовал в темплейте `openGraph_Img` указать проверку
[[+image:isnot=``:then=`[[+image]]`:else=`images/defaultPic.jpg`]]
но так не работает (если я правильно понимаю это потому что на других страницах такого TV просто нет, соответственно проверка не начинается).
Lem
Lem
01 сентября 2020, 13:38
modx.pro
801
0

Комментарии: 9

Denis
01 сентября 2020, 14:34
0
[[+image:ne=``:then=`[[+image]]`:else=``]]
    Lem
    Lem
    01 сентября 2020, 20:02
    0
    Такой вариант так же не даёт эфекта. Дефолтная картинка не показывается на страницах, где нет TV-картинки новости.
      Александр Мельник
      01 сентября 2020, 21:47
      0
      Вам принципиален этот синтаксис шаблонизатора? [[]]
      У стандартного шаблонизатора modx довольно часто наблюдаются проблемы с написанием условий.
      При этом на fenom ваша проблема решилась бы в одну строку.
      {set $image = $_modx->resource.image? $_modx->resource.image: «images/defaultPic.jpg» }
        Lem
        Lem
        01 сентября 2020, 22:57
        0
        Совсем не принципиален.
        Я пробовал fenom, но что-то не понимаю как им пользоваться. В настройках MODX включил «использовать Fenom на страницах». В чанк с темплейтом «openGraph_Img» подставил Вашу строку и страницы, у которых к новости есть картинка перестали загружаться. Не идёт формирование html-разметки. При этом другие страницы продолжают нормально работать.
          Артем
          02 сентября 2020, 02:08
          0
          В чанк с темплейтом «openGraph_Img» подставил Вашу строку и страницы, у которых к новости есть картинка перестали загружаться.
          Ты всего скорее скопировал с неверными кавычками — тут они заменяются на «елочки», а такое в Fenom не сработает.

          Если уж ты решил перейти на Fenom, то имеет смысл переписать эту конструкцию целиком. Сверху в head пишешь:
          {set $data = $_modx->resource.image | fromJSON}
          а затем просто
          {set $image = $data ? $data[0].image : 'images/defaultPic.jpg'}
          <meta property="og:image" content="{'site_url' | option}{$image}">
          И никаких дополнительных openGraph_Img не нужно.

          MIGX TV — это не более чем простой JSON, поэтому в Fenom с ним можно работать без всяких getImageList.
          Ты можешь распечатать $data на странице и посмотреть, что там внутри:
          {$data | print}
            Lem
            Lem
            02 сентября 2020, 10:42
            0
            Переписал. Главная страница перестала загружаться :) Тупо белый лист без какого-либо кода. При этом все остальные страницы загружаются.
            {$data | print}
            Тоже ломает главную страницу ¯\_(ツ)_/¯
              Артем
              02 сентября 2020, 13:19
              0
              Что в логах?
                Александр Мельник
                03 сентября 2020, 11:33
                0
                Возможно у вас не установлен pdoTools
                Если установлен, то возможно в системных настройках указан не тот парсер. Проверьте что в системной настройка parser_class, там должно быть указано pdoParser
                Если так и есть, то возможно у вас не указано в системных настройках — использовать феном на страницах, ключ pdotools_fenom_parser
              Александр Мельник
              02 сентября 2020, 06:09
              0
              Ну копировать строку не нужно было, это был лишь пример того, что на феноме проще. У вас судя по коду используется не просто ТВ для хранения изображения а migx. Так что там нужно будет еще использовать модификатор |fromJSON и брать первый элемент.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        9