TypoScript:通过页面ID获取页面标题

12

任务1. 在TypoScript中,我需要根据给定的页面ID{$my_page_uid}获取页面标题。 任务2. 这个页面标题应该根据当前语言进行获取。

我需要将这个标题以temp.pTitle的形式呈现,以便我可以使用page.10 < temp.pTitle来实现页面效果。


1
只是为了更新一下:这些答案中有哪一个对您有用? - Mateng
如果以下任何一个答案对您有用,请考虑接受它? https://stackoverflow.com/help/someone-answers 接受答案的好处是什么? 它有助于您和其他人:1.其他人将看到您的问题已有被接受的答案,它将不再出现在“未回答”队列中。 2.其他人一眼就能看到至少有一个人的答案可行。 3.您的声誉将增加+2 当然,只有当答案确实对您有用并回答了问题时,您才应该接受答案。 - Sybille Peters
6个回答

18

一开始我以为这很简单,哈哈!但实际上它并不是。这里有一个聪明的解决方案,是我在德语论坛中发现的:

temp.pTitle = HMENU
temp.pTitle {
  special = list
  special.value = {$my_page_uid}
  1 = TMENU
  1 {
    NO {
      doNotLinkIt = 1
    }
  }
}

不知道这是否解决语言部分,但应该可以。


你为什么要将它作为HMENU?是因为语言要求吗? - tmt
3
是的,不然你可以使用 data = DB : pages : {$my_page_uid} : title - Mateng
1
到目前为止,这一直是我首选的解决方案。然而,在 TYPO3 10(或9)中,当您想要获取sysfolder的标题时,它停止工作。将尝试不同的解决方案。 - Alex Kellner
如果您想获取通常在菜单中不可见的页面的页面标题,请确保添加“includeNotInMenu = 1”... :) - Noch_ein_Kamel

15
temp.pTitle = TEXT
temp.pTitle.data = DB:pages:{$my_page_uid}:title

这个在我看来是最精确的解决方案! - mtness
1
@lorenz 我也发现了这个问题,我该如何获取本地化版本? - Peon
为了本地化的解决方案,最好使用Mateng的答案。 - mtness

3
lib.pagetitle = RECORDS
lib.pagetitle {
  source.data = page:uid
tables = pages
conf.pages = TEXT
conf.pages.field = nav_title
}

获取当前页面标题:
lib.pagetitle = TEXT
lib.pagetitle.field=title

谢谢,RECORDS也将在TYPO3 10中使用sysfolder的属性。 - Alex Kellner

0

这里有一个更简单的解决方案...

10 = TYPOLINK
10.parameter = [your_page_id]

当您省略 .value 或 .field 时,它会自动将页面标题作为值。这甚至适用于多种语言。

重要提示:此答案仅适用于2011年,TypoScript自那以后显然已经发生了变化...


stdWrap 中没有 "doNotLinkit" 属性。 - maholtz
没有TYPOLINK cObject。内容对象(cObject) - Mieserfettsack
1
这个回答适用于较旧版本的TYPO3 / TypoScript,并且是在2011年发布的。现在(7年后)它已经不正确了,所以不需要进行负评。 - pdu

0
我制作了这样一个脚本,可以在没有VHS功能的TYPO3 v9上工作:
示例:
<f:cObject typoscriptObjectPath="lib.pageInfo" data="{pageUid: '48', pageField: 'subtitle'}" />

lib.pageInfo = COA  
lib.pageInfo {
    5 = LOAD_REGISTER
    5 {
        ## Set the content's field (default: title):
        pageField.cObject = TEXT
        pageField.cObject {
            field = pageField
            ifEmpty.data = title
        }

        ## Allows to override the current page ID:
        pageUid.cObject = TEXT
        pageUid.cObject {
            field = pageUid
            ifEmpty.data = TSFE:id
        }
    }

    20 = RECORDS
    20 {
        source.data = register:pageUid
        tables = pages
        dontCheckPid = 1
        conf.pages = TEXT
        conf.pages.field.data = register:pageField
    }

    90 = RESTORE_REGISTER }

0

希望这能对你有所帮助

在你的流体模板中

<f:cObject typoscriptObjectPath="lib.pagetitle" data='your page id'/>

在 Typoscript 中

lib.pagetitle = HMENU
lib.pagetitle {
special = list
special.value.current = 1
    1 = TMENU
    1 {
    NO {
        doNotLinkIt = 1
    }
}
}

如果这个方法不起作用,请告诉我,我还有其他的方法!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接