Как получить первое изображение в tt_content для meta og: image - PullRequest
0 голосов
/ 22 сентября 2019

Я пытаюсь получить первое существующее изображение в tt_content для использования в Open Graph (og: image), если в tt_content есть изображения.

page.headerData {
    1 = COA
    1 {
        10 = FILES
        10 {
            references {
                table = tt_content
                uid.field = uid
                fieldName = image
            }
            renderObj = TEXT
            renderObj {
                typolink {
                    parameter.data = file:current:publicUrl
                    forceAbsoluteUrl = 1
                    returnLast = url
                }
                wrap = |,
            }
            stdWrap {
                listNum = 0
                # Use logo image if none is available
                ifEmpty.cObject = TEXT
                ifEmpty.cObject.typolink {
                    parameter = typo3conf/ext/my_ext/Resources/Public/Images/logo.png
                    forceAbsoluteUrl = 1
                    returnLast = url
                }
                wrap = <meta property="og:image" content="|">
            }
        }
    }
}

Приведенный выше код возвращает только запасной вариант (логотип).Отлично подходит для страниц и tt_content без изображений, но я ожидаю отличаться от страниц с изображениями в tt_content.

Ответы [ 2 ]

2 голосов
/ 22 сентября 2019

Я сообщаю здесь хороший фрагмент, найденный на https://docs.typo3.org/m/typo3/docs-snippets/master/en-us/2014/Index.html#add-facebook-open-graph-og-image-metatags-for-content-elements-with-typo3-6-0-and-fal

Я немного упростил его;надеюсь, что это не слишком упрощено, но должно работать:

page.headerData.200 = CONTENT
page.headerData.200 {
  table = tt_content
  select {
    where = {#colPos}=0
    selectFields = uid
  }
  renderObj = FILES
  renderObj {
    references {
      table = tt_content
      uid.field = uid
      fieldName = image
    }
    maxItems = 1
    renderObj = TEXT
    renderObj {
      data = file:current:publicUrl
      stdWrap {
        wrap = <meta name="og:image" content="|" >
      }
    }
  }   
}
0 голосов
/ 23 сентября 2019

Вот фрагмент @ Риккардо-де-Контарди с запасным вариантом

page.headerData.1569221029 = CONTENT
page.headerData.1569221029 {
    table = tt_content
    select {
        where = {#colPos}=0
        selectFields = uid
    }
    renderObj = FILES
    renderObj {
        references {
            table = tt_content
            uid.field = uid
            fieldName = image
        }
        maxItems = 1
        renderObj = TEXT
        renderObj {
            data = file:current:publicUrl
            stdWrap {
                wrap = |,
            }
        }
    }
    stdWrap {
        listNum = 0
        # Use logo image if none is available
        ifEmpty.cObject = TEXT
        ifEmpty.cObject.typolink {
            parameter = typo3conf/ext/my_ext/Resources/Public/Images/logo.png
            forceAbsoluteUrl = 1
            returnLast = url
        }
        wrap = <meta property="og:image" content="|">
    }
}
...