完全控制TYPO3的HTML输出

时间:2014-12-08 12:27:02

标签: html angularjs templates typo3

我在TYPO3中设置一个使用AngularJS的网站。要在正文上获得正确的CSS类,我需要编辑<body>标记。我还希望完全控制模板中的HTML输出。

我目前的尝试是使用从后端配置的模板:

page = PAGE
page.10 = TEMPLATE
page.10.template = FILE
page.10.template.file = fileadmin/Template/index.html

这将输出以下HTML:

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="utf-8">
<!-- 
    This website is powered by TYPO3 - inspiring people to share!
    TYPO3 is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.
    TYPO3 is copyright 1998-2014 of Kasper Skaarhoj. Extensions are copyright of their respective owners.
    Information and contribution at http://typo3.org/
-->

<title>My site - Title from Typo3</title>
<meta name="generator" content="TYPO3 6.2 CMS">

<link rel="stylesheet" type="text/css" href="typo3temp/stylesheet_8b9c2e8d89.css?1418032603" media="all">

</head>
<body>

<!-- HTML basics -->
<!-- My template start here -->
<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="ie lt-ie9 lt-ie8 lt-ie7" ng-app="app"> <![endif]-->
<!--[if IE 7]>         <html class="ie lt-ie9 lt-ie8" ng-app="app"> <![endif]-->
<!--[if IE 8]>         <html class="ie lt-ie9" ng-app="app"> <![endif]-->
<!--[if gt IE 8]><!--> <html ng-app="app"> <!--<![endif]-->
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>My site - Title from template</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="robots" CONTENT="noindex, nofollow">

Templates guide in documentation并没有告诉高级内容,比如将整个模板换成其他内容。

  • 我可以使用扩展吗?
  • 我可以为我的模板创建扩展程序吗?
  • 我的模板如何创建添加内容的TYPO3占位符?

我想在存储库中安装我的模板和CSS / Javascript,而不是在后端GUI(数据库)中配置。

相关问题:TYPO3 integrating HTML

3 个答案:

答案 0 :(得分:3)

您应该尝试Getting Started Guidehttp://docs.typo3.org/typo3cms/TemplatingTutorial/

,而不是阅读Templating Tutorial

您可以将所有TS排除在文件中,并将其包含在一个模板记录中。这就是Introduction Package正在做的事情。 http://docs.typo3.org/typo3cms/TyposcriptSyntaxReference/Syntax/Includes/Index.html

答案 1 :(得分:2)

还有另一种鲜为人知的解决方案,用于完全控制模板&#34;问题

http://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Config/Index.html#pagerenderertemplatefile

config.pageRendererTemplateFile = my/path/template.html

然后你可以从typo3 / sysext / tslib / template / tslib_page_frontend.html复制模板并根据你的需要进行编辑,例如

###XMLPROLOG_DOCTYPE###
<!--[if lt IE 7 ]> <html lang="de" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="de" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="de" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="de" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> 
  <html lang="de" class="no-js"> 
<!--<![endif]-->
###HEADTAG###

###METACHARSET###
###INLINECOMMENT###

###BASEURL###
###SHORTCUT###
###TITLE###
###META###

###CSS_INCLUDE###
###CSS_INLINE###

###JS_LIBS###
###JS_INCLUDE###
###JS_INLINE###

###HEADERDATA###
</head>
###BODY###
###JS_LIBS_FOOTER###
###JS_INCLUDE_FOOTER###
###JS_INLINE_FOOTER###
###FOOTERDATA###
</body>
</html>

如果这非常强大(我在一个站点上有它并且没有问题),优于config.disableAllHeaderCode的优点是 - 例如 - 你仍然有能力获得默认的JS,比如config.spamProtectEmailAddresses的解密函数,除此之外,您必须手动添加。

要输出RSS提要,我也希望config.disableAllHeaderCode,但如果它是关于输出HTML文档,这可能是一个可行的选择。

  

我可以为模板创建扩展程序吗?

现在将模板保留在扩展中是一种很好的做法。我个人仍然在fileadmin/templates/myproject

  

我的模板如何创建添加内容的TYPO3占位符?

请参阅@ pgampe的答案中的链接。您可以直接使用FLUIDTEMPLATE开始,这样您就可以学习最新的模板语言。为了开始使用TYPO3,有必要阅读一些基本文档。

  

我想在存储库中安装我的模板和CSS / Javascript,而不是在后端GUI(数据库)中配置。

你是对的,这也是最好的做法,请参阅@ pgampe的链接。在DB中,您只有。

<INCLUDE_TYPOSCRIPT: source="FILE:fileadmin/templates/main/ts/config.ts"> 

甚至(我做对了吗?):

<INCLUDE_TYPOSCRIPT: source="FILE: EXT:mytemplateext/path/to/config.ts">

等等。包括TypoScript也适用于Page TSConfig AND User TSConfig。我不想以任何其他方式工作!

您还希望为您喜欢的编辑器获取代码着色,例如对于Sublime:https://sublime.wbond.net/packages/TypoScript

答案 2 :(得分:1)

您无需创建任何扩展程序,因为可以使用TypoScript(设置字段)轻松禁用它

config.disableAllHeaderCode = 1

@See the docs

当然在这种情况下,您需要将所有标题添加到模板中。

当你想通过bootsrtap

从你的Extbase ext中包含纯粹的JSON(或其他数据)时,这个标志是有用的。