Joomla!3 删除tooltip

Joomla!3基于jQuery和bootstrap框架下的tooltip显示效果很漂亮,需要加载的文件太多,影响网站速度,在谷歌统计中,网页的平均加载速度是2.64秒。偶看一直在寻找一种简单的办法能够直接在模板或者后台配置中删除,但这些都无法完全删除jQuery、bootstrap框架和tooltip。

Joomla 3中使用 JHtml::_(‘bootstrap.tooltip’); 调用tooltip,在查看网站源代码可以发现以下代码:

  <script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
  <script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
  <script src="/media/jui/js/bootstrap.min.js" type="text/javascript"></script>
  <script type="text/javascript">
jQuery(document).ready(function()
				{
					jQuery('.hasTooltip').tooltip({"container": false});
				});
  </script>

这些代码在偶看设计的网站中是没有多大用处的,为了提高网站浏览速度,偶看必须将其删除。

通过搜索发现,整个源代码中含有

JHtml::_('bootstrap.tooltip');

有N多文件,没办法,只能修改调用文件。

偶看尝试修改核心调用文件,打开

\libraries\cms\html\bootstrap.php 第454行开始

	public static function tooltip($selector = '.hasTooltip', $params = array())
	{
		if (!isset(static::$loaded[__METHOD__][$selector]))
		{
			// Include Bootstrap framework
			static::framework();

			// Setup options object
			$opt['animation'] = isset($params['animation']) ? (boolean) $params['animation'] : null;
			$opt['html']      = isset($params['html']) ? (boolean) $params['html'] : null;
			$opt['placement'] = isset($params['placement']) ? (string) $params['placement'] : null;
			$opt['selector']  = isset($params['selector']) ? (string) $params['selector'] : null;
			$opt['title']     = isset($params['title']) ? (string) $params['title'] : null;
			$opt['trigger']   = isset($params['trigger']) ? (string) $params['trigger'] : null;
			$opt['delay']     = isset($params['delay']) ? (int) $params['delay'] : null;
			$opt['container'] = isset($params['container']) ? (int) $params['container'] : false;
			$opt['template']  = isset($params['template']) ? (string) $params['template'] : null;

			$options = JHtml::getJSObject($opt);

			// Attach tooltips to document
			JFactory::getDocument()->addScriptDeclaration(
				"jQuery(document).ready(function()
				{
					jQuery('" . $selector . "').tooltip(" . $options . ");
				});"
			);

			// Set static array
			static::$loaded[__METHOD__][$selector] = true;
		}

		return;
	}

修改为

	public static function tooltip($selector = '.hasTooltip', $params = array())
	{
		if (!isset(static::$loaded[__METHOD__][$selector]))
		{
			// Include Bootstrap framework
			//static::framework();

			// Setup options object
			$opt['animation'] = isset($params['animation']) ? (boolean) $params['animation'] : null;
			$opt['html']      = isset($params['html']) ? (boolean) $params['html'] : null;
			$opt['placement'] = isset($params['placement']) ? (string) $params['placement'] : null;
			$opt['selector']  = isset($params['selector']) ? (string) $params['selector'] : null;
			$opt['title']     = isset($params['title']) ? (string) $params['title'] : null;
			$opt['trigger']   = isset($params['trigger']) ? (string) $params['trigger'] : null;
			$opt['delay']     = isset($params['delay']) ? (int) $params['delay'] : null;
			$opt['container'] = isset($params['container']) ? (int) $params['container'] : false;
			$opt['template']  = isset($params['template']) ? (string) $params['template'] : null;

			$options = JHtml::getJSObject($opt);

			// Attach tooltips to document
			/*JFactory::getDocument()->addScriptDeclaration(
				"jQuery(document).ready(function()
				{
					jQuery('" . $selector . "').tooltip(" . $options . ");
				});"
			);*/

			// Set static array
			static::$loaded[__METHOD__][$selector] = true;
		}

		return;
	}

由于修改了Joomla 3的核心文件,大家在更新网站内核的时候要记得再次修改该文件。

整个网站的源码的首屏顿时干净了许多,对于网页的加载速度要通过谷歌统计观察几天才能有结果。

《Joomla!3 删除tooltip》有1个想法

发表评论