Личные сообщения линейным диалогом, вместо древовидного.

День добрый, давно меня здесь не было.
Вопрос в том чтобы личные сообщения выглядели примерно так же как сообщения в FB, VK, и чтобы при отправлении нового сообщения пользователю с которым уже есть переписка, не создавалось новой переписки, но сообщение просто добавлялось в конец текущей переписки с этим человеком.
Нагуглуть решение не смог, очень надеюсь на вашу помощь, хотя бы в какую сторону копать.

PS: Alto CMS: 1.0.10.2

Похожие статьи


4 комментария

+1
«Плоский» вывод комментариев — это надо просто шаблон править.

А вот «склеивание» переписки — это нужно плагин писать. Но мне не очень понятна логика. Допустим, при создании письма, где один получатель, можно сделать запрос, чтоб найти, нет ли уже разговора между двумя. А если получатель не один? Движок ведь это позволяет. А если число участников меняется в процессе общения (добавляются новые участники или исключаются имеющиеся)? Не очень понятно, как в этом случае должно работать.
0
Давайте с малого начнем, править шаблон это понятно, но какие файлы править чтобы вывод комментариев к статьям остался таким же как был (древовидным)?

Склеивание нужно писать да, я это понима, направьте меня пожалуйста куда-нибудь где я могу узнать принцип написания плагинов для этой версии альто.

В случае если на текущий момент есть диалог с тем же количеством тех же участников которым собираешься написать, думаю просто добавлять в сообщение в тот же диалог, если нет, или там не все, то создавать новый. Но это потом, я бы начал с начала =)
Отредактирован:
+3
Ок, давайте с малого :)

Вывод разговоров выполняется в экшене ActionTalk. Поэтому стандартное расположение файлов шаблонов для этого экшена стоит искать в папке common/templates/skin/[skin_name]/tpls/actions/talk/.

Конкретно вывод одной беседы реализуется через action.talk.message.tpl. В конце этого файла идет подключение комментариев, вот этот код:
{if !$bNoComments}
         {include
         file='comments/comment.tree.tpl'
         iTargetId=$oTalk->getId()
         sTargetType='talk'
         iCountComment=$oTalk->getCountComment()
         sDateReadLast=$oTalkUser->getDateLast()
         sNoticeCommentAdd=$aLang.topic_comment_add
         bNoCommentFavourites=true}
{/if}
Т.е. тут идет подключение файла comments/comment.tree.tpl. Это значит, что если никаких переопределний не было сделано, то будет подключен файл common/templates/skin/[skin_name]/tpls/comments/comment.tree.tpl.

Если хочется сделать свой собственный вывод комментариев к беседе, то лучше всего создать новый шаблонный файл для вывода комментариев, например, comment.talk.tpl и подключать в action.talk.message.tpl его. И, соответственно, его и править.

Только прежде, чем вносить любые изменения в шаблонные файлы, надо сначала создать собственный скин. Например, скопировать common/templates/skin/experience в common/templates/skin/myskin и там уже править.
0
Спасибо большое! теперь с этим все понятно и просто :)
Можно двигаться дальше, подскажите пожалуйста как сделать чтобы при отправке нового сообщения пользователю с которым уже есть переписка оно добавлялось в конец существующей переписки?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.