Версия для печати
Оригинальная версия ( http://prestadev.ru/forum/tema-1296.html )

PrestaShop CMS :: Русская поддержка интернет-магазина PrestaShop > Дизайн, шаблоны > ХЕЛП!!


Разместил: svchost Время: 01-07-2010 17:04
адрес магазина ekomaster.net.ua

Не пойму откуда берется буква "а" перед всем контентом.
В исходном коде "а" стоит вообще первым символом на странице.
Уже все тпл-ы перелопатил, немогу найти откуда она


Разместил: YellowDuck Время: 01-07-2010 17:34
Скорее всего где-то кодировка сбилась, надо utf-8

Разместил: svchost Время: 01-07-2010 17:52
Странно, с остачей все ок.
Тупо вверху стоит буква "а" по центру
Вы думаете кодировка виновата ?

Разместил: newtc Время: 01-07-2010 18:06
Содержимое спрятано

Разместил: svchost Время: 01-07-2010 18:18
Я тож сразу полез в header.tpl, но никакой буквы а там не обнаружил
т.е. между </head>и<body {if $page_name}... ничего нет !?!

Разместил: svchost Время: 01-07-2010 18:21
тож сразу грешил на header.tpl, но между </head> и <body {if $page_name} пусто, а в исходном коде в браузере эта буква стоит аж перед этим: <!DOCTYPE html PUBLIC...
т.е. вообще в самом начале страницы.
При чем если выделить ее а потом смотреть код выделенного фрагмента (ФФ) то она стоит после тега <body>
как-то странно

Разместил: svchost Время: 01-07-2010 18:23
Цитата:( svchost @ 01-07-2010 13:21 Смотреть сообщение )
тож сразу грешил на header.tpl, но между </head> и <body {if $page_name} пусто, а в исходном коде в браузере эта буква стоит аж перед этим: <!DOCTYPE html PUBLIC...
т.е. вообще в самом начале страницы.
При чем если выделить ее а потом смотреть код выделенного фрагмента (ФФ) то она стоит после тега <body>
как-то странно

сори за дубляж

Разместил: svchost Время: 01-07-2010 18:24
Цитата:( svchost @ 01-07-2010 13:23 Смотреть сообщение )
Цитата:( svchost @ 01-07-2010 13:21 Смотреть сообщение )
тож сразу грешил на header.tpl, но между </head> и <body {if $page_name} пусто, а в исходном коде в браузере эта буква стоит аж перед этим: <!DOCTYPE html PUBLIC...
т.е. вообще в самом начале страницы.
При чем если выделить ее а потом смотреть код выделенного фрагмента (ФФ) то она стоит после тега <body>
как-то странно
сори за дубляж

И что еще интересно в админке тож вверху по центру буква а

Разместил: ors Время: 01-07-2010 18:31
Если буква стоит до начала текста, значит она выводится где-то в php коде. Причем это происходит либо в header.php, либо до его вызова.

Чтобы без отладки по-быстрому найти где это происходит вставляйте в код что-нибуль типа echo 'test'; и смотрите после или до test будет буква.

Если это происходит в админке, значит что-то не то в config/config.inc.php записали.


Сообщение отредактировано ors 01-07-2010 19:32 ...

Разместил: svchost Время: 01-07-2010 18:53
Спасибо!!
Способом echo 'test' нашел, что вывод злощастной буквы происходит
в init.php строкой: Tools::setCookieLanguage();
Подскажите кудаковырять дальше, спасибо

Разместил: ors Время: 01-07-2010 18:59
Дальше в Tools.php функция setCookieLanguage

Разместил: svchost Время: 01-07-2010 19:38
заметил еще одну зависимость
echo 'test' в config.inc.php выводит test до буквы и в админке и на морде
а echo 'test' в header.php и в init.php выводит test только на морде

Разместил: svchost Время: 01-07-2010 19:41
Вот виноватая функция:
(извините за навязчивлсть) что в ней может быть не так?

static public function setCookieLanguage()
{
global $cookie;

/* If language does not exist or is disabled, erase it */
if ($cookie->id_lang)
{
$lang = new Language(intval($cookie->id_lang));
if (!Validate::isLoadedObject($lang) OR !$lang->active)
$cookie->id_lang = NULL;
}

/* Automatically detect language if not already defined */
if (!$cookie->id_lang AND isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$array = explode(',', self::strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']));
if (self::strlen($array[0]) > 2)
{
$tab = explode('-', $array[0]);
$string = $tab[0];
}
else
$string = $array[0];
if (Validate::isLanguageIsoCode($string))
{
$lang = new Language(intval(Language::getIdByIso($string)));
if (Validate::isLoadedObject($lang) AND $lang->active)
$cookie->id_lang = intval($lang->id);

}
}

/* If language file not present, you must use default language file */
if (!$cookie->id_lang OR !Validate::isUnsignedId($cookie->id_lang))
$cookie->id_lang = intval(Configuration::get('PS_LANG_DEFAULT'));

$iso = Language::getIsoById(intval($cookie->id_lang));
@include_once(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php');
@include_once(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php');
@include_once(_PS_THEME_DIR_.'lang/'.$iso.'.php');
return $iso;

}

Разместил: svchost Время: 01-07-2010 20:06
если эту функцию вообще удалить из init.php все ок, буква пропадает и начинает нормально работать скачивание pdf счета из "моих заказов" (до этого TCPDF выводил ошибку связанную с выводом до заголовков (подозреваю что именно изза этой буквы)

Разместил: ors Время: 01-07-2010 20:24
На первый взгляд все в порядке. Попробуйте также найти при помощи echo 'test';
Цитата:
а echo 'test' в header.php и в init.php выводит test только на морде

Потому что в админке не используются эти файлы.

Разместил: svchost Время: 01-07-2010 20:34
вродь да, но без этой функции часть интерфейса выводится на английском языке

Разместил: svchost Время: 01-07-2010 21:00
похоже, что буква выводится это строчкой

@include_once(_PS_THEME_DIR_.'lang/'.$iso.'.php');

Разместил: svchost Время: 01-07-2010 21:06
хух блин!!!
НАШЕЛ - > оказалось тупо до слез
в lang/ru.php перед <?php стояла буква а т.е. так: а<?php

Извините все, кого напряг
Спасибо за помощь, без вас бы не разобрался

www.prestadev.ru