实际上标题就是整个问题。
我只想修改模板,以便自动显示当前页面标题(我正在使用 html 模板,所以我只需要一些打字稿就可以将页面标题从数据库中取出)
我希望这是可能的
实际上标题就是整个问题。
我只想修改模板,以便自动显示当前页面标题(我正在使用 html 模板,所以我只需要一些打字稿就可以将页面标题从数据库中取出)
我希望这是可能的
这是。这很简单。我假设你正在使用 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 参考(又名“ TSRef”)包含所有详细信息 - 查找“getText”以获得风味,这是使 TypoScript 模板中的“page : title”调用放在页面标题中的函数。
TSRef 是你的朋友。我在我的办公桌上放了一份印刷版——如果你想让 TYPO3 唱歌,那是你的歌本。
我更喜欢 vhs 解决方案:
{v:page.info(field:'title')}
https://fluidtypo3.org/viewhelpers/vhs/master/Page/InfoViewHelper.html
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
对于元数据:
当我们浏览移动兼容网站时,将元数据放在标题标签之后非常重要
为了防止 IE9 中的 quirks 模式,我需要在每个 HTML 页面的最顶部添加以下行:
您可以自己编写整个标题,通过将disableAllHeaderCode = 1添加到您的打字稿,或者您可以通过将元标记直接添加到 head 标记来破解它:
page.headTag = <head><meta http-equiv="X-UA-Compatible" content="IE=edge" />
把它放在你的打字稿上
meta.X-UA-Compatible = IE=edge,chrome=1
httpEquivalent:(从 TYPO3 4.7 开始)如果设置为 1,则在元标记中使用 http-equiv 属性而不是“名称”属性。默认值:0。
有关 TYPO3 的更多信息,您可以访问我的博客
https://jainishsenjaliya.wordpress.com/2013/10/10/put-meta-tag-on-top-of-header-section-in-typo3/
如果你想在流体页面模板中使用它,你也可以简单地使用:
{data.title}
访问页面标题。
您可以通过以下打字稿当前页面标题:
lib.pagetitle = TEXT
lib.pagetitle.data = page : title
然后使用typoscriptObjectPath 将此对象用于您的页面,如下所示:
<f:cObject typoscriptObjectPath="lib.pagetitle"/>
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想要用这些行呈现打字稿的地方
<f:cObject typoscriptObjectPath='lib.page_title' />
我希望这有帮助 !!!
如果您想使用fluid
唯一的解决方案,请安装VHS
扩展程序,您可以在不使用任何此类的情况下输出页面标题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)}
这个问题已经很老了,但我仍然想在这里添加一些我从未读过的东西。
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
...
}
下面仍然 alib.pagetitle
比仅使用标题或副标题要多一些 - 如果在页面上使用扩展名,它会使用 news-title:
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
}
}
}
现在还有一些背景,为什么我认为某些单独的标题可能不是最好的解决方案:
在我看来,在自己的模板中再次手动实现整个逻辑是没有用的,我认为应该只对特殊页面类型(如 AJAX 或动态 PDF 文件)禁用标题。这是我认为该选项有用的主要原因。
她仍然是有关 TypoScript(锚页面标题)中 -options 的最新文档的当前链接: httpsconfig
://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Config/Index.html#pagetitle