mirror of
https://github.com/e107inc/e107.git
synced 2025-08-01 12:20:44 +02:00
(experimental changes) overall front-end pages and e_jslib.php load speed up (304 not modified tests passed), bugfixes, better headers, e_meta works fine with JS manager now
This commit is contained in:
@@ -18,12 +18,7 @@
|
||||
// prevent notices/warnings to break JS source
|
||||
error_reporting(0);
|
||||
|
||||
//output cache if available before calling the api
|
||||
e_jslib_cache_out();
|
||||
|
||||
//v0.8 - we need THEME defines here (do we?) - WE DON'T
|
||||
//$_E107 = array('no_forceuserupdate' => 1, 'no_online' => 1, 'no_menus' => 1, 'no_prunetmp' => 1);
|
||||
$_E107['minimal'] = true;
|
||||
session_cache_limiter('private');
|
||||
|
||||
//admin or front-end call
|
||||
if (strpos($_SERVER['QUERY_STRING'], '_admin') !== FALSE)
|
||||
@@ -34,11 +29,31 @@ else
|
||||
{
|
||||
define('USER_AREA', true); //force user area
|
||||
}
|
||||
// no-cache check
|
||||
if (strpos($_SERVER['QUERY_STRING'], '_nocache') !== FALSE)
|
||||
{
|
||||
define('e_NOCACHE', true); //force admin area
|
||||
}
|
||||
else
|
||||
{
|
||||
define('e_NOCACHE', false); //force user area
|
||||
}
|
||||
|
||||
if(!e_NOCACHE) session_cache_limiter('private');
|
||||
else session_cache_limiter('nocache');
|
||||
|
||||
//output cache if available before calling the api
|
||||
e_jslib_cache_out();
|
||||
|
||||
//v0.8 - we need THEME defines here (do we?) - WE DON'T
|
||||
//$_E107 = array('no_forceuserupdate' => 1, 'no_online' => 1, 'no_menus' => 1, 'no_prunetmp' => 1);
|
||||
$_E107['minimal'] = true;
|
||||
|
||||
//call jslib handler, render content
|
||||
require_once ("../class2.php");
|
||||
require_once (e_HANDLER.'jslib_handler.php');
|
||||
$jslib = new e_jslib();
|
||||
//require_once (e_HANDLER.'jslib_handler.php');
|
||||
//$jslib = new e_jslib();
|
||||
$jslib = e107::getObject('e_jslib', null, e_HANDLER.'jslib_handler.php');
|
||||
$jslib->getContent();
|
||||
|
||||
exit;
|
||||
@@ -54,11 +69,15 @@ exit;
|
||||
*/
|
||||
function e_jslib_cache_out()
|
||||
{
|
||||
if(e_NOCACHE) return;
|
||||
$encoding = e_jslib_browser_enc(); //NOTE - should be called first
|
||||
$cacheFile = e_jslib_is_cache($encoding);
|
||||
|
||||
if ($cacheFile)
|
||||
{
|
||||
//kill any output buffering - better performance and 304 not modified requirement
|
||||
while (@ob_end_clean());
|
||||
|
||||
if (function_exists('date_default_timezone_set'))
|
||||
{
|
||||
date_default_timezone_set('UTC');
|
||||
@@ -67,16 +86,11 @@ function e_jslib_cache_out()
|
||||
// last modification time
|
||||
$lmodified = filemtime($cacheFile);
|
||||
|
||||
// not modified - send 304 and exit
|
||||
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lmodified)
|
||||
{
|
||||
header("HTTP/1.1 304 Not Modified", true);
|
||||
exit;
|
||||
}
|
||||
|
||||
// send last modified date
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Last-modified: '.gmdate('r', $lmodified), true);
|
||||
//header('Cache-Control: must-revalidate');
|
||||
//header('Last-modified: '.gmdate('r', $lmodified), true);
|
||||
if($lmodified) header('Last-modified: '.gmdate("D, d M Y H:i:s", $lmodified).' GMT', true);
|
||||
|
||||
|
||||
// send content type and encoding
|
||||
header('Content-type: text/javascript', true);
|
||||
@@ -87,12 +101,37 @@ function e_jslib_cache_out()
|
||||
|
||||
// Expire header - 1 year
|
||||
$time = time()+ 365 * 86400;
|
||||
header('Expires: '.gmdate('r', $time), true);
|
||||
//header('Expires: '.gmdate('r', $time), true);
|
||||
header('Expires: '.gmdate("D, d M Y H:i:s", $time).' GMT', true);
|
||||
|
||||
//kill any output buffering - better performance
|
||||
while (@ob_end_clean());
|
||||
header('Cache-Control: must-revalidate', true);
|
||||
|
||||
echo @file_get_contents($cacheFile);
|
||||
// not modified check by last modified time - send 304 and exit
|
||||
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lmodified)
|
||||
{
|
||||
header("HTTP/1.1 304 Not Modified", true);
|
||||
exit;
|
||||
}
|
||||
|
||||
$page = @file_get_contents($cacheFile);
|
||||
$etag = md5($page).($encoding ? '-'.$encoding : '');
|
||||
|
||||
header('Content-Length: '.strlen($page), true);
|
||||
header('ETag: '.$etag, true);
|
||||
|
||||
// not modified check by Etag
|
||||
if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
|
||||
{
|
||||
$IF_NONE_MATCH = str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']);
|
||||
|
||||
if($IF_NONE_MATCH == $etag || ($IF_NONE_MATCH == ($etag.'-'.$encoding)))
|
||||
{
|
||||
header('HTTP/1.1 304 Not Modified');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
echo $page;
|
||||
//TODO - debug
|
||||
//@file_put_contents('cache/e_jslib_log', "----------\ncache used - ".$cacheFile."\n\n", FILE_APPEND);
|
||||
exit;
|
||||
|
@@ -670,7 +670,7 @@ class e_jsmanager
|
||||
*
|
||||
* @param string $mod core|plugin|theme|header|footer|header_inline|footer_inline|core_css|plugin_css|theme_css|other_css|inline_css
|
||||
* @param integer $zone 1-5 - only used when in 'header','footer','header_inline' and 'footer_inline' render mod
|
||||
* @param boolean $external exrernal file calls, only used when NOT in 'header_inline' and 'footer_inline' render mod
|
||||
* @param boolean $external external file calls, only used when NOT in 'header_inline' and 'footer_inline' render mod
|
||||
* @param boolean $return
|
||||
* @return string JS content - only if $return is true
|
||||
*/
|
||||
@@ -1082,5 +1082,39 @@ class e_jsmanager
|
||||
$core->setPref($key, $libs);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current object data
|
||||
* @return array
|
||||
*/
|
||||
public function getData()
|
||||
{
|
||||
$data = get_class_vars(__CLASS__);
|
||||
unset($data['_instance'], $data['_in_admin']);
|
||||
$kdata = array_keys($data);
|
||||
$instance = self::getInstance();
|
||||
$data = array();
|
||||
foreach ($kdata as $prop)
|
||||
{
|
||||
$data[$prop] = $this->$prop;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set all current object data
|
||||
* @param $data
|
||||
* @return e_jsmanager
|
||||
*/
|
||||
public function setData($data)
|
||||
{
|
||||
if(!is_array($data)) return $this;
|
||||
foreach ($data as $prop => $val)
|
||||
{
|
||||
if('_instance' == $prop || '_in_admin' == $prop) continue;
|
||||
$this->$prop = $val;
|
||||
}
|
||||
return $this;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -12,7 +12,7 @@
|
||||
* $Author$
|
||||
*
|
||||
*/
|
||||
global $pref, $eplug_admin, $THEME_JSLIB, $THEME_CORE_JSLIB;
|
||||
global $pref, $eplug_admin;
|
||||
|
||||
class e_jslib
|
||||
{
|
||||
@@ -22,6 +22,36 @@ class e_jslib
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Called from HEADERF
|
||||
* @return string
|
||||
*/
|
||||
public function renderHeader($where = 'front', $return = false)
|
||||
{
|
||||
// FIXME: convert e107.js.php to pure e107.js file
|
||||
// FIXME: 'e_jslib_browser_cache' used by js_manager - add it together with all new prefs (JS management tab, Site preferences area)
|
||||
// FIXME: option to use external sources (e.g. google) even if JS is combined (script tags for external sources)
|
||||
if(!e107::getPref('e_jslib_nocombine'))
|
||||
{
|
||||
$hash = md5(serialize(varset($pref['e_jslib'])).e107::getPref('e_jslib_browser_cache', 0).THEME.e_LANGUAGE.ADMIN).'_'.$where;
|
||||
// TODO disable cache in debug mod
|
||||
$hash .= (e107::getPref('e_jslib_nocache') ? '_nocache' : '').(e107::getPref('e_jslib_gzip') ? '' : '_nogzip');
|
||||
$ret = "<script type='text/javascript' src='".e_FILE_ABS."e_jslib.php?{$hash}'></script>\n";
|
||||
if($return) $ret;
|
||||
echo $ret;
|
||||
return;
|
||||
}
|
||||
|
||||
$e_jsmanager = e107::getJs();
|
||||
|
||||
// script tags
|
||||
$ret = $e_jsmanager->renderJs('core', null, true, $return);
|
||||
$ret .= $e_jsmanager->renderJs('plugin', null, true, $return);
|
||||
$ret .= $e_jsmanager->renderJs('theme', null, true, $return);
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Collect & output content of all available JS libraries (requires e107 API)
|
||||
* FIXME
|
||||
@@ -57,34 +87,41 @@ class e_jslib
|
||||
|
||||
// last modification time for loaded files
|
||||
$lmodified = max($lmodified);
|
||||
|
||||
// send content type
|
||||
header('Content-type: text/javascript', true);
|
||||
|
||||
if(deftrue('e_NOCACHE'))
|
||||
{
|
||||
$this->content_out($lmodified);
|
||||
}
|
||||
|
||||
if (function_exists('date_default_timezone_set'))
|
||||
{
|
||||
date_default_timezone_set('UTC');
|
||||
}
|
||||
|
||||
|
||||
// send last modified date
|
||||
header('Cache-Control: must-revalidate', true);
|
||||
if($lmodified) header('Last-modified: '.gmdate("D, d M Y H:i:s", $lmodified).' GMT', true);
|
||||
//if($lmodified) header('Last-modified: '.gmdate('r', $lmodified), true);
|
||||
|
||||
// Expire header - 1 year
|
||||
$time = time()+ 365 * 86400;
|
||||
header('Expires: '.gmdate("D, d M Y H:i:s", $time).' GMT', true);
|
||||
|
||||
// If-Modified check only if cache disabled
|
||||
// if cache is enabled, cache file modification date is set to $lmodified
|
||||
/*if(!e107::getPref('syscachestatus'))
|
||||
if(!e107::getPref('syscachestatus'))
|
||||
{
|
||||
// not modified - send 304 and exit
|
||||
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lmodified)
|
||||
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $lmodified && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $lmodified)
|
||||
{
|
||||
header("HTTP/1.1 304 Not Modified", true);
|
||||
exit;
|
||||
}
|
||||
}*/
|
||||
|
||||
// send last modified date
|
||||
header('Cache-Control: must-revalidate');
|
||||
header('Last-modified: '.gmdate('r', $lmodified), true);
|
||||
|
||||
// send content type
|
||||
header('Content-type: text/javascript', true);
|
||||
|
||||
// Expire header - 1 year
|
||||
$time = time()+ 365 * 86400;
|
||||
header('Expires: '.gmdate('r', $time), true);
|
||||
}
|
||||
|
||||
//Output
|
||||
$this->content_out($lmodified);
|
||||
@@ -197,6 +234,21 @@ class e_jslib
|
||||
$contents = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
$etag = md5($page).($encoding ? '-'.$encoding : '');
|
||||
header('ETag: '.$etag, true);
|
||||
if($encoding) header('Content-Encoding: ' . $encoding);
|
||||
|
||||
if (!deftrue('e_NOCACHE') && isset($_SERVER['HTTP_IF_NONE_MATCH']))
|
||||
{
|
||||
$IF_NONE_MATCH = str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']);
|
||||
|
||||
if($IF_NONE_MATCH == $etag || ($IF_NONE_MATCH == ($etag.'-'.$encoding)))
|
||||
{
|
||||
header('HTTP/1.1 304 Not Modified');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
if ($encoding)
|
||||
{
|
||||
$gzdata = "\x1f\x8b\x08\x00\x00\x00\x00\x00";
|
||||
@@ -210,8 +262,7 @@ class e_jslib
|
||||
$gsize = strlen($gzdata);
|
||||
$this->set_cache($gzdata, $encoding, $lmodified);
|
||||
|
||||
header('Content-Encoding: ' . $encoding);
|
||||
//header('Content-Length: '.$gsize);
|
||||
header('Content-Length: '.$gsize);
|
||||
header('X-Content-size: ' . $size);
|
||||
print($gzdata);
|
||||
//TODO - log/debug
|
||||
@@ -221,6 +272,7 @@ class e_jslib
|
||||
{
|
||||
//header('Content-Length: '.strlen($contents));
|
||||
$this->set_cache($contents, '', $lmodified);
|
||||
header('Content-Length: '.strlen($contents));
|
||||
print($contents);
|
||||
//TODO - log/debug
|
||||
//@file_put_contents('cache/e_jslib_log', "----------\nno cache used - raw\n\n", FILE_APPEND);
|
||||
@@ -238,13 +290,13 @@ class e_jslib
|
||||
*/
|
||||
function set_cache($contents, $encoding = '', $lmodified = 0)
|
||||
{
|
||||
if (e107::getPref('syscachestatus'))
|
||||
if (!deftrue('e_NOCACHE') && e107::getPref('syscachestatus'))
|
||||
{
|
||||
$cacheFile = $this->cache_filename($encoding);
|
||||
if(!$lmodified) $lmodified = time();
|
||||
@file_put_contents($cacheFile, $contents);
|
||||
@chmod($cacheFile, 0775);
|
||||
@touch($cacheFile, $lmodified);
|
||||
if($lmodified) @touch($cacheFile, $lmodified);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -279,8 +279,10 @@ if (abs($_serverTime - $lastSet) > 120)
|
||||
* Drawback: each update may cause all server times to display a bit different
|
||||
*/
|
||||
echo "<script type='text/javascript'>\n";
|
||||
echo "SyncWithServerTime('{$_serverTime}', '{$_serverPath}', '{$_serverDomain}');
|
||||
</script>\n";
|
||||
echo " SyncWithServerTime('', '{$_serverPath}', '{$_serverDomain}');\n";
|
||||
//tdOffset disabled as it can't live together with HTTP_IF_NONE_MATCH (page load speed)
|
||||
//echo " SyncWithServerTime('{$_serverTime}', '{$_serverPath}', '{$_serverDomain}');\n";
|
||||
echo "</script>\n";
|
||||
}
|
||||
|
||||
//
|
||||
@@ -295,21 +297,16 @@ $page = ob_get_clean();
|
||||
|
||||
$etag = md5($page);
|
||||
|
||||
|
||||
if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
|
||||
// previously disabled or there is posted data
|
||||
if(!deftrue('e_NOCACHE') && empty($_POST))
|
||||
{
|
||||
$IF_NONE_MATCH = str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']);
|
||||
|
||||
if($IF_NONE_MATCH == $etag || ($IF_NONE_MATCH == ($etag."-gzip")))
|
||||
header("Cache-Control: must-revalidate", true);
|
||||
if (function_exists('date_default_timezone_set'))
|
||||
{
|
||||
header('HTTP/1.1 304 Not Modified');
|
||||
exit();
|
||||
date_default_timezone_set('UTC');
|
||||
}
|
||||
}
|
||||
|
||||
if(!defined('e_NOCACHE'))
|
||||
{
|
||||
header("Cache-Control: must-revalidate");
|
||||
$time = time()+ 365 * 86400;
|
||||
header('Expires: '.gmdate("D, d M Y H:i:s", $time).' GMT', true);
|
||||
}
|
||||
|
||||
$pref['compression_level'] = 6;
|
||||
@@ -330,7 +327,6 @@ if(varset($pref['compress_output'],false) && $server_support == true && $browser
|
||||
$page = gzencode($page, $level);
|
||||
header("Content-Encoding: gzip", true);
|
||||
header("Content-Length: ".strlen($page), true);
|
||||
echo $page;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -344,9 +340,23 @@ else
|
||||
}
|
||||
|
||||
header("Content-Length: ".strlen($page), true);
|
||||
echo $page;
|
||||
}
|
||||
|
||||
// should come after the Etag header
|
||||
if (isset($_SERVER['HTTP_IF_NONE_MATCH']))
|
||||
{
|
||||
$IF_NONE_MATCH = str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']);
|
||||
|
||||
if($IF_NONE_MATCH == $etag || ($IF_NONE_MATCH == ($etag."-gzip")))
|
||||
{
|
||||
header('HTTP/1.1 304 Not Modified');
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
// real output
|
||||
echo $page;
|
||||
|
||||
unset($In_e107_Footer);
|
||||
$e107_Clean_Exit=TRUE; // For registered shutdown function -- let it know all is well!
|
||||
?>
|
@@ -143,6 +143,24 @@ unset($e_headers);
|
||||
$e_js = e107::getJs();
|
||||
$e_pref = e107::getConfig('core');
|
||||
|
||||
// --- Load plugin Meta files - now possible to add to all zones! --------
|
||||
$e_meta_content = '';
|
||||
if (is_array($pref['e_meta_list']))
|
||||
{
|
||||
ob_start();
|
||||
foreach($pref['e_meta_list'] as $val)
|
||||
{
|
||||
if(is_readable(e_PLUGIN.$val."/e_meta.php"))
|
||||
{
|
||||
require_once(e_PLUGIN.$val."/e_meta.php");
|
||||
}
|
||||
}
|
||||
// content will be added later
|
||||
// NOTE: not wise to do e_meta output, use JS Manager!
|
||||
$e_meta_content = ob_get_contents();
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
// Register Plugin specific CSS
|
||||
// DEPRECATED, use $e_js->pluginCSS('myplug', 'style/myplug.css'[, $media = 'all|screen|...']);
|
||||
if (isset($eplug_css) && $eplug_css)
|
||||
@@ -246,13 +264,6 @@ echo "\n<!-- footer_theme_css -->\n";
|
||||
$e_js->renderJs('inline_css', false, 'css', false);
|
||||
echo "\n<!-- footer_inline_css -->\n";
|
||||
|
||||
|
||||
/*
|
||||
if((isset($pref['enable_png_image_fix']) && $pref['enable_png_image_fix'] == true) || (isset($sleight) && $sleight == true))
|
||||
{
|
||||
echo "<script type='text/javascript' src='".e_FILE_ABS."sleight_js.php'></script>\n\n";
|
||||
}
|
||||
*/
|
||||
//IEpngfix - visible by IE6 only
|
||||
// FIXME - disable this style block via JS for all GOOD browsers.
|
||||
if($e_pref->get('enable_png_image_fix') || (isset($sleight) && $sleight == true)) // FIXME - KILL this GLOBAL!
|
||||
@@ -275,8 +286,8 @@ if($e_pref->get('enable_png_image_fix') || (isset($sleight) && $sleight == true)
|
||||
//
|
||||
// E: Send JS all in once
|
||||
// Read here why - http://code.google.com/speed/page-speed/docs/rtt.html#PutStylesBeforeScripts
|
||||
// TODO - more work (zones, eplug_js, headerjs etc order)
|
||||
//
|
||||
// TODO - more work (zones, eplug_js, headerjs etc order, external JS/CSS)
|
||||
// TODO - mobile support
|
||||
|
||||
|
||||
// [JSManager] Load JS Includes - Zone 1 - Before Library
|
||||
@@ -284,9 +295,8 @@ e107::getJs()->renderJs('header', 1);
|
||||
e107::getJs()->renderJs('header_inline', 1);
|
||||
|
||||
// Send Javascript Libraries ALWAYS (for now)
|
||||
//FIXME: [JS Manager] - build URL, disable core JS, option to use external sources (google)
|
||||
$hash = md5(serialize(varset($pref['e_jslib'])).serialize(varset($THEME_JSLIB)).THEME.e_LANGUAGE.ADMIN).'_front';
|
||||
echo "<script type='text/javascript' src='".e_FILE_ABS."e_jslib.php?{$hash}'></script>\n";
|
||||
$jslib = e107::getObject('e_jslib', null, e_HANDLER.'jslib_handler.php');
|
||||
$jslib->renderHeader('front', false);
|
||||
|
||||
// [JSManager] Load JS Includes - Zone 2 - After Library
|
||||
e107::getJs()->renderJs('header', 2);
|
||||
@@ -329,13 +339,13 @@ else
|
||||
// TODO - convert it to e107::getJs()->header/footerFile() call
|
||||
if (!USER && ($pref['user_tracking'] == "session") && varset($pref['password_CHAP'],0))
|
||||
{
|
||||
if ($pref['password_CHAP'] == 2)
|
||||
{
|
||||
if ($pref['password_CHAP'] == 2)
|
||||
{
|
||||
// *** Add in the code to swap the display tags
|
||||
$js_body_onload[] = "expandit('loginmenuchap','nologinmenuchap');";
|
||||
}
|
||||
echo "<script type='text/javascript' src='".e_FILE_ABS."chap_script.js'></script>\n";
|
||||
$js_body_onload[] = "getChallenge();";
|
||||
$js_body_onload[] = "expandit('loginmenuchap','nologinmenuchap');";
|
||||
}
|
||||
echo "<script type='text/javascript' src='".e_FILE_ABS."chap_script.js'></script>\n";
|
||||
$js_body_onload[] = "getChallenge();";
|
||||
}
|
||||
|
||||
//headerjs moved below
|
||||
@@ -343,15 +353,15 @@ if (!USER && ($pref['user_tracking'] == "session") && varset($pref['password_CHA
|
||||
// Deprecated function finally removed
|
||||
//if(function_exists('core_head')){ echo core_head(); }
|
||||
|
||||
// [JSManager] Load JS Includes - Zone 3 - After e_plug/theme.js, before e_meta and headerjs()
|
||||
// [JSManager] Load JS Includes - Zone 3 - After e_plug/theme.js, before headerjs()
|
||||
e107::getJs()->renderJs('header', 3);
|
||||
e107::getJs()->renderJs('header_inline', 3);
|
||||
|
||||
// [JSManager] Load JS Includes - Zone 4 - Just before e_meta, after headerjs
|
||||
// [JSManager] Load JS Includes - Zone 4 - After headerjs
|
||||
e107::getJs()->renderJs('header', 4);
|
||||
e107::getJs()->renderJs('header_inline', 4);
|
||||
|
||||
// [JSManager] Load JS Includes - Zone 5 - After headerjs, just before e_meta, e107:loaded trigger
|
||||
// [JSManager] Load JS Includes - Zone 5 - End of header JS, just before e_meta content and e107:loaded trigger
|
||||
e107::getJs()->renderJs('header', 5);
|
||||
e107::getJs()->renderJs('header_inline', 5);
|
||||
|
||||
@@ -359,17 +369,8 @@ e107::getJs()->renderJs('header_inline', 5);
|
||||
// F: Send Meta Tags, Icon links
|
||||
//
|
||||
|
||||
// --- Load plugin Meta files --------
|
||||
if (is_array($pref['e_meta_list']))
|
||||
{
|
||||
foreach($pref['e_meta_list'] as $val)
|
||||
{
|
||||
if(is_readable(e_PLUGIN.$val."/e_meta.php"))
|
||||
{
|
||||
require_once(e_PLUGIN.$val."/e_meta.php");
|
||||
}
|
||||
}
|
||||
}
|
||||
// --- Send plugin Meta --------
|
||||
echo $e_meta_content; // e_meta already loaded
|
||||
|
||||
//
|
||||
// G: Send Theme Headers
|
||||
|
Reference in New Issue
Block a user