如何将当前页面标题自动插入TYPO3模板?

时间:2009-08-13 18:17:13

标签: typo3 typoscript

实际上标题是整个问题。

我只想修改模板,以便自动显示当前页面标题(我正在使用html模板,所以我只需要一些typoscript来获取数据库中的页面标题)

我希望这是可能的

8 个答案:

答案 0 :(得分:30)

是的。这很简单。我假设你正在使用TemplaVoilà,因为如果你不是,你应该是:-D

首先在模板中放入一些带有虚拟页面标题的HTML。给它一个ID属性,这样很容易映射。像:

<h1 id="page-title">Page Title Here</h1>

接下来,进入TemplaVoilà并将<h1>元素映射到内容类型“TypoScript Object Path”。当它提示你输入对象路径时,你可以输入任何你想要的东西 - 约定是动态内容被添加到“lib”命名空间中,所以我们称之为lib.pagetitle。当它询问您是否要将其映射到“INNER”或“OUTER”时,选择“INNER” - 这意味着您只是在<h1>...</h1>标签之间映射空间。 (“OUTER”表示您正在替换整个元素,包括我们不想要的标记,因为我们希望它保持H1。)保存模板映射。

现在进入您网站的TypoScript模板。在这里,您将插入填充我们刚刚用实际内容映射的空间的逻辑。插入页面标题只需要几行TypoScript:

lib.pagetitle = TEXT
lib.pagetitle.data = page : title

这说的是“占用我映射到lib.pagetitle的模板中的空间。在TEXT类型的空间中创建一个内容对象。然后用页面标题填充该内容对象。“

保存TypoScript模板。现在你已经完成了!

乍一看这听起来可能很复杂,但是这个系统的好处在于它非常灵活。动态插入文本只是一个开始。 TypoScript Reference(又名“TSRef”)具有所有细节 - 查找“getText”以获得一种风味,这是使你的TypoScript模板中的“page:title”调用放在页面标题中的功能

TSRef是你的朋友。我在桌子上保留了一份打印件 - 如果你想让TYPO3唱歌,那就是你的歌集。

答案 1 :(得分:4)

我更喜欢vhs解决方案:

{v:page.info(field:'title')}

https://fluidtypo3.org/viewhelpers/vhs/master/Page/InfoViewHelper.html

答案 2 :(得分:3)

您可以通过以下标记来获取当前页面标题:

lib.pagetitle = TEXT
lib.pagetitle.data = page : title

然后使用typoscriptObjectPath将此对象用于您的页面,如下所示:

<f:cObject typoscriptObjectPath="lib.pagetitle"/>

答案 3 :(得分:3)

[['a', 1], ['b', 2]]

获取当前页面标题:

{a: 1, b: 2}

对于元数据:

当我们通过移动兼容网站

时,在标题标记后放置元非常重要

为了防止IE9中的怪癖模式,我需要在每个HTML页面的最顶部添加这些行:

您可以自行编写整个标题,方法是将 disableAllHeaderCode = 1 添加到您的typoscript中,或者您可以通过将元标记直接添加到head标记来破解它:

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

将其放在你的typoscript

lib.pagetitle = TEXT
lib.pagetitle.field=title

httpEquivalent :(自TYPO3 4.7起)如果设置为1,则在元标记中使用http-equiv属性而不是“name”属性。默认值:0。

有关TYPO3内容的更多信息,请访问我的博客

https://jainishsenjaliya.wordpress.com/2013/10/10/put-meta-tag-on-top-of-header-section-in-typo3/

答案 4 :(得分:2)

如果您想使用仅fluid解决方案,请安装VHS扩展程序,您可以output the page title完全不使用任何TypoScript这样的内容:

标签示例:

<v:page.header.title title="NULL" whitespaceString="' '" setIndexedDocTitle="1">
  <!-- tag content - may be ignored! -->
</v:page.header.title>

内联示例:

{v:page.header.title(title: 'NULL', whitespaceString: '' '', setIndexedDocTitle: 1)}

答案 5 :(得分:1)

lib.page_title = CONTENT
lib.page_title {

    table = pages

    select {
        where = uid = 2
    }

    renderObj = COA
    renderObj {

        10 = TEXT
        10 {
            field = title
            wrap = <h1 class="page_title">|</h1>
        }

        20 = TEXT
        20 {
            field = subtitle
            stdWrap.required = 1
            stdWrap.wrap = <h5>|</h5>
        }
    }
}

调用 lib.page_title ,想要用这一行呈现typoscript

<f:cObject typoscriptObjectPath='lib.page_title' />

我希望这会有所帮助!!!

答案 6 :(得分:1)

如果要在流动页面模板中使用它,您还可以使用{data. title}来访问页面标题。

答案 7 :(得分:0)

这个问题已经很老了,但我仍然想补充一些我从未在这里读过的东西。

TYPO3提供了许多与标头有关的内容,很可能还可以使其完全独立。但是,每种解决方案都或多或少地禁用了TYPO3的所有不错的选择。

因此,首先直接回答以下问题:
默认页面标题可以这样覆盖

config.pageTitle.stdWrap.override.cObject < lib.pagetitle

如果定义了几种页面类型,并且每种类型的标题都应单独设置,则可以在页面定义内注明配置:

page = PAGE
page {
    typeNum = 0
    config.pageTitle.stdWrap.override.cObject < lib.pagetitle_1
    ...
}

anotherPage = PAGE
anotherPage {
    typeNum = 1
    config.pageTitle.stdWrap.override.cObject < lib.pagetitle_2
    ...
}

下面还有一个lib.pagetitle,它比仅使用标题或字幕要多一点-如果在页面上使用扩展名,它将使用新闻标题:

lib.pagetitle = COA
lib.pagetitle {

  10 = TEXT
  10 {
    // subtitle: used as field for title tag
    value.field = subtitle // title
    if.isFalse.data = GP:tx_news_pi1|news
  }

  20 = RECORDS
  20 {
        if.isTrue.data = GP:tx_news_pi1|news
        dontCheckPid = 1
        tables = tx_news_domain_model_news
        source.data = GP:tx_news_pi1|news
        source.intval = 1
        conf.tx_news_domain_model_news = TEXT
        conf.tx_news_domain_model_news {
            field = title
            htmlSpecialChars = 1
        }
    }
 }

现在仍然有些背景,为什么我认为某些单独的标头可能不是最佳解决方案:

  • TYPO3通常会在标头中添加一些细节,这些细节很有用,并且不需要将这些东西单独组合在一起。
  • 脚本和样式表经过组织,甚至可以通过TypoScript压缩和合并。如果遵循某些语法,甚至还要小心,只将jquery之类的库包含一次。
  • TYPO3在TypoScript中具有许多功能,可以定义与标头相关的所有内容,还可以确定脚本是否应该永远不包含在标头中,而应该根本不包含在页头中。 li>
  • 可以定义元标记(并由扩展名或子模板覆盖)

我认为在自己的模板中手动重新实现整个逻辑是没有用的,我认为应该仅对特殊页面类型(例如AJAX或动态PDF文件)禁用标头。这是我认为该选项有用的主要原因。

对于TypoScript中的config-选项(锚页面标题),最新文档仍为当前链接: https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Config/Index.html#pagetitle