Всем привет!
Недавно уже создавал тему про непонятные разрывы при выводе шаблона. Тогда я так и не нашел их причину, но удалось их устранить перемещением некоторой части кода из одного файла в другой.
Теперь, совершенно внезапно, появились два новых пробела - один между шапкой и контент_топ, другой в самом верху, перед шапкой (отступ сверху~20px).
Проверил верстку - везде у блоков проставлены нулевые рамки и отступы, т.е теоретически шапка должна начинаться от верхушки страницы, без отступа.
Начал копать разметку через Opera Dragonfly, и вот что обнаружилось:
Обратите внимание, все содержание шапки документа (линки, метаданные, титл) выводится почему-то в блоке <body>, а <head> пустует. И, кстати, обнаружилось, что строка #text ufeff как раз и является причиной этого самого пробела(отступа) сверху.
Теперь, посмотрим что будет если изменить в настройках шаблон на стандартный опенкарт:
Как видно, все выводится корректно, никаких странных строк типа #text ufeff, загололовки и линки в <head>, основные блоки в <body>.
Казалось-бы, очевидно что проблема в верстке моего шаблона, но не тут-то было. Код шапки:
<?php if (isset($_SERVER['HTTP_USER_AGENT']) && !strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6')) echo '<?xml version="1.0" encoding="UTF-8"?>'. "n"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="<?php echo $direction; ?>" lang="<?php echo $lang; ?>" xml:lang="<?php echo $lang; ?>">
<head>
<title><?php echo $title; ?></title>
<base href="<?php echo $base; ?>" />
<?php if ($description) { ?>
<meta name="description" content="<?php echo $description; ?>" />
<?php } ?>
<?php if ($keywords) { ?>
<meta name="keywords" content="<?php echo $keywords; ?>" />
<?php } ?>
<?php if ($icon) { ?>
<link href="<?php echo $icon; ?>" rel="icon" />
<?php } ?>
<?php foreach ($links as $link) { ?>
<link href="<?php echo $link['href']; ?>" rel="<?php echo $link['rel']; ?>" />
<?php } ?>
<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/styles.css" />
<?php foreach ($styles as $style) { ?>
<link rel="<?php echo $style['rel']; ?>" type="text/css" href="<?php echo $style['href']; ?>" media="<?php echo $style['media']; ?>" />
<?php } ?>
<script type="text/javascript" src="catalog/view/javascript/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="catalog/view/javascript/jquery/ui/jquery-ui-1.8.16.custom.min.js"></script>
<link rel="stylesheet" type="text/css" href="catalog/view/javascript/jquery/ui/themes/ui-lightness/jquery-ui-1.8.16.custom.css" />
<script type="text/javascript" src="catalog/view/javascript/jquery/ui/external/jquery.cookie.js"></script>
<script type="text/javascript" src="catalog/view/javascript/jquery/colorbox/jquery.colorbox.js"></script>
<link rel="stylesheet" type="text/css" href="catalog/view/javascript/jquery/colorbox/colorbox.css" media="screen" />
<script type="text/javascript" src="catalog/view/javascript/jquery/tabs.js"></script>
<script type="text/javascript" src="catalog/view/javascript/common.js"></script>
<?php foreach ($scripts as $script) { ?>
<script type="text/javascript" src="<?php echo $script; ?>"></script>
<?php } ?>
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/ie7.css" />
<![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/ie6.css" />
<script type="text/javascript" src="catalog/view/javascript/DD_belatedPNG_0.0.8a-min.js"></script>
<script type="text/javascript">
DD_belatedPNG.fix('#logo img');
</script>
<![endif]-->
<?php echo $google_analytics; ?>
</head>
<body>
<div id="background_layer2">
<div id="main_block">
<div id="header">
<div id="magazin_menu">
<ul>
<li><a href="<?php echo $home; ?>"><?php echo $text_home; ?></a></li>
<?php foreach ($informations as $information) { ?>
<li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
<?php } ?>
<li><a href="<?php echo $contact; ?>"><?php echo $text_contact; ?></a></li>
</ul>
</div>
<div id="phone"></div>
<?php if ($logo) { ?>
<div id="logo"><a href="<?php echo $home; ?>"><img src="<?php echo $logo; ?>" title="<?php echo $name; ?>" alt="<?php echo $name; ?>" /></a></div><?php } ?>
<?php echo $cart; ?>
<?php if ($categories) { ?>
<div id="category_menu">
<ul>
<?php foreach ($categories as $category) { ?>
<li><?php if ($category['active']) { ?><a href="<?php echo $category['href']; ?>" class="active"><?php echo $category['name']; ?></a>
<?php } else { ?>
<a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>
<?php } ?></li><?php } ?>
</ul>
</div>
<?php } ?>
<div class="main_title_line_empty"></div>
<div id="search"><div id="txtsearch"><?php if ($filter_name) { ?>
<input type="text" name="filter_name" value="<?php echo $filter_name; ?>" />
<?php } else { ?>
<input type="text" name="filter_name" value="<?php echo $text_search; ?>" onclick="this.value = '';" onkeydown="this.style.color = '#000000';" />
<?php } ?></div><div class="button-search"></div></div>
</div>
<div class="mainarea">
При этом, совершенно точно могу сказать: 1. До тега <body> содержание шапки совершенно идентично содержанию в стандартном шаблоне. 2. Все открытые в шапке теги закрываются в файле footer.tpl.
Так в чем-же, черт возьми, проблема? Ну каким образом может код, заключенный в тег <head>, перемещаться в <body> при выводе?