本文整理汇总了PHP中TYPO3\CMS\Core\Page\PageRenderer::addHeaderData方法的典型用法代码示例。如果您正苦于以下问题:PHP PageRenderer::addHeaderData方法的具体用法?PHP PageRenderer::addHeaderData怎么用?PHP PageRenderer::addHeaderData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TYPO3\CMS\Core\Page\PageRenderer
的用法示例。
在下文中一共展示了PageRenderer::addHeaderData方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testAddHeaderData
/**
* test add header data
*/
public function testAddHeaderData()
{
$expectedReturnValue = '<tag method="private" name="test" />';
$this->fixture->addHeaderData('<tag method="private" name="test" />');
$out = $this->fixture->render();
$this->assertContains($expectedReturnValue, $out);
}
示例2: startPage
/**
* Returns page start
* This includes the proper header with charset, title, meta tag and beginning body-tag.
*
* @param string $title HTML Page title for the header
* @return string Returns the whole header section of a HTML-document based on settings in internal variables (like styles, javascript code, charset, generator and docType)
* @see endPage()
*/
public function startPage($title)
{
// hook pre start page
if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preStartPageHook'])) {
$preStartPageHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preStartPageHook'];
if (is_array($preStartPageHook)) {
$hookParameters = array('title' => &$title);
foreach ($preStartPageHook as $hookFunction) {
GeneralUtility::callUserFunction($hookFunction, $hookParameters, $this);
}
}
}
// alternative template for Header and Footer
if ($this->pageHeaderFooterTemplateFile) {
$file = GeneralUtility::getFileAbsFileName($this->pageHeaderFooterTemplateFile, true);
if ($file) {
$this->pageRenderer->setTemplateFile($file);
}
}
// Disable rendering of XHTML tags
$this->pageRenderer->setRenderXhtml(false);
$languageCode = $this->pageRenderer->getLanguage() === 'default' ? 'en' : $this->pageRenderer->getLanguage();
$this->pageRenderer->setHtmlTag('<html lang="' . $languageCode . '">');
$headerStart = '<!DOCTYPE html>';
$this->pageRenderer->setXmlPrologAndDocType($headerStart);
$this->pageRenderer->setHeadTag('<head>' . LF . '<!-- TYPO3 Script ID: ' . htmlspecialchars($this->scriptID) . ' -->');
header('Content-Type:text/html;charset=utf-8');
$this->pageRenderer->setCharSet('utf-8');
$this->pageRenderer->addMetaTag($this->generator());
$this->pageRenderer->addMetaTag('<meta name="robots" content="noindex,follow">');
$this->pageRenderer->addMetaTag('<meta charset="utf-8">');
$this->pageRenderer->addMetaTag('<meta name="viewport" content="width=device-width, initial-scale=1">');
$this->pageRenderer->setFavIcon($this->getBackendFavicon());
if ($this->useCompatibilityTag) {
$this->pageRenderer->addMetaTag($this->xUaCompatible($this->xUaCompatibilityVersion));
}
$this->pageRenderer->setTitle($title);
// add docstyles
$this->docStyle();
if ($this->extDirectStateProvider) {
$this->pageRenderer->addJsFile(ExtensionManagementUtility::extRelPath('backend') . 'Resources/Public/JavaScript/ExtDirect.StateProvider.js');
}
$this->pageRenderer->addHeaderData($this->JScode);
foreach ($this->JScodeArray as $name => $code) {
$this->pageRenderer->addJsInlineCode($name, $code, false);
}
if (!empty($this->JScodeLibArray)) {
GeneralUtility::deprecationLog('DocumentTemplate->JScodeLibArray is deprecated since TYPO3 CMS 7. Use the functionality within pageRenderer directly');
foreach ($this->JScodeLibArray as $library) {
$this->pageRenderer->addHeaderData($library);
}
}
if ($this->extJScode) {
$this->pageRenderer->addExtOnReadyCode($this->extJScode);
}
// Load jquery and twbs JS libraries on every backend request
$this->pageRenderer->loadJquery();
// Note: please do not reference "bootstrap" outside of the TYPO3 Core (not in your own extensions)
// as this is preliminary as long as Twitter bootstrap does not support AMD modules
// this logic will be changed once Twitter bootstrap 4 is included
$this->pageRenderer->addJsFile(ExtensionManagementUtility::extRelPath('core') . 'Resources/Public/JavaScript/Contrib/bootstrap/bootstrap.js');
// hook for additional headerData
if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'])) {
$preHeaderRenderHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'];
if (is_array($preHeaderRenderHook)) {
$hookParameters = array('pageRenderer' => &$this->pageRenderer);
foreach ($preHeaderRenderHook as $hookFunction) {
GeneralUtility::callUserFunction($hookFunction, $hookParameters, $this);
}
}
}
// Construct page header.
$str = $this->pageRenderer->render(PageRenderer::PART_HEADER);
$this->JScode = $this->extJScode = '';
$this->JScodeArray = array();
$this->endOfPageJsBlock = $this->pageRenderer->render(PageRenderer::PART_FOOTER);
$str .= $this->docBodyTagBegin() . ($this->divClass ? '
<!-- Wrapping DIV-section for whole page BEGIN -->
<div class="' . $this->divClass . '">
' : '') . trim($this->form);
return $str;
}
示例3: startPage
//.........这里部分代码省略.........
// This loads the tabulator-in-textarea feature. It automatically modifies
// every textarea which is found.
if (!$GLOBALS['BE_USER']->uc['disableTabInTextarea']) {
$this->loadJavascriptLib('sysext/backend/Resources/Public/JavaScript/tab.js');
}
// Include the JS for the Context Sensitive Help
if ($includeCsh) {
$this->loadCshJavascript();
}
// Get the browser info
$browserInfo = \TYPO3\CMS\Core\Utility\ClientUtility::getBrowserInfo(GeneralUtility::getIndpEnv('HTTP_USER_AGENT'));
// Set the XML prologue
$xmlPrologue = '<?xml version="1.0" encoding="' . $this->charset . '"?>';
// Set the XML stylesheet
$xmlStylesheet = '<?xml-stylesheet href="#internalStyle" type="text/css"?>';
// Add the XML prologue for XHTML doctypes
if (strpos($this->docType, 'xhtml') !== FALSE) {
// Put the XML prologue before or after the doctype declaration according to browser
if ($browserInfo['browser'] === 'msie' && $browserInfo['version'] < 7) {
$headerStart = $headerStart . LF . $xmlPrologue;
} else {
$headerStart = $xmlPrologue . LF . $headerStart;
}
// Add the xml stylesheet according to doctype
if ($this->docType !== 'xhtml_frames') {
$headerStart = $headerStart . LF . $xmlStylesheet;
}
}
$this->pageRenderer->setXmlPrologAndDocType($headerStart);
$this->pageRenderer->setHeadTag('<head>' . LF . '<!-- TYPO3 Script ID: ' . htmlspecialchars($this->scriptID) . ' -->');
$this->pageRenderer->setCharSet($this->charset);
$this->pageRenderer->addMetaTag($this->generator());
$this->pageRenderer->addMetaTag('<meta name="robots" content="noindex,follow" />');
$this->pageRenderer->setFavIcon($this->getBackendFavicon());
if ($this->useCompatibilityTag) {
$this->pageRenderer->addMetaTag($this->xUaCompatible($this->xUaCompatibilityVersion));
}
$this->pageRenderer->setTitle($title);
// add docstyles
$this->docStyle();
if ($this->extDirectStateProvider) {
$this->pageRenderer->addJsFile($this->backPath . 'sysext/backend/Resources/Public/JavaScript/ExtDirect.StateProvider.js');
}
// Add jsCode for overriding the console with a debug panel connection
$this->pageRenderer->addJsInlineCode('consoleOverrideWithDebugPanel', 'if (typeof top.Ext === "object") {
top.Ext.onReady(function() {
if (typeof console === "undefined") {
if (top && top.TYPO3 && top.TYPO3.Backend && top.TYPO3.Backend.DebugConsole) {
console = top.TYPO3.Backend.DebugConsole;
} else {
console = {
log: Ext.log,
info: Ext.log,
warn: Ext.log,
error: Ext.log
};
}
}
});
}
', FALSE);
$this->pageRenderer->addHeaderData($this->JScode);
foreach ($this->JScodeArray as $name => $code) {
$this->pageRenderer->addJsInlineCode($name, $code, FALSE);
}
if (count($this->JScodeLibArray)) {
foreach ($this->JScodeLibArray as $library) {
$this->pageRenderer->addHeaderData($library);
}
}
if ($this->extJScode) {
$this->pageRenderer->addExtOnReadyCode($this->extJScode);
}
// hook for additional headerData
if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'])) {
$preHeaderRenderHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'];
if (is_array($preHeaderRenderHook)) {
$hookParameters = array('pageRenderer' => &$this->pageRenderer);
foreach ($preHeaderRenderHook as $hookFunction) {
GeneralUtility::callUserFunction($hookFunction, $hookParameters, $this);
}
}
}
// Construct page header.
$str = $this->pageRenderer->render(PageRenderer::PART_HEADER);
$this->JScodeLibArray = array();
$this->JScode = $this->extJScode = '';
$this->JScodeArray = array();
$this->endOfPageJsBlock = $this->pageRenderer->render(PageRenderer::PART_FOOTER);
if ($this->docType == 'xhtml_frames') {
return $str;
} else {
$str .= $this->docBodyTagBegin() . ($this->divClass ? '
<!-- Wrapping DIV-section for whole page BEGIN -->
<div class="' . $this->divClass . '">
' : '') . trim($this->form);
}
return $str;
}
示例4: startPage
/**
* Returns page start
* This includes the proper header with charset, title, meta tag and beginning body-tag.
*
* @param string $title HTML Page title for the header
* @param bool $includeCsh flag for including CSH
* @return string Returns the whole header section of a HTML-document based on settings in internal variables (like styles, javascript code, charset, generator and docType)
* @see endPage()
*/
public function startPage($title, $includeCsh = TRUE)
{
// hook pre start page
if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preStartPageHook'])) {
$preStartPageHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preStartPageHook'];
if (is_array($preStartPageHook)) {
$hookParameters = array('title' => &$title);
foreach ($preStartPageHook as $hookFunction) {
GeneralUtility::callUserFunction($hookFunction, $hookParameters, $this);
}
}
}
$this->pageRenderer->backPath = $this->backPath;
// alternative template for Header and Footer
if ($this->pageHeaderFooterTemplateFile) {
$file = GeneralUtility::getFileAbsFileName($this->pageHeaderFooterTemplateFile, TRUE);
if ($file) {
$this->pageRenderer->setTemplateFile($file);
}
}
// Disable rendering of XHTML tags
$this->pageRenderer->setRenderXhtml(FALSE);
$languageCode = $this->pageRenderer->getLanguage() === 'default' ? 'en' : $this->pageRenderer->getLanguage();
$this->pageRenderer->setHtmlTag('<html lang="' . $languageCode . '">');
// Include the JS for the Context Sensitive Help
// @todo: right now this is a hard dependency on csh manual, as the whole help system should be moved to
// the extension. The core provides a API for adding help, and rendering help, but the rendering
// should be up to the extension itself
if ($includeCsh && ExtensionManagementUtility::isLoaded('cshmanual')) {
$this->loadCshJavascript();
}
$headerStart = '<!DOCTYPE html>';
$this->pageRenderer->setXmlPrologAndDocType($headerStart);
$this->pageRenderer->setHeadTag('<head>' . LF . '<!-- TYPO3 Script ID: ' . htmlspecialchars($this->scriptID) . ' -->');
header('Content-Type:text/html;charset=utf-8');
$this->pageRenderer->setCharSet('utf-8');
$this->pageRenderer->addMetaTag($this->generator());
$this->pageRenderer->addMetaTag('<meta name="robots" content="noindex,follow">');
$this->pageRenderer->addMetaTag('<meta charset="utf-8">');
$this->pageRenderer->addMetaTag('<meta name="viewport" content="width=device-width, initial-scale=1">');
$this->pageRenderer->setFavIcon($this->getBackendFavicon());
if ($this->useCompatibilityTag) {
$this->pageRenderer->addMetaTag($this->xUaCompatible($this->xUaCompatibilityVersion));
}
$this->pageRenderer->setTitle($title);
// add docstyles
$this->docStyle();
if ($this->extDirectStateProvider) {
$this->pageRenderer->addJsFile($this->backPath . 'sysext/backend/Resources/Public/JavaScript/ExtDirect.StateProvider.js');
}
// Add jsCode for overriding the console with a debug panel connection
$this->pageRenderer->addJsInlineCode('consoleOverrideWithDebugPanel', 'if (typeof top.Ext === "object") {
top.Ext.onReady(function() {
if (typeof console === "undefined") {
if (top && top.TYPO3 && top.TYPO3.Backend && top.TYPO3.Backend.DebugConsole) {
console = top.TYPO3.Backend.DebugConsole;
} else {
console = {
log: Ext.log,
info: Ext.log,
warn: Ext.log,
error: Ext.log
};
}
}
});
}
', FALSE);
$this->pageRenderer->addHeaderData($this->JScode);
foreach ($this->JScodeArray as $name => $code) {
$this->pageRenderer->addJsInlineCode($name, $code, FALSE);
}
if (count($this->JScodeLibArray)) {
GeneralUtility::deprecationLog('DocumentTemplate->JScodeLibArray is deprecated since TYPO3 CMS 7. Use the functionality within pageRenderer directly');
foreach ($this->JScodeLibArray as $library) {
$this->pageRenderer->addHeaderData($library);
}
}
if ($this->extJScode) {
$this->pageRenderer->addExtOnReadyCode($this->extJScode);
}
// Load jquery and twbs JS libraries on every backend request
$this->pageRenderer->loadJquery();
// Note: please do not reference "bootstrap" outside of the TYPO3 Core (not in your own extensions)
// as this is preliminary as long as Twitter bootstrap does not support AMD modules
// this logic will be changed once Twitter bootstrap 4 is included
$this->pageRenderer->addJsFile($this->backPath . 'sysext/core/Resources/Public/JavaScript/Contrib/bootstrap/bootstrap.js');
// hook for additional headerData
if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'])) {
$preHeaderRenderHook =& $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/template.php']['preHeaderRenderHook'];
if (is_array($preHeaderRenderHook)) {
//.........这里部分代码省略.........
示例5: renderPreProcess
/**
* Insert javascript-tags for google-analytics
*
* @param array $params
* @param \TYPO3\CMS\Core\Page\PageRenderer $pObj
* @return void
*/
public function renderPreProcess($params, $pObj)
{
if (TYPO3_MODE === 'FE') {
// Get plugin-configuration
$conf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_libjsanalytics.']['settings.'];
// Exclude the analytics-snippet on some pages
$pageExclude = GeneralUtility::trimExplode(',', $conf['pageExclude'], true);
// Generate script-tag for google-analytics if enabled
if ((int) $conf['enable'] && !in_array($GLOBALS['TSFE']->id, $pageExclude)) {
$analyticsPreScript = '';
$analyticsPostScript = '';
// Instruct analytics.js to use the name defined in typoscript
if (!empty($conf['gaObjectName']) && $conf['gaObjectName'] !== 'ga') {
$gaObjectName = $conf['gaObjectName'];
} else {
$gaObjectName = 'ga';
}
// Get filePath to analytics.js
$analyticsJavascriptFile = Tools::getConfParam('localFile');
if ($conf['forceCdn'] || !file_exists(PATH_site . $analyticsJavascriptFile)) {
$analyticsJavascriptFile = Tools::getConfParam('sourceFile');
} else {
// If local file is not available, fall back to CDN
if (empty($analyticsJavascriptFile)) {
$analyticsJavascriptFile = Tools::getConfParam('sourceFile');
} else {
// Prefix file with absRefPrefix if path is relative
if (!GeneralUtility::isAbsPath($analyticsJavascriptFile)) {
$analyticsJavascriptFile = $GLOBALS['TSFE']->absRefPrefix . $analyticsJavascriptFile;
}
// Append filename with version numbers
$analyticsJavascriptFile = GeneralUtility::createVersionNumberedFilename($analyticsJavascriptFile);
}
}
// Insert different codeblocks for different integration (old/new)
if ((int) $conf['alternative']) {
if ($conf['gaObjectName'] !== 'ga') {
$scriptTag .= LF . 'window.GoogleAnalyticsObject = \'' . $gaObjectName . '\';';
}
// Create an initial analytics() function
// The queued commands will be executed once analytics.js loads
$scriptTag .= LF . 'window.' . $gaObjectName . ' = window.' . $gaObjectName . ' || function() {' . '(' . $gaObjectName . '.q = ' . $gaObjectName . '.q || []).push(arguments)};';
// Set the time (as an integer) this tag was executed (Used for timing hits)
$scriptTag .= LF . $gaObjectName . '.l =+ new Date;';
// Compile final script-tag for analytics.js
$analyticsPostScript = LF . '<script src="' . $analyticsJavascriptFile . '" type="text/javascript" async="async"></script>';
} else {
// Compile final script-tag for analytics.js
$analyticsPreScript = LF . '(function(i,s,o,g,r,a,m){i[\'GoogleAnalyticsObject\']=r;i[r]=i[r]||function(){' . LF . '(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),' . LF . 'm=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)' . LF . '})(window,document,\'script\',\'' . $analyticsJavascriptFile . '\',\'' . $gaObjectName . '\');';
}
// Create the tracker
foreach ($conf['gaObject.'] as $gaName => $gaTracker) {
// Set the name of the tracker if defined in typoscript
$trackerName = '';
if ($gaName !== 'default.') {
$trackerName = $gaName;
}
// Check if analytics objects are defined
if (is_array($gaTracker)) {
$scriptTag .= $this->iterateTrackerMethods($gaObjectName, $trackerName, $gaTracker);
}
}
// TEST/TODO
// Add additional javascript to a single page if defined in PageTSConfig
//debug($GLOBALS['TSFE']->page['TSconfig']);
/*
$pageTS = BackendUtility::getPagesTSconfig($GLOBALS['TSFE']->id, [$GLOBALS['TSFE']->id]);
if (isset($pageTS['tx_libjsanalytics.'])) {
$analyticsPageTS = $pageTS['tx_libjsanalytics.'];
if (is_array($analyticsPageTS['additionalScript.'])) {
$scriptTag .= LF . $this->getCobject($analyticsPageTS['additionalScript'], $analyticsPageTS['additionalScript.']);
}
}
*/
// Compile final codeblock
$scriptTag = '<script type="text/javascript">' . LF . '/*<![CDATA[*/' . $analyticsPreScript . $scriptTag . LF . '/*]]>*/' . LF . '</script>' . $analyticsPostScript;
// Add final code to HTML
$pObj->addHeaderData($scriptTag);
}
}
}