Доработка RSS потока

В RSS до cut

Почти сразу, как поставил движок, передо мной встал вопрос: как отдавать в rss долько до кут? Не хотелось мне отдавать полные топики в ленту, т.к. материалы можно почитать на сайте, а школьникам лентяям отрезать возможность что-то полезное оттуда грабить.

Теперь это решение кажется уже довольно простым. Достаточно в экшене ActionRss.class.php в одной из функций (например RssGood) изменить одну строку на:

$item['description']=$oTopic->getTextShort();


Последние материалы блога в rss

Тут же вылезла проблема, что прочитав анонс пользователю ну совершенно некуда кликнуть. Что согласитесь — форменный бардак. Решил, что нужны «читать далее» и «последние посты топика». Теперь в rss канале футер анонса выглядит так:



Тут порядок такой. В том же файле в той же функции вставлем после:

foreach ($aTopics as $oTopic){


Этот код:

$aFooter="";
$aMyBlogId=$oTopic->getBlogId();
$aMyResult=$this->Topic_GetTopicsByBlogGood($this->Blog_GetBlogById($aMyBlogId),0,1,3);
$aMyTopics=$aMyResult['collection'];
foreach ($aMyTopics as $oMyTopic){
  $aFooter=$aFooter.'<li><a href='.$oTopic->getUrl().'>'.$oMyTopic->getTitle().'</a></li>';
}


А ту переменную, что мы уже меняли выше, заменяем на:

$item['description']=$oTopic->getTextShort().'

<a href='.$oTopic->getUrl().'>читать полностью</a>

<b>Последнее из блога:</b> <a href='.$oTopic->getBlogUrlFull().'>'.$oTopic->getBlogTitle().'</a><br /><br /><ul>'.$aFooter.'</ul>';


Вот собственно и все. У кого есть мысли по поводу развития темы дополнений в rss, пишите — обсудим.

Рабочий пример как обычно можно увидеть на TechFuture RSS — в данном случае в rss хороших топиков.

UPD: Исправлены ошибки, дополнен код.

12 комментариев

avatar
Поправь ссылку на свой сайт %)
avatar
+ кат поставь.
avatar
Не, не так уж и много написано. Я подумал и решил без ката ;)
avatar
Угу, пасиб за наводку.
avatar
Очень правильный пост! В ЛайвСтрит обязательно должно быть такое! Т, е в РСС должен выводиться лишь часть постинга, затем ссылка Читать Далее! — это обязательно по моему!

Остальное — Последнее из блога — не так важно по моему и не приоритетно для многих, но если бы это было опциально, я думаю это был бы только плюс!

Кстати а как можно только в РСС — вставить рекламу? Чтобы только внутри РСС например были баннеры?
avatar

$item['description']=$oTopic->getTextShort().'<br /><a href="reklamniy-link">реклама</a>';
Или же код баннера.
avatar
Совершенно верно. Или так или предварительно собрать нужное в отдельной переменной и прицепить к анонсу.
avatar
Почему не в Tips & tricks? :)
  • Carw
  • 0
avatar
Ибо эксперимент. Щас на публикациях в личный здесь решу, что же мне делать с публикациями в личный у себя ;) Ведь писать в общий «университеты россии» это далеко не то же самое, что писать в «блог им. мгту баумана» например.
avatar

Если вдруг кто воспользовался — предупреждаю, что в коде и работе предложенного мной решения есть ошибки. Сейчас в посте я все поправил. Кратко суть:

$aMyBlogId=$oTopic->getBlogOwnerId();
Оказалось полным бредом и заменено на:
$aMyBlogId=$oTopic->getBlogId();

Так же перед строкой
foreach ($aMyTopics as $oMyTopic){
необходимо вставить
$oFooter="";
Еще правильно прописал путь к топику при формировании $oFooter.
avatar
Интересно, а это будет работать с новой версией ЛС?
avatar
Скорее всего как только выйдет новая версия я сделаю обзор по своим изменениям. Т.к. все равно буду на новый лад переделывать.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.