TypoScript:当前页面的文本内容

时间:2012-07-28 11:34:17

标签: facebook meta-tags typo3 typoscript

我正在尝试动态地从所显示页面的内容生成Facebook所需的og:description标记。我的想法是,如果没有给出元描述,则使用页面的内容文本。我试过这个剧本:

page.headerData.838 = CONTENT
page.headerData.838 {
  table=tt_content
  select {
    where = (CType = "text")
  }
  renderObj=TEXT
  renderObj{
    field=bodytext
    stdWrap.stripHtml=1
    noTrimWrap =|<meta property="og:description" content="|" />| 
  }
} 

问题是该标签甚至没有出现在页面上。那捕获的是什么?

3 个答案:

答案 0 :(得分:0)

尽量避免使用渲染tt_content元素作为元标记,因为它们是RTE字段可能会很棘手,因此,即使使用stripHtml,也有可能破坏HTML代码。

相反,最好使用Meta > Description Page属性字段来完成此任务,这样更安全。请注意,如果您在页面上使用多个带文字类型的tt_content,您的代码将创建相同数量的<meta />代码。

BTW:你的代码片段非常正确 - 它没有任何问题,也许你在某些页面上有一些缓存问题?

答案 1 :(得分:0)

也许你可以只渲染中间列的内容,剥离HTML并将其包装成og:description?我猜你的描述有最大长度。

page.headerData.838 < styles.content.get
page.headerData.838.stdWrap {
  stripHtml = 1
  crop = 180 | ... | 1
  wrap = <meta property="og:description" content="|" />
} 

(未经测试!)

答案 2 :(得分:0)

试试这个......

默认描述:

page.meta{
  description.field = description
}

默认描述为空时的说明:

page.meta.description.ifEmpty.stdWrap.cObject = CONTENT
page.meta.description.ifEmpty.stdWrap.cObject {
 table= tt_content
 select {              
   selectFields = bodytext
 }
 renderObj =COA
 renderObj {
   10=TEXT
   10 {
     field = bodytext     
     stripHtml=1
     crop = 300 | ... | 1        
   }
 }
}

og:description:

temp.OpenGraphDescription = COA
temp.OpenGraphDescription{
 10=CONTENT
 10.table= tt_content
 10.select {              
   selectFields = bodytext
 }
 10.renderObj =COA
 10.renderObj {
   10=TEXT
   10 {
     field =  bodytext     
     stripHtml=1
     crop = 300 | ... | 1        
   }
 }
 wrap = <meta property="og:description" content="|" />
}
page.headerData.55 < temp.OpenGraphDescription