Одним из пунктов, что я себе ставил задумывая этот блок — это список последних постов автора. Собственно сегодня тот день, когда это реализовалось.
Итак, в экшене 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.ru/blog/73.html
пост который я читаю: Блог им. paskalex → Некоторые важные факты о биодизеле
в блоке справа видим: ↓ Другие записи (1)
→ Блог им. paskalex / Некоторые важные факты о биодизеле
кстати, в случае, если у автора только одна опубликованная запись, логичнее было бы написать что-то вроде «Автор больше ничего не опубликовал»?
Думаю, что нет необходимости вводить какие-либо дополнительные «больше ничего не публиковал». Хотя, конечно, дело вкуса.
Что же касается фильтрации, то да — возможно. Логика такая: в шаблоне в той части где идет перебор можно сделать проверку ID текущего топика и ID топика из перебора и пропустить если есть совпадение.
Только учитывайте, что в приведенных мною примерах и файлах есть засада ;) В шаблоне в переменной $oTopic содержится текущий топик и в этой же переменной при переборе содержится один из топиков автора. Т.е. нужно переименовать переменную перебора.
Хак не поддерживается. Если вы не можете применить вышеприведенные знания к текущему шаблону сами — прошу прощения, ничем не могу помочь. А это собственно элементарно.
13 комментариев
Если я не ошибаюсь то
$aMyResult['count'];
должно вернуть тоже значение что и
$this->Topic_GetCountTopicsPersonalByUser($oTopic->getUserId(),1);
в твоем случае, проверь, если так то избавляемся от лишней выборки :)
P.S> спасибо, за указание меня в спасибах )
Можно как-то отфильтровать из списка последних постов автора тот пост, в котором находится читатель?
пример с вашего сайта
пост который я читаю:
Блог им. paskalex → Некоторые важные факты о биодизеле
в блоке справа видим:
↓ Другие записи (1)
→ Блог им. paskalex / Некоторые важные факты о биодизеле
кстати, в случае, если у автора только одна опубликованная запись, логичнее было бы написать что-то вроде «Автор больше ничего не опубликовал»?
Думаю, что нет необходимости вводить какие-либо дополнительные «больше ничего не публиковал». Хотя, конечно, дело вкуса.
Что же касается фильтрации, то да — возможно. Логика такая: в шаблоне в той части где идет перебор можно сделать проверку ID текущего топика и ID топика из перебора и пропустить если есть совпадение.
зы: Но это я так, из головы, не проверял…