+9.56
Рейтинг
14.76
Сила

Борис Анферов

Доработка 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: Исправлены ошибки, дополнен код.

Последние топики автора (доработка блока "Данные автора топика")

Первая статья — Блок с данными автора на странице топика

Одним из пунктов, что я себе ставил задумывая этот блок — это список последних постов автора. Собственно сегодня тот день, когда это реализовалось.


Читать дальше →

Нужна помощь - вывод 5 топиков пользователя.

В экшене пишу:
$myTopic=$this->Topic_GetTopicsPersonalByUser($oTopic->getUserId(),1,5,0,0);
// в надежде получить 5 последних топиков определенного юзера

$this->Viewer_Assign('myTopic',$myTopic);
// отправляю ее в шаблон


В шаблоне:
{foreach from=$myTopic item=myTopic} 
тест
{/foreach}


И в итоге получаю 2 раза «тест», а должно быть 5 раз. А если вместо «тест» написать {$myTopic->getBlogUrl()} — то вообще ошибки вылазят.

Где я не прав?

Блок с данными автора на странице топика

Помнится еще в начале своего прибывания на Хабре долго не мог понять, почему чтоб отметить автора необходимо сделать столько движений? Как не нравилось мне это — так и не нравится. Что собственно и стало причиной доработки, которой с вами делюсь. По ходу пьессы буду комментировать, что и к чему в итоге привело.

Задача: вывести при просмотре топика блок с информацией об авторе топика в сайдбаре справа следующего вида:


Читать дальше →

Как получить данные по автору топика?

Допустим есть код шаблона с такими включениями {$oUserCurrent->getSkill()} и {$oUserCurrent->getRating()} Необходимо заменить $oUserCurrent на пользователя с id = $oTopic->getUserId() Как это сделать? Помогите пожалуйста, всю голову сломал уже…

зы: конструкции типа getUserById($oTopic->getUserId())->getRating() не работают.

Отображение блока на странице со статьей

Собственно необходимо отображать дополнительный блок только на странице вида site.ru/blog/blog_name/bla-bla.html — т.е. непосредственно на странице статьи. При добавлении в экшен classes\actions\ActionBlog.class.php блок видно и на странице блога, списка блогов и т.д.

Вопрос: что делать? ;)

Ответ: Использовать в шаблоне блока конструкцию типа:

{if $oUserCurrent}        
{if $oTopic}
содержимое шаблона
{/if}
{/if}