簡體   English   中英

Typo3 Neos模板中的訂購

[英]Ordering in Typo3 Neos template

我在Typo3 Neos中為網站創建了網站模板。 但是,在模板中,我需要定義javascript的順序,因為CSS文件必須包含在javascript文件之前。 我現在有這些文件:

default.html中:

 {namespace neos=TYPO3\\Neos\\ViewHelpers} {namespace ts=TYPO3\\TypoScript\\ViewHelpers} <!DOCTYPE html> <html lang="en"> <head> <f:section name="meta"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> </f:section> <f:section name="stylesheets"> <!-- Bootstrap CSS --> <link href="{f:uri.resource(path: 'css/bootstrap.css', package: 'MyApp')}" rel="stylesheet"> <link href="{f:uri.resource(path: 'css/responsive.css', package: 'MyApp')}" rel="stylesheet"> <!-- Plugins --> <link href="{f:uri.resource(path: 'plugins/flexslider/flexslider.css', package: 'MyApp')}" rel="stylesheet"> <!-- Theme style --> <link href="{f:uri.resource(path: 'css/theme-style.css', package: 'MyApp')}" rel="stylesheet"> </f:section> <f:section name="headScripts"> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="{f:uri.resource(path: 'js/html5.js', package: 'MyApp')}"></script> <![endif]--> <!--Retina.js plugin - @see: http://retinajs.com/--> <script src="{f:uri.resource(path: 'plugins/retina/retina.js', package: 'MyApp')}"></script> </f:section> </head> 

和Root.ts2:

page = Page {
head {

    meta = TYPO3.TypoScript:Template {
        templatePath = 'resource://MyApp/Private/Templates/Page/Default.html'
        sectionName = 'meta'
        title = ${q(node).property('title')}
    }

    stylesheets.site = TYPO3.TypoScript:Template {
        templatePath = 'resource://MyApp/Private/Templates/Page/Default.html'
        sectionName = 'stylesheets'
    }

    javascripts.site = TYPO3.TypoScript:Template {
        templatePath = 'resource://MyApp/Private/Templates/Page/Default.html'
        sectionName = 'headScripts'
    }
}

body {
    templatePath = 'resource://MyApp/Private/Templates/Page/Default.html'
    sectionName = 'body'
    parts {
        menu = Menu
        breadcrumb = Breadcrumb
    }
    // These are your content areas, you can define as many as you want, just name them and the nodePath.
    content {
        // The default content section
        main = PrimaryContent {
            nodePath = 'main'
        }
    }

    javascripts.site = TYPO3.TypoScript:Template {
        templatePath = 'resource://MyApp/Private/Templates/Page/Default.html'
        sectionName = 'bodyScripts'
    }
}
}

HTML中的結果是:

 <!DOCTYPE html><html><!-- This website is powered by TYPO3 Neos, the next generation CMS, a free Open Source Enterprise Content Management System licensed under the GNU/GPL. TYPO3 Neos is based on Flow, a powerful PHP application framework licensed under the GNU/LGPL. More information and contribution opportunities at http://neos.typo3.org and http://flow.typo3.org --><head> <meta charset="UTF-8" /> <title>Home</title> <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="http://app.local/_Resources/Static/Packages/MyApp/js/html5.js"></script> <![endif]--> <!--Retina.js plugin - @see: http://retinajs.com/--> <script src="http://app.local/_Resources/Static/Packages/MyApp/plugins/retina/retina.js"></script> <!-- Bootstrap CSS --> <link href="http://app.local/_Resources/Static/Packages/MyApp/css/bootstrap.css" rel="stylesheet"> <link href="http://app.local/_Resources/Static/Packages/MyApp/css/responsive.css" rel="stylesheet"> <!-- Plugins --> <link href="http://app.local/_Resources/Static/Packages/MyApp/plugins/flexslider/flexslider.css" rel="stylesheet"> <!-- Theme style --> <link href="http://app.local/_Resources/Static/Packages/MyApp/css/theme-style.css" rel="stylesheet"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta name="author" content=""> </head><body> 

但是,我希望將元信息放在頂部,然后是樣式表,最后是javascript文件。 是否可以定義渲染元素的順序? 我希望可以使用Default.html的順序,但似乎沒有。

錯字腳本中有@position,可用於更改順序。要查看實際操作,請檢查TYPO3.Neos/Resources/Private/TypoScript/Prototypes/Page.ts2 在您的情況下,它應該可以工作:

meta.@position = 'start 5'
stylesheets.@position = 'start 10'
javascripts.@position = 'start 15'

或者您可以直接將其定義:

meta = TYPO3.TypoScript:Template {
    @position = 'start 5'

您還可以使用諸如'after headTag''before stylesheets'

關於TypoScript- TypoScript 2 Pocket參考值得檢查:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM