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

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

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



Итак, в экшене ActionBlog.class.php в функциях вывода топика из коллективного и личного блогов вставлены следующие строки:

$aMyResult=$this->Topic_GetTopicsPersonalByUser($oTopic->getUserId(),1,0,1,5);
$aMyTopics=$aMyResult['collection'];
// получаем переменную с 5 последними топиками автора
$myCount=$aMyResult['count'];
// получаем количество опубликованных автором топиков всего

$this->Viewer_Assign('aMyTopics',$aMyTopics);
$this->Viewer_Assign('myCount',$myCount);
// отправляем данные в шаблон


В шаблоне же получилась следующая конструкция:

<h3 class="new_group_sections">Другие записи ({$myCount})</h3>
<div class="live_section">
{foreach from=$aMyTopics item=oTopic} 
// тут на каждом проходе имеем в $oTopic один из последних топиков
<div class="live_section_navtext_title">
<a href="{$oTopic->getBlogUrlFull()}" class="live_section_navtext_title_sec"> $oTopic->getBlogTitle()|escape:'html'}</a> / 
<a href="{$DIR_WEB_ROOT}/blog/{if $oTopic->getBlogUrl()}{$oTopic->getBlogUrl()}/{/if}{$oTopic->getId()}.html" class="live_section_navtext_title">{$oTopic->getTitle()}</a>
</div>
{/foreach}
</div>


В представленном коде нет некоторых спецсимволов типа стрелочек, т.к. с ними что-то вывод в code ведет себя не совсем корректно. И итоговые файлы не выкладываю, т.к. где-то в верстке там затык и в ИЕ блок чутка разъезжается. Что делать до сих пор не знаю.

Рабочий пример можно посмотреть например здесь — на сайте TechFuture ;)

UPD: Внесены изменения в экшен, теперь количество постов у автора всего определяется более оптимально.

зы: За помочь в разработке благодарю ort и особенно gran, спасибо!

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

avatar

Если я не ошибаюсь то
$aMyResult['count'];
должно вернуть тоже значение что и

$this->Topic_GetCountTopicsPersonalByUser($oTopic->getUserId(),1);
 
в твоем случае, проверь, если так то избавляемся от лишней выборки :)

P.S> спасибо, за указание меня в спасибах )
  • gran
  • +1
avatar
Угу, как раз сидел думал, как же этот каунт иначе достать ;) Все совершенно верно. Ща внесу и здесь изменения.
avatar
Добрый день!

Можно как-то отфильтровать из списка последних постов автора тот пост, в котором находится читатель?
пример с вашего сайта techfuture.ru/blog/73.html
пост который я читаю:
Блог им. paskalex → Некоторые важные факты о биодизеле

в блоке справа видим:
↓ Другие записи (1)
→ Блог им. paskalex / Некоторые важные факты о биодизеле


кстати, в случае, если у автора только одна опубликованная запись, логичнее было бы написать что-то вроде «Автор больше ничего не опубликовал»?
avatar
Добрый.

Думаю, что нет необходимости вводить какие-либо дополнительные «больше ничего не публиковал». Хотя, конечно, дело вкуса.

Что же касается фильтрации, то да — возможно. Логика такая: в шаблоне в той части где идет перебор можно сделать проверку ID текущего топика и ID топика из перебора и пропустить если есть совпадение.
avatar
спасибо, попробую пошаманить )
avatar
Только учитывайте, что в приведенных мною примерах и файлах есть засада ;) В шаблоне в переменной $oTopic содержится текущий топик и в этой же переменной при переборе содержится один из топиков автора. Т.е. нужно переименовать переменную перебора.

зы: Но это я так, из головы, не проверял…
avatar
а код измененного фрагмента можно?
avatar
Выложи пожалуйста готовый блок со всеми изменениями, из первой статьи получилось, а доработанный что то никак:(
avatar
Хак не поддерживается. Если вы не можете применить вышеприведенные знания к текущему шаблону сами — прошу прощения, ничем не могу помочь. А это собственно элементарно.
avatar
И не пишите пожалуйста по этому поводу в личку — бесполезно.
avatar
Как насчёт 4.2? арбайтен этот хак?
avatar
Работает)
avatar
Залейте все файлы, пожалуйста. Исходный архив недоступен.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.