2017-03-14 36 views
-3

那麼,我正在開發一個插件a,並且我需要在TYPO3頁面加載時從插件顯示一些東西。 有沒有一些函數如何掛鉤動作,就像在WordPress中,當頁面加載比插件會執行一些控制器方法?然後這個控制器會產生一些HTML輸出,我想在前端頁面顯示。特別是我想在頭部顯示自定義腳本。所以腳本應該是這樣的<head>...<script>my content</script>...</head>如何在正常頁面渲染時調用TYPO3插件

+1

使downvotes不幫助我解決這個問題 –

+1

我沒有downvote,但你的問題可以肯定受益於進一步的細節,以更好地說明這個問題... – ewcz

+0

你想要達到什麼目的?呈現自己的內容?修改已經存在的內容?還有其他的東西嗎?請更詳細地描述您的使用案例。 – Susi

回答

-3

好吧,謝謝你的回答,但它不是很具體。我發現這個解決方案,不是最好的,,但它的工作原理是!如果有人更好,請分享。

首先,您必須爲將從/your-plugin-name/Classes/class.tx_contenthook.php處掛鉤的班級創建一個文件。文件名必須有這個模式​​裏面我們將有一個代碼,其中一個方法將被鉤子調用。

class tx_contenthook { 

    function displayContent(&$params, &$that){ 

     //content of page from param 
     $content = $params['pObj']->content; 

     //your content 
     $inject = '4747474747'; 

     // inject content on 
     $content = str_replace('</body>', $inject. '</body>', $content); 

     // save 
     $params['pObj']->content = $content; 
     } 
} 

接下來,我們必須把它叫做掛鉤。所以,讓我們去/your-plugin-name/ext_localconf.php並在那裏添加這兩行,這使得魔法和處理也緩存。

// hook is called after caching 
$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output'][] = 'EXT:' . $_EXTKEY . '/Classes/class.tx_contenthook.php:&tx_contenthook->displayContent'; 


// hook is called before caching 
$TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-all'][] = 'EXT:'. $_EXTKEY .'/Classes/class.tx_contenthook.php:&tx_contenthook->displayContent'; 

我希望這將幫助那些與typo3掙扎的人。

+2

對不起,但這不是一個好方法添加內容。您正在濫用那些用於現有內容後處理的掛鉤。這是一個繞過主要TYPO3模式的快速修復,會導致您的維護麻煩。 – undko

+1

@undko如果你有更好的解決方案,請自由分享。我正在尋找更好的解決方案。謝謝 –

+2

這個答案在許多方面都是錯誤的,並且違反了TYPO3中的正常渲染流程。在這個線程中已經提到了有關構建*擴展*的正確文檔(這就是TYPO3中調用插件的方式)。 –

3

好吧,你可能想要做的是開發一個所謂的TYPO3擴展 - 這就是TYPO3中調用的插件/插件(這是你可能會發現的術語谷歌結果爲)。

要快速入門,您可以嘗試使用TYPO3擴展程序生成器(https://docs.typo3.org/typo3cms/extensions/extension_builder/) - 它可以爲您生成擴展名。

欲瞭解更多信息,你也可以看看https://docs.typo3.org/typo3cms/CoreApiReference/latest/ExtensionArchitecture/Index.html,它解釋了更詳細的概念。

更多信息,https://docs.typo3.org/typo3cms/ExtbaseFluidBook/Index.html

1

提供TYPO3有一個名爲插件的東西,但你應該區分在其他上下文中的含義。
第一個TYPO3是一個CMS,其內容以層次結構的頁面結構化。這些頁面是導航的基礎。每個頁面包含單獨的contentelmenents(CE)。由於Susi已經告訴:TYPO3的添加通常是'擴展',可以以不同方式擴展(!)TYPO3的功能性。一種方法是(TYPO3-)插件的定義。這些是特殊的ContentElement,可以顯示特殊信息。
儘管普通的CE具有記錄中顯示的所有信息(例如文本&圖像),但插件可以更靈活。
典型的例子是:顯示一個記錄列表或一個記錄的詳細信息。
這些插件可以用typoscript控制,或者插件-CE可以有附加字段來保存信息顯示內容。

有關如何定義插件的詳細信息,請參閱由Susi提供的鏈接。
並注意:出於安全原因,不可能僅執行普通的PHP文件來回顯任何輸出。您需要使用API​​註冊您的插件,將您的輸出構建爲字符串並將生成的HTML作爲字符串返回給調用函數。對於初學者來說,ExtensionBuilder將幫助您生成一個良好的擴展,它使用API​​來註冊和輸出數據。