Форум русской поддержки Joomla!® CMS
01.05.2017, 00:53:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

При генерации XML пробел в первой строке

 (Прочитано 252 раз)
0 Пользователей и 1 Гость смотрят эту тему.
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« : 12.04.2017, 16:39:03 »

Доброго времени суток . Ghie помощи. Задача у меня сл : я генерирую карту сайта для самописного компонента (не получилось как то сдружить его с x-map). Ниже привожу код который должен генерировать XML страницу. При выполнении кода у меня в начале строки пробел что приводит к ошибке. Подскажите что это может быть - где зарыться мог баг. Смотрел в смежный файлах компонента - там лишних пробелов нет.

Код
	public static function sitemap() {
header('Content-type: text/xml; charset=utf-8');
// запрос в БД
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__zaim');
$query->where(' published  = 1 ');
$query->order('`id` DESC');
$db->setQuery($query, 100);
$list = $db->loadObjectList();
$map = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$map .= '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
foreach ($list as $key => $value) {
$map .= '<url>';
$map .= '<loc>https://zajm24online.ru/item/mfo_'.$value->id.'.html</loc>';
$map .= '<lastmod>2017-04-12T14:41:54Z</lastmod>';
$map .= '<changefreq>weekly</changefreq>';
$map .= '<priority>0.5</priority>';
$map .= '</url>';
}
$map .='</urlset>';
$map .='</xml>';
print($map);
die();
}  
 
Записан
fsv
Практически профи
*******

Репутация: +353/-2
Offline Offline

Пол: Мужской
Сообщений: 2466


« Ответ #1 : 12.04.2017, 17:38:24 »

Пример.
Показать текстовый блок
Записан
dmitry_stas
Профи
********

Репутация: +884/-6
Online Online

Сообщений: 9122



« Ответ #2 : 12.04.2017, 18:31:45 »

файл сохранен как utf8 без BOM?
Записан
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« Ответ #3 : 12.04.2017, 18:32:36 »

файл сохранен как utf8 без BOM?

да
Записан
dmitry_stas
Профи
********

Репутация: +884/-6
Online Online

Сообщений: 9122



« Ответ #4 : 12.04.2017, 23:03:58 »

значит вероятно где то раньше вывод есть. но тогда непонятно как у вас заголовки выставляются без ошибок. включите полный показ ошибок php, заголовок измените на text/html - что выведет?
Записан
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« Ответ #5 : 13.04.2017, 00:40:38 »

значит вероятно где то раньше вывод есть. но тогда непонятно как у вас заголовки выставляются без ошибок. включите полный показ ошибок php, заголовок измените на text/html - что выведет?

вот это

Код
 
 
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"><url><loc>https://zajm24online.ru/item/mfo_15.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_14.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_13.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_12.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_11.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_10.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_9.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_8.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_7.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_6.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_5.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_4.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_3.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_2.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://zajm24online.ru/item/mfo_1.html</loc><lastmod>2017-04-12T14:41:54Z</lastmod><changefreq>weekly</changefreq><priority>0.5</priority></url></urlset></xml>
 

при этом пробел в начале все равно есть.
Записан
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« Ответ #6 : 13.04.2017, 02:01:09 »

как оказалось пробел в начале строки формируется не зависимо от карты сайта. Однако в самом шаблоне никаких пробелов  нет. Плагины проклацал - то же не помогло (
Записан
robert
Профи
********

Репутация: +368/-14
Offline Offline

Пол: Мужской
Сообщений: 3955


« Ответ #7 : 13.04.2017, 02:12:14 »

Как вызывается страница карты сайта?
как оказалось пробел в начале строки формируется не зависимо от карты сайта.
Почему вы так решили?
Записан
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« Ответ #8 : 13.04.2017, 13:05:42 »

Как вызывается страница карты сайта?Почему вы так решили?
страница карты сайта вызывается обращением к методу в контроллере компонента. Отдельный вид не используется.

А решил я так потому что не на странице карты сайта, как оказалось, так же есть пробел в начале
Записан
dmitry_stas
Профи
********

Репутация: +884/-6
Online Online

Сообщений: 9122



« Ответ #9 : 13.04.2017, 13:13:16 »

99% utf8 с BOM. ну если конечно этот пробел вы не выводите сами.
Записан
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« Ответ #10 : 13.04.2017, 13:16:53 »

99% utf8 с BOM. ну если конечно этот пробел вы не выводите сами.

Самне вывожу, думаю может все таки где то какой то кусочек кода выводит. В общем пока решил тем что сохраняю карту в фаил на хосте, но все равно остается вопрос с тем пробелом и как тогда отследить что именно выводит его
Записан
dmitry_stas
Профи
********

Репутация: +884/-6
Online Online

Сообщений: 9122



« Ответ #11 : 13.04.2017, 13:21:58 »

Цитировать
Самне вывожу, думаю может все таки где то какой то кусочек кода выводит
ну я это и имею в виду, понятно что не специально вы выводите. но я все таки склоняюсь к BOM. или может быть в каком то файле вначале перед открытием <?php есть пробел

Цитировать
остается вопрос с тем пробелом и как тогда отследить что именно выводит его
пройтись по всем файлам по цепочке, которые участвуют в выводе, и проверить каждый
Записан
voron121
Давно я тут
****

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 222


Метод тыка и мата помогает в кодинге


« Ответ #12 : 13.04.2017, 13:54:33 »

ну я это и имею в виду, понятно что не специально вы выводите. но я все таки склоняюсь к BOM. или может быть в каком то файле вначале перед открытием <?php есть пробел
пройтись по всем файлам по цепочке, которые участвуют в выводе, и проверить каждый

в этом то и трабла : я уже прошелся - ни пробелов ни BOM символов. Если перейти на главную и после открыть инспектор кода то перед доктайп будет пустая строка -сл. где перед выводом шаблона чо то отрабатывает но что : там 100500 файлов которые могут косячить в перспективе. Sad

Плохо что нет метода своего рода пре-рендера страницы. Типа убирать косяки если они есть
Записан
Филипп Сорокин
Практически профи
*******

Репутация: +132/-4
Offline Offline

Пол: Мужской
Сообщений: 1690


« Ответ #13 : 13.04.2017, 15:11:54 »

Цитировать
Плохо что нет метода своего рода пре-рендера страницы. Типа убирать косяки если они есть
Вообще-то есть, но так не надо делать -- костыль получится. Необходимо устранить причину болезни, а не её симптомы.
Записан
robert
Профи
********

Репутация: +368/-14
Offline Offline

Пол: Мужской
Сообщений: 3955


« Ответ #14 : 13.04.2017, 16:28:27 »

страница карты сайта вызывается обращением к методу в контроллере компонента. Отдельный вид не используется.
Покажите код.
Пробел может быть не только перед открывающим тэгом <?php, но и после закрывающего тэга ?> (вообще не нужно ставить тэг ?>, если код несмешанный). Ну и как dmitry_stas писал, чаще всего виновата BOM.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet