Форум Ru-Mambo.ru

Ru-Mambo.ru => Syndicate & RSS & информеры & WAP - IRC => Тема начата: garcia от ёоЭм 20, 2005, 11:27:53



Название: RSS для Яндекса
Отправлено: garcia от ёоЭм 20, 2005, 11:27:53
Всем привет!
Не развлекался ли кто заточкой RSS трансляции под Яндекс? У них требования слегка отличаются от спецификации и реализации в Мамбо. Может поделитесь с товарищами по счастью (юзать Мамбу ;D) ?

Или хотя-бы присоветуйте, как лучше енто сделать.

Спасибо


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЭм 25, 2005, 06:13:03
RSS - это спецификация формата представления данных.

Никакой "заточки" под Яндекс не существует.
Если Яндекс требует (к примеру) чтобы в RSS-канале у материала была дата его публикации, а ее там нет, то это не проблема "заточки", а проблема того человека, который обслуживает сайт, т.к. он ни разу (!!!) не заглянул в соответствующий файл Мамбо, за этот экспорт отвечающий. Сам факт того, что этот вопрос задан говорит об этом.

В Мамбо полная (!!!) поддержка формата RSS, правда только в однобайтовой кодировке.

Единственное, что могу посоветовать: - загляните хоть раз в исходные файлы.


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЭм 26, 2005, 12:29:06
ОГРОМНОЕ Спасибо!  ;D (это по-моему первый ответ на мои вопросы в этом форуме)
Дело в том, что в требованиях Яндекса имеется например тэг "<yandex:full-text>" внутри которого по любому должен быть весь текст статьи для индексирования. Или например дата должна быть в виде
<pubDate>Tue, 12 Aug 2003 14:15:00 +0400</pubDate>, где +0400 - часовой пояс, а поправочное слагаемое.
А в исходник я лазил (com_rss\rss.php) - править класс rss '/includes/feedcreator.class.php' не хочется, т.к. остальное должно работать по спецификациям. Тем более в ПХП только начал вникать. Вот и спросил "(!!!)"
Кайф бы, чтобы добавилась опция у компонента, что-то типа:
http/mysite.ru/index2.php?option=com_rss&feed=Yandex&no_html=1
Ну что-ж, видно придется самому колупаться. Это и правда моя проблема.

Еще раз спасибо, AndyR!!! ;)


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЭм 26, 2005, 01:28:17
<pubDate>Tue, 12 Aug 2003 14:15:00 +0400</pubDate>, где +0400 - часовой пояс, а поправочное слагаемое.

Это вообще то описание формата времени по спецификации rfc822()
При чем здесь Яндекс ?

А если Яндекс будет просить им что-то давать в формате HTML, разве это значит, что это Яндексовский формат ?


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЭм 26, 2005, 11:22:54
AndyR, хорош убогих забижать  :'(!!!
Давай так: ты - крутой мамбер, я - ламер. Отлегло? Не вижу смысла обсуждать этот вопрос далее, раз мы его выяснили (тем более я его не задавал :-\).
Попробую спросить по другому (поскольку вижу опыта регистрации на Яндексе видимо не имеется):
Нужно реализовать еще один RSS2.0 канал, с небольшими изменениями (наличие тэга <yandex:full-text>) так чтобы "родной" RSS2.0 остался без изменений. К тому же хочется, чтобы этот новый канал брал статьи не из главной страницы (как все остальные), а из раздела новостей.
Сам-то я думаю, что надо:
1. Сделать из feedcreator.class.php свой класс, назвать его rssYandex к примеру
2. взять родной rss компонент, переделать его (используя rssYandex), переименовать и заинсталлить на сайт.
Может можно проще?


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЭм 27, 2005, 08:41:35
Нужно реализовать еще один RSS2.0 канал, с небольшими изменениями (наличие тэга <yandex:full-text>) так чтобы "родной" RSS2.0 остался без изменений.

Я еще раз повторяю, что никакого формата Yandex.RSS не существует, а существует только стандарт RSS, о чем сам Яндекс и пишет на тсраницах своего сайта:

 - http://news.yandex.ru/cooperation.html
  Формат трансляции: Трансляция данных осуществляется в формате RSS 2.0 (международный стандарт для синдикации веб-контента). http://backend.userland.com/rss

Пройдите по последней ссылке и найдите в описании формата хоть одно слово "Yandex"..........

Что пишет Яндекс дальше:

Уникальным идентификатором каждого сообщения (новости) является ее URL (адрес в интернете). По каждому URL должна открываться отдельная страница с полным текстом сообщения (ссылка на список новостей или главную страницу сайта - нарушение этого условия), при этом заголовок и начало текста должны быть видны в первом экране. Доступ к сайту издания должен быть быстрым и стабильным. Обязательные элементы каждого сообщения: заголовок, время/дата, URL, полный текст.


Сам Яндекс ведет трансляцию своих новостей в формате RSS-2.0, вот листинг одного из каналов:

Код:

- <item>
    <title>Каждый третий музыкальный диск во всем мире является удачной подделкой</title>
      <link>http://news.yandex.ru/yandsearch?cl4url=www.americaru.com/news/7160</link>
          <description>На конференции по защите авторских ....................
          </description>
    <pubDate>25 Jun 2005 15:30:42 +0400</pubDate>
    <guid>http://news.yandex.ru/yandsearch?cl4url=www.americaru.com/news/7160</guid>
  </item>


Найдёте в приведенном коде хоть одно <yandex:full-text>  ?

Требование о каком-то <yandex:full-text> является или вашим заблуждением из-за того, что вы не поняли существо ставящегося вопроса, или НАРУШЕНИЕМ СПЕЦИФИКАЦИИ RSS, что вряд ли возможно, учитывая авторитетность компании.


Название: Re: RSS для Яндекса
Отправлено: medium от ёоЭм 27, 2005, 09:47:02
Разговор о парсерах в том числе и этих тэгах
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3474&page=20


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЭм 27, 2005, 10:22:20
Еще раз обращаю ваше внимание на то, что тема вами НЕПРАВИЛЬНО ПОНЯТА

По спецификации RSS блок RSS-данных открывается тэгом (для версии 2):
 
 -  <rss version="2.0">

Так происходит в случае, если мы используем стандартную спецификацию RSS-формате.

В примере по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3474&page=20
приведенной здесь medium ЧИТАЙТЕ ВНИМАТЕЛЬНО !  разбирается совсем другой пример и другой заголовок, который обозначается как:

 - <rss xmlns:yandex="http://news.yandex.ru" version="2.0">

Если вы внимательно посмотрите, то обнаружите там параметр xmlns: , который буквально означает следующее:

 - Пространство имен этого документа (читай - названия тэгов) отличаются от стандартного RSS-2 и определяются по такому то адресу.

Здесь неявное нарушение спецификации RSS-2.0 , которое вполне допустимо по спецификации XML-формата.
Этот пример относится к вопросам "некорректной конкурентной борьбы" компании Яндекс, которая БЕЗ НЕОБХОДИМОСТИ просто заменила в части своих RSS-каналов стандартные наименования тэгов RSS своими собственными не изменив в сущности НЕИЧЕГО кроме наименования тэгов.


Еще раз повторяю, что экспорт RSS в Мамбо производится по стандартной спецификации формата RSS, а не по недуманной "спецификации Яндекса", которую компания использует для трансляции СОБСТВЕННЫХ каналов во вне. Нарушение Яндексом правил приличия в части "недобросовестная реклама" относятся к тому, что компания заявляет о трансляции RSS-каналов именно в RSS-2.0 формате, на деле проставляя собственные тэги.

Импорт же новостных лент Яндексом производится в RSS-2.0 формате, иначе как бы они могли понимать контент стандартных RSS-лент ?


Название: Re: RSS для Яндекса
Отправлено: medium от ёоЭм 27, 2005, 10:31:08
Совершенно верно, AndyR - yandex отступает от стандарта.
Другое дело, что несмотря на то, что такое стандарт, и кто добросовестно его несоблюдает, garcia хочет сделать вывод rss в таком виде - это его личное дело (и часто тех - кто занимается раскруткой сайтов).
Почему тема нами неправильно понята, я честно говоря, не понял - да и не суть важно.
Я rss не переписывал, но если кто-то до него доберется - тоже буду рад иметь преимущество хотя бы перед лицом yandex'a - лидером пока что в поиске рунета.


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЭм 27, 2005, 10:42:18
... garcia хочет сделать вывод rss в таком виде - это его личное дело (и часто тех - кто занимается раскруткой сайтов)....
...Я rss не переписывал, но если кто-то до него доберется - тоже буду рад иметь преимущество хотя бы перед лицом yandex'a - лидером пока что в поиске рунета.

Вот что спрашивал garcia в теме и как названа сама тема:

Цитировать
Не развлекался ли кто заточкой RSS трансляции под Яндекс? У них требования слегка отличаются от спецификации и реализации в Мамбо.

Причина в отступлении Яндекса от спецификации RSS.
В Мамбо трансляция RSS происводится в стандартной спецификации.
"Затачивание" Мамбо под Яндекс приведет к невозможности приема RSS каналов стандартными RSS-программами.

  -  т.е. Речь идет О ЯДРЕ Мамбо !!!

Как консультант по Мамбо настоятельно рекомендую НЕ ТРОГАТЬ ЯДРО. Реализуйте свои потребности с помощью компонентов, которые могут выполнять видоизмененные функции ядра не затрагивая само ядро.

Таким образом считаю, что тема фактически превращается в "Формат RSS для Яндекса" , что не имеет отношения к тематике этого форумаи превращается в офф-топик.


Название: Re: RSS для Яндекса
Отправлено: medium от ёоЭм 27, 2005, 10:59:18
AndyR, спасибо за разъяснения, правда у меня сложилось впечатление, что я, человек даже малозаинтересованный, тебя раздражаю :)
Смотри сам - парень разместил тему в модулях - значит ядро изначально коцать и не собирался. Свою заявку более менее определил, а в результате тему "Формат RSS для Yandex" поддерживал исключительно ты.
И правильно - толковой информации выдал много. (Мнение мое и необязательно правильное :))
Только не ругайся, пожалуйста. Я даже обещаю эту тему особо не поддерживать.


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЭм 27, 2005, 11:28:43
Только не ругайся, пожалуйста.

А я и не ругаюсь... это просто привычка ставить много знаков ? ! ! , поэтому тка и воспринимается...


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЭм 28, 2005, 03:19:05
Сорри за оффтоп - вот что Яндексы дали:

----------------------------
Приложение № 1
к Соглашению об информационном сотрудничестве,
опубликованному 27.04.2004г.
(http://partner.news.yandex.ru/agreement.pdf)
с изменениями от 11.11.2004г.

г.Москва            дата публикации 27.04.2004г.
            дата последнего изменения 21.12.2004г.

Экспорт Данных для размещения заголовков и аннотаций новостей на Яндекс.ру (в том числе на сайте Яндекс.Новости) осуществляется в XML-based (http://www.w3.org/TR/REC-xml) формате RSS 2.0 (http://blogs.law.harvard.edu/tech/rss). Ниже содержится описание используемых для экспорта Данных элементов RSS 2.0, необходимые комментарии и пример экспортного файла.

1. Описание элементов RSS 2.0, используемых для экспорта Данных
Корневым элементом RSS-файла является <rss>, атрибут version которого должен иметь значение 2.0: <rss version="2.0">.
...

2. Специальный элемент для экспорта полного текста сообщений

Кроме стандартных элементов RSS 2.0, для экспорта Данных используется специальный элемент <yandex:full-text>, который должен содержать полный текст сообщения. Этот элемент является обязательным. Полный текст сообщения необходим для индексирования поисковым роботом и на Яндекс.ру не размещается.
---------------------

...блаблабла... и примерчик:

----------------------
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0"
xmlns="http://backend.userland.com/rss2"
xmlns:yandex="http://news.yandex.ru">
    <channel>
        <title>Российские новости</title>
        <link>http://www.rossiyskie-novosti.ru/</link>
        <description>Ежедневная иллюстрированная московская общественно-политическая газета.</description>
        <image>
            <url>http://www.rossiyskie-novosti.ru/logo.gif</url>
            <title>Российские новости</title>
            <link>http://www.rossiyskie-novosti.ru/</link>
        </image>
        <item>
            <title>Яндекс ищет на президентском сайте</title>
            <link>http://www.rossiyskie-novosti.ru/2003/03/25/yandex.html</link>
            <description>Программный продукт Яndex.Site установлен на официальном сайте президента России</description>
            <author>Иван Петров</author>
            <category>Технологии</category>
            <enclosure url="http://www.rossiyskie-novosti.ru/2003/03/25/yandex.jpg" type="image/jpeg"/>
            <enclosure url=" http://www.rossiyskie-novosti.ru/video/100237" type="video/x-ms-asf"/>
            <pubDate>Sun, 29 Sep 2002 19:59:01 +0400</pubDate>
            <yandex:full-text>Для поиска по сайту www.kremlin.ru выбрана программа ...
            </yandex:full-text>
        </item>
    </channel>
</rss>
-------------------------

Э-эх, начал ваять компонент (по ходу разбираясь с пхп  8) ). Быстро вряд-ли получится.

Всем откликнувшимся - ОГРОМНЫЕ СПАСИБА!!!


Название: Re: RSS для Яндекса
Отправлено: nina111 от ёоЭм 29, 2005, 03:52:02
Кстати, для меня тема тоже очень актуальна. Если все же такой модуль появится, надеюсь, вы поделитесь с заинтересованной общественностью


Название: Re: RSS для Яндекса
Отправлено: smart от ёоЭм 29, 2005, 04:53:02
Всем привет!
Не развлекался ли кто заточкой RSS трансляции под Яндекс? У них требования слегка отличаются от спецификации и реализации в Мамбо ?
значит все там реально, был осенью платный заказ, и я такое делал...
все что там требуется сделать, это немного дописать класс в feedcreator.class.php и немного подправить существующий компонент com_rss, конечно хаки это не есть хорошо, зато быстро :)


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЭм 30, 2005, 12:11:37
 :o
Иди ты!!! Правда чели? ;D
Smart, будь другом, поделись хаком pls! А то на самом деле срочно надо, а пока я буду тупить с компонентом - власть на Кубе может смениться и нужда в героях вовсе отпадет  :D
Да, кстати, с днем рождения!!!


Название: Re: RSS для Яндекса
Отправлено: nina111 от ёоЭм 30, 2005, 06:45:38
Присоединяюсь к последней просьбе


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 10, 2005, 06:01:37
Smart! ОТЗОВИСЬ!!! Напиши хотя-бы "НЕ ДАМ! МОЕ!!!" чтоб не надеяться. :(


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 12, 2005, 01:58:41
Фух! <yandex:full-text> вроде воткнул.
Немало удивился не обнаружив в com_rss вывода даты, аффтора и др аттрибутов, заявленных в классе вывода RSS. Также удивило то, что выводятся только материалы с главной страницы  :(
Как тут "не трогать ядро?!" 8)
Воткнул вывод даты, а вот вывод картинок - тямы не хватает :'(
Там надо картинки совать в каждый <item> с помощью вот такой вот конструкции (насколько я понимаю это не претит спецификации RSS2.0):

<enclosure url="http://site.ru/images/myimage.jpg" type="image/jpeg"/>

Атрибут ентот (я так думаю) не поддерживается в feedcreator_class.php (так что компонент RSSXT не поможет - он тоже базируется на этом классе)

И все бы гарно, но надо парсить поле [images] из [mos_content]. Сильно туплю - в ПХП дятл ???.

Написал все ето - шоб народ видел - стараюсь, но не получается и из жалости помог.
ПОДЕЛИТЕСЬ ГОТОВЫМ! А ТО НАДРЫВАЮСЯ!!!


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЫм 12, 2005, 07:09:08
Немало удивился не обнаружив в com_rss вывода даты, аффтора и др аттрибутов, заявленных в классе вывода RSS....
Как тут "не трогать ядро?!

А вот так вот просто - "не трогать", поскольку ядро тут ни причем.
В файле "feedcreator.class.php" даже закомментированные примеры есть, как все это использовать, причем даже не один пример, а целых два. А удивление тому, что:

"Немало удивился не обнаружив в com_rss вывода даты"

... происходит от того, что просто не заглядывали внутрь файлов, в которых все расписано...


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 12, 2005, 02:32:50
А! Я понял! feedcreator.class.php - ядро, а com_rss не ядро, правильно? Очень трудно разобраться, где в стандартной поставке мамбы ядро а где не ядро. Надо открыть каждый файл и посмотреть: если есть примеры - ядро (грязными руками не лезть >:(), если их нет - не ядро - можно (и даже нужно!) коцать направо и налево. Только вот как не трогая ядра (feedcreator.class.php) использовать по нескольку тегов enclosure на один item (что заявлено в описании стандарта RSS2.0 на Вашем же, Andyr сайте) непонятно. Знаю, знаю, надо писать свой, почти такой же компонент. Лично я не вижу криминала в том, чтобы набычить существующий компонент, ессно с сохранением старой функциональности (а навороты, которые я клянчу у мамбо-сообщества вполне способны ужиться с существующей функциональностью). А вместо этого - "ядреное" опускалово. Абидна.
Можно например спросить у народа: А кому replacement для com_rss выводящий даты, авторов, категории, картинки, умеющий в yandex слать? Думаете скажут "не, нахрена нам покоцанное ядро"?
Вместо этого лучше-б пособили, раз уж вы с RSS так сблизились ;D


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЫм 12, 2005, 07:07:22
Лично я не вижу криминала в том, чтобы набычить существующий компонент, ессно с сохранением старой функциональности (а навороты, которые я клянчу у мамбо-сообщества вполне способны ужиться с существующей функциональностью). А вместо этого - "ядреное" опускалово. Абидна.

Есть определенные правила обращения с ядром, которые сводятся к следующему:

 - все существующие функции ядра должны сохраниться, т.е. оно должно быть работоспособно на существующем коде.

Можно дополнительно вводить функциональность, в вашем случае примерно так:

Если вы заметили, то feedcreator.class.php - это только класс, где разница между вресией 0.91 и 2.0 RSS отсутствует, вернее сводится вот в этому:

Код:
class RSSCreator20 extends RSSCreator091 {

    function RSSCreator20() {
        parent::_setRSSVersion("2.0");  // Вот тут вызывается обработчик родителя, а это RSSCreator091
    }
}

Таким же образом можно "добавить" свой класс и вызывать его по какому нить условию.
В этот класс скопировать класс RSSCreator091 и просто изменить в нем... названия тэгов...

Я на ваш адрес выслал свои файлы с комментариями к этим классам...
Сообщите, помогло, или нет?


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 13, 2005, 12:09:22
А, и еще одно. В RSSXT текст дескрипшна ставится вовнутрь [CDATA]. По идее так лучше? Это ж можно в тексте тэги всякие совать, нет?


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЫм 13, 2005, 12:26:55
А, и еще одно. В RSSXT текст дескрипшна ставится вовнутрь [CDATA]. По идее так лучше? Это ж можно в тексте тэги всякие совать, нет?

Удалил случайно ваше предыдущее сообщение...

Разница между с CDATA и без него только в том, что данные в CDATA не анализируются и не оптимизируются никак, что там есть, в таком виде и включится, хоть программный код пиши.


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 13, 2005, 01:28:11
Облом-с.
Прочитать хоть успели?

За файлы - спасибо. Вызывает антерес вопрос про необновление RSS файла, когда он берется по датчику, что описано в вашем файле. Есть варианты как бороться?

Так значит вариант с CDATA лучше? Форматирование сохраняется например, и протчая. Или зависит от приемника? Имеет смысл делать опцию, включающую CDATA?

Есть еще полно проблем, которые не могу решить, но это все от незнания ПХП, так что даже не знаю как толком спросить.
Вроде дело движется, если доделаю - куда кидать? - народ (один, вернее одна) интересовался.


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЫм 13, 2005, 03:05:15
Прочитать хоть успели?

Прочитать все успел, просто вместо "Цитата" нажал "Редактировать"

Вызывает антерес вопрос про необновление RSS файла, когда он берется по датчику, что описано в вашем файле. Есть варианты как бороться?

А никак. Давать ссылку только на канал через индексный файл.

Цитировать
Так значит вариант с CDATA лучше? Форматирование сохраняется например, и протчая. Или зависит от приемника? Имеет смысл делать опцию, включающую CDATA?

То, что внутри CDATA не анализируется и не оптимизируется никак, а выдается в том виде, в котором есть. К примеру - так можно тексты программ публиковать.

Цитировать
Есть еще полно проблем, которые не могу решить, но это все от незнания ПХП, так что даже не знаю как толком спросить.
Вроде дело движется, если доделаю - куда кидать? - народ (один, вернее одна) интересовался.

Пришлите сначала посмотреть, если все нормально, то просто выложим на ру-мамбо.


Название: Re: RSS для Яндекса
Отправлено: kos z от ёоЫм 13, 2005, 03:20:00
яндекс будет жрать ваши рсски только после заключения парнерского договора... Код <yandex:full-text> взять из Технического требования к экспорту новостей партнеров для Яндекса(он ходит только по рсскам партнеров). Можете даже посмотреть наверху страниц news.yandex.ru - Обработано источников столько-то (все источники заключали соглашение с яндексом).


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 14, 2005, 03:05:59
яндекс будет жрать ваши рсски только после заключения парнерского договора...
Ну да, именно так
Пришлите сначала посмотреть, если все нормально, то просто выложим на ру-мамбо.
Выслал!


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЫм 14, 2005, 03:59:57
Сразу вопрос по первому же файлу: feedcreator.class.hph - строка 3

 - error_reporting(E_ALL);

у юзера допустим стоят свои настройки на отображение ошибок, у меня (к примеру) - error_reporting = E_ERROR

Что будет, если строка 3 кода получит управление ?


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 14, 2005, 04:49:35
Ооп-с! Сорри, забыл выкосить.
Еще глюк с датой - во-первых в строке 235 (com_rss) лишняя $item_date = $row->publish_up; - надо выкосить, а во-вторых - дата видимо в непонятном для RSSCreatora формате - везде пишет 1970... как отформатировать?
Сории, просто очень спешил.


Название: Re: RSS для Яндекса
Отправлено: andyr от ёоЫм 14, 2005, 05:06:56
А давайте не будем спешить, а потестируйте сами, чтобы быть уверенными....

А про вопрос с UNIX-овской датой :)  читайте в тех файлах, которые мною присланы....

Даю наводку: "эра UNIX" началась в 1970 году...


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 14, 2005, 06:31:37
Ну канэшна!
У вас-то класс даты вообче для элементов не используется. Вы суете в feed дату прямо из MySQL
(А ЭТО ПРЯМОЕ НАРУШЕНИЕ СПЕЦИФИКАЦИИ RSS2,0!!!  >:( БЕБЕБЕ!!!)
А мне-то надо выводить дату исключительно в RFC-822! А чтобы передать классу даты собственно дату - надо ее сперва отконвертить в юниксовый формат например (0000-00-00 00:00:00 в цифирь) - чего я и не могу сделать - регулярные выражения в глаза увидел только вчера. Вот я блин и прошу помочь!
А про эру Юникса я в курсе.


Название: Re: RSS для Яндекса
Отправлено: smart от ёоЫм 14, 2005, 10:26:02
так, поскреб я по сусекам, и кое-что таки откопал... писалось давно и под 4.5.1, но будет по идее работать и в текущих версиях мамбы :)

вот это нужно добавить в конец файла feedcreator.class.php:

Код:
class YandexCreator extends FeedCreator {

function createFeed() {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= "<rss version=\"2.0\"\n";
$feed.= " xmlns=\"http://backend.userland.com/rss2\"\n";
$feed.= " xmlns:yandex=\"http://news.yandex.ru\">\n";
$feed.= " <channel>\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
$this->descriptionTruncSize = 500;
$feed.= " <description>".$this->getDescription()."</description>\n";
$feed.= " <link>".$this->link."</link>\n";
$now = new FeedDate();

if ($this->image!=null) {
$feed.= " <image>\n";
$feed.= " <url>".$this->image->url."</url>\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars($this->image->title),100)."</title>\n";
$feed.= " <link>".$this->image->link."</link>\n";
$feed.= " </image>\n";
}
if ($this->pubDate!="") {
$pubDate = new FeedDate($this->pubDate);
$feed.= " <pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n";
}
if ($this->category!="") {
$feed.= " <category>".htmlspecialchars($this->category)."</category>\n";
}

for ($i=0;$i<count($this->items);$i++) {
$feed.= " <item>\n";
$feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n";
$feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
$feed.= " <description>".$this->items[$i]->getDescription()."</description>\n";

if ($this->items[$i]->author!="") {
$feed.= " <author>".htmlspecialchars($this->items[$i]->author)."</author>\n";
}
if ($this->items[$i]->category!="") {
$feed.= " <category>".htmlspecialchars($this->items[$i]->category)."</category>\n";
}

if (is_array($this->items[$i]->images)) {
foreach($this->items[$i]->images as $image) {
if (function_exists( 'getimagesize' )) {
$type = @getimagesize($image);
} else {
$type = array();
}
$feed.= " <enclosure url=\"".$image."\" type=\"".$type['mime']."\"/>\n";
}
}

if ($this->items[$i]->date!="") {
$itemDate = new FeedDate($this->items[$i]->date);
$feed.= " <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n";
}
if ($this->items[$i]->fulltext!="") {
$feed.= " <yandex:full-text>".$this->items[$i]->fulltext."</yandex:full-text>\n";
}
$feed.= " </item>\n";
}
$feed.= " </channel>\n";
$feed.= "</rss>\n";
return $feed;
}
}

далле, в том же файле найти примерно такой код:
Код:
case "RSS2.0":
$this->_feed = new RSSCreator20();
break;

и после него добавить:
Код:
case "YA":
case "YANDEX":
$this->_feed = new YandexCreator();
break;

для правильной работы, нужно еще выставить вот эту константу в соответствии с вашей временной зоной:

Код:
define("TIME_ZONE","+03:00");

потом, открыть файл com_rss/rss.php
в нем, в самом конце, после кода:

Код:
// item info
$item->title = $item_title;
$item->link = $item_link;
$item->description = $item_description;
$item->source = $info[ 'link' ];

добавить:

Код:
$item->author = $row->author;

вроде бы все, ничего не забыл... RSS для Яндекса будет доступен по ссылке: /index2.php?option=com_rss&feed=YA&no_html=1


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 14, 2005, 04:20:10
Thanks!!!
Я правда уже и сам управился, помимо этого еще воткнул вывод картинок в статьях, секцию, дату в формате RFC-822. Но все равно спачибо! 8)


