在TYPO3 8中显示当前页面的类别名称

时间:2018-12-30 14:25:02

标签: typo3 categories typoscript typo3-8.x

我正在尝试在TYPO3 8安装上显示当前页面的类别名称。在TYPO3 7中,它曾经这样工作(请参见下文),但是现在我只收到一个随机错误代码,没有文本输出。有任何想法吗?

lib.catclass = CONTENT
lib.catclass {

wrap = <div class="categories">|</div>

table = sys_category
select {
  pidInList = 35 // UiD of your category_page
  join = sys_category_record_mm ON(sys_category_record_mm.uid_local=sys_category.uid)
  where = sys_category_record_mm.tablenames='pages'
  andWhere.dataWrap = sys_category_record_mm.uid_foreign = {TSFE:id}
}

renderObj = TEXT
renderObj.field = title
renderObj.wrap = <li class="category {field:title}">|</li>
renderObj.insertData = 1

}

相应的错误输出如下:

    An exception occurred while executing 'SELECT * FROM `sys_category` INNER JOIN `sys_category_record_mm`
    `ON(sys_category_record_mm`.`uid_local=sys_category`.`uid)` ON WHERE 
    (`sys_category`.`pid` IN (35)) AND 
    (sys_category_record_mm.tablenames='pages') AND (`sys_category`.`sys_language_uid` IN (0, -1)) AND 
((`sys_category`.`deleted` = 0) AND (`sys_category`.`t3ver_state` <= 0) AND (`sys_category`.`pid` <> -1) AND (`sys_category`.`hidden` = 0) AND (`sys_category`.`starttime` <= 1546204860) AND
 ((`sys_category`.`endtime` = 0) OR (`sys_category`.`endtime` > 1546204860)))': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near '.`uid_local=sys_category`.`uid)` ON WHERE (`sys_category`.`pid` IN (35)) AND (s' at line 1

1 个答案:

答案 0 :(得分:0)

尝试在ON之后添加空格,因此:

join = sys_category_record_mm ON (sys_category_record_mm.uid_local=sys_category.uid)

此外,andWhere从TYPO3 7.1开始已被弃用,并已在8中删除。您需要将其添加到where并使用markers添加页面uid。从我的头顶上可以做到:

lib.catclass = CONTENT
lib.catclass {
  wrap = <div class="categories">|</div>

  table = sys_category
  select {
    pidInList = 35 // UiD of your category_page
    join = sys_category_record_mm ON (sys_category_record_mm.uid_local=sys_category.uid)
    where = sys_category_record_mm.tablenames='pages' AND sys_category_record_mm.uid_foreign = ###pageuid###
    markers {
      pageuid.data = TSFE:id
    }
  }

  renderObj = TEXT
  renderObj.field = title
  renderObj.wrap = <li class="category {field:title}">|</li>
  renderObj.insertData = 1
}

有关markers的更多信息,请参见https://docs.typo3.org/typo3cms/TyposcriptReference/8.7/Functions/Select/#markers