staleo |
|
---|---|
Здравствуйте, Никак не могу победить время, которое плагин RSS выводит тегом {RSS_ROW_DATE}. Сейчас выводится вот что: <pubDate>Tue, 21 Feb 2012 09:01:00 +0000</pubDate>, хотя в datas/config.php проставлено date_default_timezone_set('Europe/Moscow');, то есть вывод всего времени должен идти с корректировкой +0400. Он, собственно говоря, и выходит с такой корректировкой, например, в страницах, а в RSS — никак. Как тут поступить, не подскажете? Добавлено 19 часов спустя: Неужели нет решения? Ну откуда-то эти +0000 все же берутся же! |
|
This post was edited by staleo (2012-02-26 22:19, 12 years ago) |
Dayver |
|
---|---|
Наверное потому что в страницах дату генерит котовская функция ... 'DATE' => cot_date($date_format, $page_data['page_date']), ... а в RSS не так(нативная пхп-шная) ... $items[$i]['pubDate'] = date('r', $row['page_date']); ... Если заменить на ... $items[$i]['pubDate'] = cot_date('r', $row['page_date']); ...
может случится щастье, а может и нет Pavlo Tkachenko aka Dayver
|
Trustmaster |
|
---|---|
Проблема несколько глубже. Cotonti использует временную зону GMT по умолчанию и не позволяет её изменять, поскольку все даты в базе хранятся именно в этой зоне. Смещение добавляется уже при отображении для каждого пользователя. Всё это замечательно работает, кроме date('r'), поскольку PHP не знает о временной зоне Cotonti. Приходится фиксить это вручную. Исправление уже на гите. May the Source be with you!
|
staleo |
|
---|---|
Спасибо, заработало! И не отходя от кассы: можно ли заставить RSS-овский .tpl подхватывать экстраполя? Мы за тикетом не постоим! Добавлено 2 дня спустя: В общем, всплыла еще одна большая засада. Мне вообще этот RSS-канал нужен исключительно для Яндекс.Новостей. Был сайт на Genoa, пока переводил на Сиену, Я.Новости выключили импорт с сайта. Ну ладно, думаю, потом обратимся, они включат назад. Все прекрасно заработало, проблема с часовым поясом решена, благодаря Дайверу и Трастмастеру. Пишу в Яндекс: подключайте, мол. А они: а почитайте наши новые требования к оформлению экспортного файла. Открываю требования и вижу:
Встречающиеся в тексте символы < > & ' " необходимо заменять на соответствующие элементы: Я нереально офигел от такой постановки вопроса. Ранее Я.Новости уже и так не удовлетворял самый простой задокументированный и старый как мир формат RSS-фида, и они заставляли туда пихать, например, этот свой дурацкий тег <yandex:full-text>. Поисковик должен сам подстраиваться под генераторов контента? Не, не слышал. Это пусть тупые Рамблер с Гуглом импортируют новости просто потому, что такие новости пишутся. А мы, Яндекс, — монстры рунета, а монстры рунета могут и не стесняться требовать в 2012 году экспортный файл. Ну да ладно, бог с ним с этим <yandex:full-text>, в конце концов мод RSS под Genoa был небольшой и на 2 минуты. Но сейчас! Сейчас Яндекс требует и элементы HTML-форматирования менять для экспортного файла. А у меня там, понятно, везде < /br> и все такое. И как с этим быть, я, откровенно говоря, не знаю абсолютно. У меня пока нет никакого другого решения, кроме как, — тс-с-с, — взять и от руки написать этот rss.php со всеми нужными тегами и всей фигней. Пусть они потом подключат, позаполнять файлик два-три дня, а потом бросить к чертовой матери. Но вдруг вы знаете, как сделать все красиво и автоматом? |
|
This post was edited by staleo (2012-02-26 22:20, 12 years ago) |
Dayver |
|
---|---|
Поскольку фид формируется посредством шаблона то не вижу никакой проблемы настоить его как только яндексу угодно. Если прочитать мануал по шаблонизатору http://www.cotonti.com/docs/ext/themes/cotemplate_statements то увидим раздел про Callbacks - тоесть внутри шаблона к переменной можно применить любую функцию .... ищем в мануале по пхп функцию которая делает из символов их в HTML сущности и ...... ииии все тока тс-с-с никому не расказывайте что все так просто что даже лезть в пхп файлы и что то хакать не нужно Добавлено вечность спустя: Кстати еще для просветления массам полезно знать что касательно ссылок то котовская функция cot_url умеет это делать(замену спец символов в их HTML сущности) автоматом если ее вызвать с 4-тым параметров равным true /** * Transforms parameters into URL by following user-defined rules. * This function can be overloaded by cot_url_custom(). * * @param string $name Module or script name * @param mixed $params URL parameters as array or parameter string * @param string $tail URL postfix, e.g. anchor * @param bool $htmlspecialchars_bypass If TRUE, will not convert & to & and so on. * @param bool $ignore_appendix If TRUE, $cot_url_appendix will be ignored for this URL * @return string Valid HTTP URL */ function cot_url($name, $params = '', $tail = '', $htmlspecialchars_bypass = false, $ignore_appendix = false) Pavlo Tkachenko aka Dayver
|
|
This post was edited by Dayver (2012-02-27 07:47, 12 years ago) |
esclkm |
|
---|---|
из собственного опыта: я вставляю все пользовательские функции в php файл темы оформления littledev.ru - мой маленький зарождающийся блог о котонти.
снижение стоимости программирования и снижение стоимости производства разные вещи. Первое можно скорее сравнить с раздачей работникам дешевых инструментов, чем со снижением зарплаты |
staleo |
|
---|---|
Решил проблему так: в rss.php строку #253 'RSS_ROW_DESCRIPTION' => cot_convert_relative_urls($item['description']), поменял на 'RSS_ROW_DESCRIPTION' => htmlspecialchars($item['description']), htmlspecialchars — это и есть функция, которая переводит все символы, которые могут быть интерпретированы как часть синтаксиса, в HTML-коды символов. Дайверу опять спасибо. :) Если я правильно понял, cot_convert_relative_urls конвертирует относительные урлы в абсолютные, а мне это не нужно, поэтому функцию выкинул. Кстати, а то, что текст новости называется RSS_ROW_DESCRIPTION — это точно не ошибка? А то можно спутать со названием поля DESC для страницы. Ну и опять к вопросу возвращусь: можно ли заставить RSS-овский .tpl подхватывать экстраполя? Дело в том, что Яндекс.Новости не хочет подсасывать картинки в тексте если они не вставлены в таком виде внутри <item>: <enclosure url="http://www.rossiyskie-novosti.ru/2003/03/25/yandex.jpg" type="image/jpeg"/> А это фигово. |
|
This post was edited by staleo (2012-02-27 22:15, 12 years ago) |
Dayver |
|
---|---|
Хаки - нехорошо (при первом же обновлении поймете), все же лучше было бы использовать колбекa в шаблоне. А то что модуль RSS не знаком с экстраполями - уже упущение надо бы тикет забабахать Pavlo Tkachenko aka Dayver
|
|
This post was edited by Dayver (2012-02-28 00:41, 12 years ago) |
Trustmaster |
|
---|---|
RSS_ROW_DESCRIPTION - не ошибка, в RSS этот тег <description> называется. Вот то, что мы там по умолчанию htmlspecialchars не применяем - это ошибка. May the Source be with you!
|
staleo |
|
---|---|
В том-то и штука, что в <description> именно транслируется не весь текст новости, а ее лид, краткое саммари, а полный текст выводится в теге <fulltext>. А в .tpl {RSS_ROW_DESCRIPTION} выводит полный текст страницы. |
Trustmaster |
|
---|---|
В спецификации RSS нет ни единого упоминания <fulltext>. Обычно используется description + обрезка по more. May the Source be with you!
|
jcrush |
|
---|---|
Смотрю разговор о Я.новостях... можно кстати жестко зону прописать в файле рсс. SEO блог: http://blog.stfw.ru/
|