Название: Re: RSS для Яндекса
Отправлено: smart от ёоЫм 14, 2005, 04:29:06
Thanks!!!
Я правда уже и сам управился, помимо этого еще воткнул вывод картинок в статьях, секцию, дату в формате RFC-822. Но все равно спачибо! 8)
у меня картинки тоже выводятся, и дата выводится в формате rfc-822, с Яндекса проверяли rss сгенерированный этим хаком, и сказали что все нормально


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 15, 2005, 08:13:52
Видно ты чегой-то все-таки забыл (например код с запросом по итемвм, исправленья в коде класса FeedItem - я так думаю) - не пашет. Можешь мне на мыло метнуть сырцы, или в файловый архив?


Название: Re: RSS для Яндекса
Отправлено: smart от ёоЫм 15, 2005, 08:19:35
Видно ты чегой-то все-таки забыл (например код с запросом по итемвм, исправленья в коде класса FeedItem - я так думаю) - не пашет. Можешь мне на мыло метнуть сырцы, или в файловый архив?
хм... вроде ж больше ничего не менял... так, ну тогда посмотри аттач :)


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 15, 2005, 09:06:51
Не пойму, похоже не тот rss.php - там только автор добавлен, а fultextа и картинок немае ???
(а в feedcreator действительно есть и другие изменения - но вроде то че надо ;D)
Позырь pls!


