IMG_RESOURCE的绝对路径

时间:2016-09-14 11:57:48

标签: typo3 typoscript

我正在寻找一种方法来获取TypoScript中IMG_RESOURCE对象的绝对路径。由于baseUrl对我来说不是真正的解决方案,只需添加config.baseUrl = example.com并不是我接受的事情。

那么,我怎么能解决这样的问题:

ogimage = FILES
ogimage{
    references {
        table = pages
        uid.data = page:uid
        fieldName = tx_csseo_og_image
    }
    renderObj = IMG_RESOURCE
    renderObj {
        file.import.data = file:current:publicUrl
        file.height < plugin.tx_csseo.social.openGraph.image.height
        file.width < plugin.tx_csseo.social.openGraph.image.width
        # this needs to be generated with an absolute URL
        stdWrap.dataWrap = <meta property="og:image" content="|" />
    }
}

6 个答案:

答案 0 :(得分:5)

我自己找到了解决方案。问题的关键是不要在任何时候设置域名。并且具有从FILES和IMG_RESOURCE对象渲染的绝对URL,以便能够调整图像大小。

ogimage = FILES
ogimage{
    references {
        table = pages
        uid.data = page:uid
        fieldName = tx_csseo_og_image
    }
    renderObj = TEXT
    renderObj {
        typolink{
            parameter.stdWrap{
                cObject = IMG_RESOURCE
                cObject{
                    file.import.data = file:current:uid
                    file.treatIdAsReference = 1
                    file.height < plugin.tx_csseo.social.openGraph.image.height
                    file.width < plugin.tx_csseo.social.openGraph.image.width
                }
            }
            returnLast = url
            forceAbsoluteUrl = 1
        }
        wrap = <meta property="og:image" content="|" />
    }
}

这将通过IMG_RESOURCE生成一个已调整大小的图像,然后通过typolink为此生成的图像生成一个绝对URL,然后将其包装在元标记内。

答案 1 :(得分:1)

你可能需要这样的东西:

ogimage = FILES
ogimage {
   //get the image url from the seo field
  references {
     table = pages
     uid.data = page:uid
     fieldName = tx_csseo_og_image
  }
  renderObj = COA
  renderObj {
    10 = TEXT
    10.data = DB:sys_domain:1:domainName
    10.wrap = |
    20 = TEXT
    20.data = file:current:publicUrl
    20.wrap = /|
  }
}

答案 2 :(得分:1)

更完整的TypoScript-Only示例可能是我的以下示例代码段

它在page.meta内呈现以下元标记,而无需使用page.headerData.

  • og:image
  • og:image:width
  • og:image:height
  • og:image:type

TypoScript设置:

page {
    meta {
        og:image {
            attribute = property
            stdWrap.cObject = FILES
            stdWrap.cObject {
                references {
                    table = pages
                    uid.data = uid
                    fieldName = tx_theme_facebook_image
                }
                begin = 0
                maxItems = 1
                renderObj = TEXT
                renderObj {
                    stdWrap.typolink {
                        parameter.stdWrap {
                            cObject = IMG_RESOURCE
                            cObject {
                                file {
                                    crop.data = file:current:crop
                                    cropVariant = facebook_variant1
                                    import.data = file:current:uid
                                    treatIdAsReference = 1
                                }
                            }
                        }
                        returnLast = url
                        forceAbsoluteUrl = 1
                    }
                    required = 1
                }
            }
        }
        og:image:width {
            attribute = property
            stdWrap.cObject = TEXT
            stdWrap.cObject {
                data = TSFE:lastImgResourceInfo|0
            }
            stdWrap.if.isTrue.field = tx_theme_facebook_image
        }
        og:image:height {
            attribute = property
            stdWrap.cObject = TEXT
            stdWrap.cObject {
                data = TSFE:lastImgResourceInfo|1
            }
            stdWrap.if.isTrue.field = tx_theme_facebook_image
        }
        og:image:type {
            attribute = property
            stdWrap.cObject = TEXT
            stdWrap.cObject {
                data = TSFE:lastImgResourceInfo|2
                stdWrap.wrap = image/|
                required = 1
            }
            stdWrap.if.isTrue.field = tx_theme_facebook_image
        }
    }
}

一些注意事项

此片段仅限于图片FAL关系(IRRE)。必须在字段/列的TCA配置中配置文件扩展名限制(在此示例中为pages.tx_theme_facebook_image)。即使最大项目的数量也必须限制在TCA配置中。

多个og:/ twitter:图像标记

如果你想允许多个og:image标签,也许最好不要使用这样的TypoScript-Only-Solution。原因是og:image:width / og:image:height元标记必须遵循og:image元标记。如果您仍想完成多个og:image代码,最好将page.headerDataFLUIDTEMPLATE结合使用(只要您想使用TypoScript)。

PS:我听说有关在TYPO3 CMS v9 LTS中实施基本搜索引擎优化领域的计划

答案 3 :(得分:0)

我不明白你的问题。你想达到什么目标?

你找到像config.absRefPrefix这样的东西吗?

无论如何你不应该使用

file.import.data = file:current:publicUrl

尝试使用

    file {
        import.data = file:current:uid
        treatIdAsReference = 1
        :

答案 4 :(得分:0)

对我来说,对og:image进行继承的解决方案很重要。 “ tx_myext_ogimage”是表页面中的字段。

10 = IMG_RESOURCE
10 {
    stdWrap.wrap = <meta property="og:image" content="{getIndpEnv:TYPO3_SITE_URL}|" />
    stdWrap.insertData = 1
    stdWrap.required = 1
    file {
        import.data = levelfield:-1, tx_myext_ogimage, slide
        treatIdAsReference = 1
        import.listNum = 0
    }
}

答案 5 :(得分:0)

针对 TYPO3 9.5 或更新版本使用 levelmedia:-1, slide 的解决方案。

Doc TYPO3 SEO 核心扩展

page.meta {  
        og:image.stdWrap.cObject = TEXT
        og:image.stdWrap.cObject {
            if.isFalse.field = og_image
            stdWrap.typolink {
                parameter.stdWrap.cObject = FILES
                parameter.stdWrap.cObject {
                    references {
                        data = levelmedia:-1, slide
                    }
                    renderObj = IMG_RESOURCE
                    renderObj {
                        file {
                            import.data = file:current:publicUrl
                            crop.data = file:current:crop
                            width = 1200c
                            height = 630c
                        }
                    }
                }
                returnLast = url
                forceAbsoluteUrl = 1
            }
        }
    }