MaxHub
Служба Заботы MaxSite CMS

Проблема с кодировкой или валидностью фида RSS

Вопросы-ответы / 1 августа 2017

Здравствуйте!

В старых версиях Maxsite сайт выдает фид в таком виде, что Google Chrome не может его нормально отобразить. На прикрепленной картинке видно, что хром не распознает тип данных и неправильно отображает кодировку. Можете сами открыть и убедиться по ссылке: http://it-dude.ru/feed

Для сравнения откройте вот этот фид: https://habrahabr.ru/rss/best/

Так должен отображаться корректный фид.

Я никак не могу понять чем отличаются эти два фида и почему хром не может правильно отобразить фид от Макссайта.

Версия Maxsite CMS 0.861

PS: Если сохранить фид макссайта как файл и открыть его в Notepad++, то этот текстовый редактор отображает содержимое корректно. Если файл файл сохранить из редактора, удалив расширение файла, то и хром начинает отображать его правильно. Подозреваю, что проблема в кодировке. Но куда копать дальше не понимаю, прошу вашей помощи.

Комментариев: 6
  1. Андрей, а попробуй изучить http-заголовки - возможно там передаётся неправильная кодировка. А потом решим, что с этим делать.

  2. Илья, спасибо за ответ!

    Посмотрел заголовки. Очень похоже, что проблема может быть в заголовке "Content-Type"

    На хабре:

    Content-Type: text/xml; charset=utf-8

    На макссайт:

    Content-Type: application/rss+xml

    Сейчас пытаюсь понять где и как можно изменить этот заголовок.

    Скрины заголовков:

    https://gyazo.com/80b673d8a1e20e492e094108421b012c

    https://gyazo.com/3696fd6c84c7099612648886b5a3f01a

  3. Нашел в папке \applicatio\maxsite\shared\type\feed четыре файла:

    category.php

    comments.php

    home.php

    page.php

    В них, в первых строках задаются заголовки:

    header('Content-type: text/html; charset=utf-8');
    header('Content-Type: application/rss+xml');

    Но если что-то меняю, то страница перестает грузится, либо ничего не меняется. Пока не понял, как правильно переделать.

  4. И непонятно, почему из этих двух заголовков хром видит только второй.

  5. В них, в первых строках задаются заголовки:

    Да, увидел. Очень странно. Так то это ошибка (ибо задаётся один и тот же параметр) - должен быть только один и с кодировкой. Всегда работает последнее объявление. По сути то, где нет кодировки.

    Но если что-то меняю, то страница перестает грузится

    Явный признак ошибки синтаксиса php - надо смотреть логи или включить вывод ошибок, чтобы проверить, что происходит.

    По идее, комментирование в начале одной из строк не должно создавать ошибки и в то же время http-заголовок должен поменяться.

    И непонятно, почему из этих двух заголовков хром видит только второй.

    Так так и должно быть - виден только последний. Так устроена работа с http-заголовками в пхп.

  6. Вроде разобрался.

    Оказалось, что заголовки для фида в старой версии Maxsite задаются в файлах:

    maxsite\templates\default\type\feed-category.php

    maxsite\templates\default\type\feed-comments.php

    maxsite\templates\default\type\feed-home.php

    maxsite\templates\default\type\feed-page.php

    Там есть строчки аналогичные приведенным выше в коментариях.

    header('Content-type: text/html; charset=utf-8');
    header('Content-Type: application/rss+xml');

    Я изменил их так:

    header('Content-type: text/xml; charset=utf-8');
    //header('Content-Type: application/rss+xml');

    Теперь Google Chrome нормально отображает фид RSS. Спасибо за подсказки!

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Вход / регистрация или войти без комментирования
  Имя и сайт используются только при регистрации

Авторизация MaxSiteAuth. Войти через loginza

(обязательно)