Название: Re: RSS для Яндекса
Отправлено: smart от ёоЫм 15, 2005, 09:09:52
Не пойму, похоже не тот rss.php - там только автор добавлен, а fultextа и картинок немае ???
(а в feedcreator действительно есть и другие изменения - но вроде то че надо ;D)
Позырь pls!
млин, действительно не тот :) щас выложу правильный.

все, обновил аттач, в предыдущем посте :)


Название: Re: RSS для Яндекса
Отправлено: garcia от ёоЫм 15, 2005, 09:59:36
Наконец заканчивается эта длинная эпопея великих и героических свершений!!! :D
Smart! Огромныя респекты! Усе пашет!!! (тока кодировочку на win1251 перебил)


Название: Re: RSS для Яндекса
Отправлено: Zhabbervog от БХЭвпСам 30, 2005, 11:34:34
спасибо камрады! помогли ламеру


Название: Re:RSS для Яндекса
Отправлено: Mr.friction от ѕЪвпСам 31, 2005, 11:31:24
Люди добрые а если мне почти в таком формате ртранслируют новости? - ак их вывести по человечески?
единственное отличие - это не <yandex:full-text> а просто <full-text>.
Надо вывести дату титл и <full-text>собственно.


Название: Re:RSS для Яндекса
Отправлено: newpraktika от ґХЪРСам 11, 2005, 07:49:56
Люди добрые!
Поставил хак от smart
Заменил в feedcreator.class.php кодировку на windows-1251
Стало выводить кучей по-русски.

Но когда пытаюсь открыть через IE http://www.newpraktika.org/index2.php?option=com_rss&feed=YA&no_html=1
он ругается "Указанная кодировка не поддерживается. Ошибка при обработке ресурса ''http://www.newpraktika.org/index2.php?option=com_rss&feed=YA&no_html=1''.

А вот когда открываешь
http://joomlaportal.ru/index2.php?option=com_rss&feed=YA&no_html=1
Все красиво.
Как это исправить (чтобы и у меня было правильно)?
Заранее спасибо!


Название: Re:RSS для Яндекса
Отправлено: newpraktika от ґХЪРСам 12, 2005, 12:09:26


Теперь более или менее работает, но почему то не показывает new FeedDate(), category и pubdate.

Окончание кода feedcreator такое - что ему на этот раз не хватает?


/***************************************************************************/
/**
* RSSCreator10 is a FeedCreator that implements RDF Site Summary (RSS) 1.0.
*
* @see http://www.purl.org/rss/1.0/
* @since 1.3
* @author Kai Blankenhorn <kaib@bitfolge.de>
*/
class YandexCreator extends FeedCreator {
function createFeed() {
$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";
$feed.= "<rss version=\"2.0\"\n";
$feed.= " xmlns=\"http://backend.userland.com/rss2\"\n";
$feed.= " xmlns:yandex=\"http://news.yandex.ru\">\n";
$feed.= "<channel>\n";
$feed.= "<title>".FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</title>\n";
$this->descriptionTruncSize = 500;
$feed.= "<description>".$this->getDescription()."</description>\n";
$feed.= "<link>".$this->link."</link>\n";
$now = new FeedDate();
 
if ($this->image!=null) {
$feed.= "<image>\n";
$feed.= "<url>".$this->image->url."</url>\n";
$feed.= "<title>".FeedCreator::iTrunc(htmlspecialchars($this->image-
>title),100)."</title>\n";
$feed.= "<link>".$this->image->link."</link>\n";
$feed.= "</image>\n";
}
if ($this->pubDate!="") {
$pubDate = new FeedDate($this->pubDate);
$feed.= "<pubDate>".htmlspecialchars($pubDate->rfc822())."</pubDate>\n";
}
if ($this->category!="") {
$feed.= "<category>".htmlspecialchars($this->category)."</category>\n";
}
for ($i=0;$i<count($this->items);$i++) {
$feed.= "<item>\n";
$feed.= "<title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this-
>items[$i]->title)),100)."</title>\n";
$feed.= "<link>".htmlspecialchars($this->items[$i]->link)."</link>\n";
$feed.= "<description>".$this->items[$i]->getDescription()."</
description>\n";

if ($this->items[$i]->author!="") {
$feed.= "<author>".htmlspecialchars($this->items[$i]->author)."</author>\n";
}
if ($this->items[$i]->category!="") {
$feed.= "<category>".htmlspecialchars($this->items[$i]->category)."</
category>\n";
}
if (is_array($this->items[$i]->images)) {
foreach($this->items[$i]->images as $image) {
if (function_exists( 'getimagesize' )) {
$type = @getimagesize($image);
} else {
$type = array();
}
$feed.= "<enclosure url=\"".$image."\"
type=\"".$type['mime']."\"/>\n";
}
}
if ($this->items[$i]->date!="") {
$itemDate = new FeedDate($this->items[$i]->date);
$feed.= "<pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n";
}

$feed.= "<yandex:full-text>".$this->items[$i]->fulltext."</yandex:full-
text>\n";

$feed.= "</item>\n";
}
$feed.= "</channel>\n";
$feed.= "</rss>\n";
return $feed;
}
}
 
?>
 


Название: Re: RSS для Яндекса
Отправлено: MAGNATE от ДХТаРЫм 20, 2006, 04:15:52
Народ пришлите плиз установочную папку cache удалил блин. почта support@seva-group.ru Спасибо.


Название: Re: RSS для Яндекса
Отправлено: MAGNATE от ДХТаРЫм 20, 2006, 05:10:47
<?xml version="1.0" encoding="Windows-1251" ?>
- <!--  generator="FeedCreator 1.7.2 - Rewrited by Blagoslovenie.MSK.RU"
  -->
- <rss version="0.91">
- <channel>
  <title>Интернет новости</title>
  <description>Mambo site syndication</description>
  <link>http://seva-group.ru</link>       ???
  <lastBuildDate>Mon, 20 Feb 2006 17:57:40 +0100</lastBuildDate>
  <generator>FeedCreator 1.7.2 - Rewrited by Blagoslovenie.MSK.RU</generator>
- <image>
  <url>http://seva-group.ru/images/M_images/blank.png</url>
  <title>Powered by Mambo 4.5.2</title>
  <link>http://seva-group.ru</link>   ???
  <description>Mambo site syndication</description>
  </image>
  </channel>
  </rss>

Проблема Что то не так.   :o


Название: Re: RSS для Яндекса
Отправлено: nick32 от °ТУгбв 22, 2007, 01:03:00
Воспользовался данным хаком.
Однако, не выводится дата и категория.
Может кто подскажет в чём дело?

так, поскреб я по сусекам, и кое-что таки откопал... писалось давно и под 4.5.1, но будет по идее работать и в текущих версиях мамбы :)

вот это нужно добавить в конец файла feedcreator.class.php:
...


Название: Re: RSS для Яндекса
Отправлено: kamchatik от ёоЫм 15, 2009, 03:07:54
хм... поставил хак - выдает -
        This XML file does not appear to have any style information associated with it. The document tree is shown below.

как это побороть...

и второй вопрос - как бы изменить данный хак, чтобы материалы в rss брались из определенной категории?

да - внешний вид такой - http://byhaem.in.ua/index2.php?option=com_rss&feed=YA&no_html=1