每当我尝试加载登录页面时<domain>/index.php?option=com_users&view=login
,我只会看到一个空白页面。当我查看交付的网站源代码时,html { display:none }
头部的 CSS 语句导致整个页面无法显示:
<head>
<base href="<domain>/index.php" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="generator" content="Joomla! - Open Source Content Management" />
<title>xxxxxxxxx</title>
<style type="text/css">
html { display:none }
</style>
...
所有其他页面均显示正常,没有任何问题。除此之外,它还与一个特殊模板相关:只要我激活其中一个标准模板,登录页面就可以正常工作。
我已经可以将其追踪到jdoc:include type="head"
代码部分,ìndex.php
并试图找出相应的代码head.php
来自哪里,但由于我没有任何 PHP 经验,所以我只能呆在这里。
有人能提示下一步该怎么做,或者(更好的是)给出解释或解决办法吗?
如果这很重要,我会使用 Joomla 2.5。
答案1
我是 PHP 开发人员。这可能是由于 libraries\joomla\html\html 下的 behavior.php 文件中的某些代码所致。
如果您的登录页面位于框架内,它似乎首先隐藏该页面,然后在浏览器完成页面(及其资产)加载后使用 JavaScript 显示该页面,并将网站脱离框架。
您的浏览器中是否禁用了 JavaScript?这可能会导致问题。
/**
* Break us out of any containing iframes
*
* @param string $location Location to display in
*
* @return void
*
* @since 11.1
*/
public static function noframes($location = 'top.location.href')
{
// Only load once
if (isset(self::$loaded[__METHOD__]))
{
return;
}
// Include MooTools framework
self::framework();
$js = "window.addEvent('domready', function () {if (top == self) {document.documentElement.style.display = 'block'; }" .
" else {top.location = self.location; }});";
$document = JFactory::getDocument();
$document->addStyleDeclaration('html { display:none }');
$document->addScriptDeclaration($js);
JResponse::setHeader('X-Frames-Options', 'SAME-ORIGIN');
self::$loaded[__METHOD__] = true;
}