2017-01-30 63 views
1

在我的項目中,我們使用的是TYPO3。我們從後端獲取一些數據,它們在html頁面中分配如下。如何訪問JavaScript中的TYPO3設置

var items = {}; 
items.item1 = {settings.item1}; 
items.item2 = {settings.item2}; 
items.item3 = {settings.item3}; 

然後將值分配給按鈕。這些值將在觸發操作時發送回JS。 {settings.item*}來自TYPO3後端。我想知道的是如何將上面的代碼塊添加到單獨的JS文件中,而不是將它添加到HTML頁面中。當我試圖直接添加它,它不工作作爲{settings.item*}來自TYPO3

感謝

+1

您可以提供給我們當前的Typoscript或PHP,在前端將這些值寫入HTML嗎? –

回答

0

你必須從HTML拿起你的設置,因爲這是TYPO3將呈現給你。但你可以使用HTML的數據屬性,例如

您還可以將整個{settings}數組呈現爲一個JSON字符串並將其轉換爲數據屬性,然後使用JavaScript進行挑選。

0

您可以使用HTML文件的JavaScript(模板,部分佈局)

您需要添加

語法之間的JavaScript代碼: <![CDATA[JavaScript代碼]]>TYPO3代碼<![CDATA[的javascript代碼]]>

<script type="text/javascript"> 
<![CDATA[ 
{ 
var items = {}; 
items.item1 = ]]>{settings.item1}<![CDATA[; 
items.item2 = ]]>{settings.item2}<![CDATA[; 
items.item3 = ]]>{settings.item3}<![CDATA[; 
]]> 
</script> 

謝謝

我希望它有幫助!

0

您可以更精確地定義上下文嗎?在TypoScript,Flexform,PHP(Extensionmanager)中定義的設置在哪裏?

如果您在Typo腳本定義設置可以使用:

page.inlineSettings { 
    setting1 = Hello 
    setting2 = GoOnTop 
} 

,以使其可在JavaScript爲:

​​

參見:https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Page/Index.html#inlinesettings

也許這將被刪除未來的版本,因爲它的目的是通過ExtJS使用。也不可能使用stdWrap等。

另外,更靈活,方法是使用

page.jsInline { 
    10 = TEXT 
    10.stdWrap.dataWrap = var pageId = {TSFE:id}; 
} 

這允許您使用完整的TypoScript如文本,dataWrap等

參見:https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Page/Index.html#jsinline

0

我不會編寫JavaScript從PHP只是爲了一些配置。我將它們存儲在DOM元素的數據屬性中,並通過JavaScript獲取它。也許這對你也是一種選擇。