【问题标题】:Joomla wrong path to media directory causes long loadingJoomla错误的媒体目录路径导致长时间加载
【发布时间】:2014-07-31 22:53:44
【问题描述】:

以下 Joomla! 存在问题! 3.1 站点: http://www.kurapotheke-igls.at/

有两个css文件包含在:

 <link rel="stylesheet" href="//media/jui/css/bootstrap.min.css" type="text/css" />
 <link rel="stylesheet" href="//media/jui/css/bootstrap-responsive.css" type="text/css" />

这里的路径是错误的,前面有两个不应该存在的斜线。我用 YSlow 对其进行了测试,这两个文件导致了网站的极端加载时间。

奇怪的是,当我查看网站代码时,这两个文件包含了两次:

<link rel="stylesheet" href="http://www.kurapotheke-igls.at/media/jui/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="http://www.kurapotheke-igls.at/media/jui/css/bootstrap-responsive.css" type="text/css" />
<link rel="stylesheet" href="//media/jui/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="//media/jui/css/bootstrap-responsive.css" type="text/css" />

下面是index.php文件的代码:

<?php

defined('_JEXEC') or die;

$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$this->language = $doc->language;
// Add current user information
$user = JFactory::getUser();
// Add Bootstrap Framework
JHtml::_('bootstrap.framework');
JHtml::_('stylesheet', JUri::root() . 'media/jui/css/bootstrap.min.css');
JHtml::_('stylesheet', JUri::root() . 'media/jui/css/bootstrap-responsive.css');
// Add page class suffix
$itemid = JRequest::getVar('Itemid');
$menu = JFactory::getApplication()->getMenu();
$active = $menu->getItem($itemid);
$params = $menu->getParams( $active->id );
$pageclass = $params->get( 'pageclass_sfx' );


?>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>"     lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>" >

<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

<head>

<jdoc:include type="head" />

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

<!-- Stylesheets -->
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template;?>/icons/css/font-awesome.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template;?>/css/k2style.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template;?>/css/joomla.css" type="text/css" />
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/<?php echo $this->template;?>/css/template.css" type="text/css" />



<!-- Styles -->
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template;?>/css/styles/<?php echo $this->params->get('templateStyles'); ?>.css" type="text/css" />
<?php if (isset($_GET['style'])) { $styles = $_GET['style']; }
if (isset($styles)) { ?>
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/<?php echo $this->template;?>/css/styles/style<?php 
    if ($styles == '1') {echo '1';} elseif ($styles == '2') {echo '2';} elseif ($styles == '3') {echo '3';} elseif ($styles == '4') {echo '4';} elseif ($styles == '5') {echo '5';} elseif ($styles == '6') {echo '6';} elseif ($styles == '7') {echo '7';} elseif ($styles == '8') {echo '8';} elseif ($styles == '9') {echo '9';} elseif ($styles == '10') {echo '10';} ?>.css" type="text/css" /> <?php } 
    else { echo ""; } ?>

<!-- Google Font -->
<link href='http://fonts.googleapis.com/css?family=<?php echo ($this->params->get('googleFont')) ? $this->params->get('googleFont') : "Open+Sans"; ?>' rel='stylesheet' type='text/css' />
<link href='http://fonts.googleapis.com/css?family=<?php echo ($this->params->get('textLogoGoogleFont')) ? $this->params->get('textLogoGoogleFont') : "Open+Sans"; ?>' rel='stylesheet' type='text/css' />
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300' rel='stylesheet' type='text/css'>

<?php // Parameters
require("admin/params.php"); ?>

<?php // Google Analytics Tracking Code
if($analyticsCode) {echo '<script type="text/javascript">'; echo $analyticsCode; echo '</script>';}?>

<script src="<?php echo $this->baseurl ?>/templates/<?php echo $this->template ?>/js/backtop/backtop.js"></script>

</head>

你知道为什么 joomla 会包含这个错误的文件吗?

【问题讨论】:

  • 鉴于您正在加载框架,为什么要单独包含这些文件?

标签: php css joomla


【解决方案1】:

我遇到了同样的错误,在我的情况下,主页上发布的一个模块试图加载 bootstrap.min.css,但该模块的 php 文件拼写错误。该路径在媒体目录之前有一个斜线,生成指向 //media/jui... 的链接 尝试在您的模块代码中搜索“/media/jui/css/bootstrap.min.css”并删除斜杠。它对我有用。

JHTML::stylesheet('media/jui/css/bootstrap.min.css');

【讨论】:

    【解决方案2】:

    Addstylesheet 必须包含完整的 URL 路径,除非它是从模板链接到的。

    所以$doc-&gt;addStyleSheet(JUri::base().'media/jui/css/bootstrap.min.css'); 应该可以工作。

    参考:http://docs.joomla.org/J3.x:Adding_JavaScript_and_CSS_to_the_page

    我相信从模板你可以只使用 $this-> 和一个相对 URL,即$this-&gt;addStyleSheet('media/jui/css/bootstrap.min.css');

    参考:http://docs.joomla.org/JDocument/addStyleSheet

    【讨论】:

    • 嗨,现在我找到了解决方案。使用以下行: $doc->addStyleSheet($this->baseurl . '/media/jui/css/bootstrap.min.css'); $doc->addStyleSheet($this->baseurl . '/media/jui/css/bootstrap-responsive.css');它有效!
    【解决方案3】:

    尝试使用以下使用 Joomla 的 JHtml 方法的方法。

    所以替换这个:

    $doc->addStyleSheet('media/jui/css/bootstrap.min.css');
    $doc->addStyleSheet('media/jui/css/bootstrap-responsive.css');
    

    用这个:

    JHtml::_('stylesheet', JUri::root() . 'media/jui/css/bootstrap.min.css');
    JHtml::_('stylesheet', JUri::root() . 'media/jui/css/bootstrap-responsive.css');
    

    【讨论】:

    • 好的我改了,发现你的代码有错误:) ...你必须使用JUri::root() --> double ::。但这没有帮助。现在缺少包含正确 css 文件的两行,网站被“破坏”。安迪还有其他想法吗?
    • 啊,是的,抱歉,这里出错了:/ 更新了代码
    • 我认为应该是“样式表”而不是“脚本”。
    • 好的,现在你的代码可以工作了......但是长时间的加载时间仍然没有解决......我发现这两个文件被包含了两次 - 看看我的问题,我添加了一些东西
    • 这些文件很大。如果您决定使用 Bootstrap,则必须承受较长的加载时间。您可以缓存 CSS(Google 上的解决方案),还请记住,您还要导入多个 JS 文件,例如 jQuery、mootools 等。至于 CSS 文件的副本,您是否用我提供的代码替换旧代码?如果是这样,请尝试完全删除它,因为它们可能是从其他地方导入的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 2021-01-17
    • 2017-09-23
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    相关资源
    最近更新 更多