[Обновлено 22.10.15] Выделение авторов в компонентах (обозначаем автора в комментариях)

+16
3.67K
Доброго времени, уважаемые любители инстанта!

Поскольку, нету времени на большее, выкладываю то, на что его хватило — выделение авторов статей, объявлений, блогов, топикстартеров на форуме. А так же, в придачу, микрохак выделения групп пользователей в комментариях. Плагины, увы, освоить частично не удается, частично нет времени. Потому, выкладываю как есть.

Небольшой момент — стили не наводил. Можно навести самому или подождать выходных. Будет немного больше времени, организую.

1. Выделение автора статьи, объявления, блога.

Открываем ccom_comments_list.tpl

В нужное место вставляем:
  1. {if $post.author_nickname==$comment.author.nickname}Автор блога{/if}
  2. {if $article.author==$comment.author.nickname}Автор статьи{/if}
  3. {if $item.user==$comment.author.nickname}Автор объявления{/if}
Можно через elseif оформить, кому как удобнее.
Куда именно — решать Вам. Можно под аватарку, а можно на аватарку. А можно просто некий блок выделить внутри этих if, и задать свой стиль. К примеру,

  1. <div id="cm_msg_{$comment.id}">
  2. {if $comment.show}
  3. {if $post.author_nickname==$comment.author.nickname}<div class="author_blog">{$comment.content}</div> /*добавлено*/
  4. {else}
  5. <a href="javascript:void(0)" onclick="expandComment({$comment.id})" id="expandlink{$comment.id}">{$LANG.SHOW_COMMENT}</a>
  6. <div id="expandblock{$comment.id}" style="display:none">{$comment.content}</div>
  7. {/if}
  8. </div>
2. Выделение топикстартера на форуме.

Открываем файл com_forum_view_thread.tpl

Аналогично к п.1.

  1. {if $thread.user_id == $post.user_id}ТС{else}комментатор{/if}
Там где хотите, выводите, или какой-то блок выводите в класс, дабы сообщение выделялось.

3. Выделяем комментарий в зависимости от группы пользователя.

Открываем файл components/comments/model.php

Строка 264
  1. $sql = "SELECT c.*,
заменяем на
  1. $sql = "SELECT c.*, g.alias AS galias,
или дописываем чего не хватает.
Строка 272
  1. LEFT JOIN cms_user_profiles p ON p.user_id = u.id
после нее вставляем
  1. LEFT JOIN cms_user_groups g ON u.group_id = g.id
Сохраняем, закрываем файл.
Открываем файл шаблона com_comments_list.tpl
К примеру, после строк 54-56
  1. {else}
  2. <td class="cmm_content" valign="top">
  3. {/if}
вставляем
  1. <div class="{$comment.galias}">
  2. <div id="cm_msg_{$comment.id}">
  3. {if $comment.show}
  4. {$comment.content}
  5. {else}
  6. <a href="javascript:void(0)" onclick="expandComment({$comment.id})" id="expandlink{$comment.id}">{$LANG.SHOW_COMMENT}</a>
  7. <div id="expandblock{$comment.id}" style="display:none">{$comment.content}</div>
  8. {/if}
  9. </div></div>
т.е., добавили новый блок
  1. <div class="{$comment.galias}"></div>
В админке в пользователях по умолчанию есть такие группы:
admin
guest
moderators
registered
editors

Открываем свой css-файл, и добавляем стили
  1. .admin {
  2. }
  3. .guest {
  4. }
  5. .moderators {
  6. }
  7. .registered {
  8. }
  9. .editors {
  10. }
Цвет фона, цвет шрифта, тени и т.п., на что хватит фантазии.

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

[UPDATE 22.10.2015]

Добавил стили для комментариев. Изменен вид самих комментариев + выведен автор комментария (автор статьи, блога, объявления). Заготовка есть, можно под свои требования изменить как душа пожелает.

Выделение по группам пользователей — на днях будет готово.

Сделал 2 файла, один — файл шаблона комментариев, его надо поместить в папку templates/your_template/components/, другой — файл стилей, из него стили скопировать в файл стилей своего шаблона. Кнопки Ответить, Редактировать, Удалить — выведены в блок с датой и рейтингом, на него нужно навести мышкой. Пока подумываю, куда бы лучше вывести, чтобы было наглядно и удобно.

Иллюстрация

Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст


Иллюстрация

Спасибо за внимание. С уважением, Сергей.
0
Alexprofi Alexprofi 9 лет назад #
Я так понял, что это для 1-й ветки?
0
scanread scanread 9 лет назад #
Совершенно верно.
+1
Майкл Майкл 9 лет назад #
И как сие смотрится?
+2
scanread scanread 9 лет назад #
Весьма не плохо) Сразу видно, что в комментарии к статье, или к блогу, или к объявлению - отписал сам автор, который создал ту или иную запись. На форуме так же, видны ответы топикстартера. Порой, когда страниц много, не часто успеваешь запоминать, кто создал тему. А так, в самой теме наглядно по ответам все видно. Скажу так "на вкус и цвет товарищей нет". Одним нравятся мелкие красивости, другим - подавай все строго и выдержанно. Себе делал это все через css3-ленту, на аватарку с надписью "Автор или ТС".
+3
scanread scanread 9 лет назад #
Если поиграться со стилями, то можно сделать по разному, к примеру, вот так:

""


""


""


""


или еще как-то. Фантазии нет предела smile
0
Raiden Raiden 9 лет назад #
Отличная вещь!) Фича, достойная внедрения в следующий релиз))
""
+1
scanread scanread 9 лет назад #
Обновлены стили для комментариев + скриншоты.
+1
al955 al955 8 лет назад #
Спасибо, все получилось. А к комментам к фотографиям как реализовать?
+1
al955 al955 8 лет назад #
Разобрался. Для комментов к фото пишем

{if $photo.user_id == $comment.user_id}Автор фотографии{/if}
0
Александр Александр 6 лет назад #
Шикарная штука, не хватает только для стен юзеров и клубов добавить
0
MikeBol MikeBol 3 года назад #
Для второй ветки кто-нибудь делал подобное? В первую очередь интересует выделение в зависимости от группы пользователя.
0
MikeBol MikeBol 3 года назад #
Вроде так работает:
Модифицируем строку 35 файла templates\шаблон\controllers\comments\comment.tpl.php
Код PHP:
  1. <div id="comment_<?php echo $entry['id']; ?>" class="<?php if (in_array('5', $usr1['groups'])||($usr1['is_admin']==1)) { ?>moderatorcolor <?php } ?>comment<?php if($is_selected){ ?> selected-comment<?php } ?><?php if($entry['user_id'] && $target_user_id == $entry['user_id']){ ?> is_topic_starter<?php } ?>" <?php if ($is_levels) { ?>style="margin-left: <?php echo $level; ?>px" data-level="<?php echo $entry['level']; ?>"<?php } ?>>
В ней добавили фрагмент:
Код PHP:
  1. <?php if (in_array('5', $usr1['groups'])||($usr1['is_admin']==1)) { ?>moderatorcolor <?php } ?>
То есть для группы пользователей 5 и админов добавили стиль moderatorcolor.

В цикле
Код PHP:
  1. <?php foreach($comments as $entry){
после строчки
Код PHP:
  1. $no_approved_class = $entry['is_approved'] ? '' : 'no_approved';
добавили получение автора комментария
Код PHP:
  1. $usr1 = cmsCore::getModel('users')->getUser($entry['user_id']);
Также для украшения комментариев от админов и модераторов можно добавить надпись "Администрация сайта".
Для этого перед строчкой
Код PHP:
  1. <?php if(!$entry['is_deleted']){ ?>
  2. добавили
  3. <?php if (in_array('5', $usr1['groups'])||($usr1['is_admin']==1)) {?>
  4. <div class="moderator_title">
  5. Администрация сайта
  6. </div>
  7. <?php } ?>
css для класса "moderator_title", например, так:
Код PHP:
  1. .moderator_title {
  2. position: absolute;
  3. right: 10px;
  4. background-color: #3498db;
  5. padding: 3px;
  6. border-radius: 3px;
  7. color: white;
  8. }
Также полезная информация по ссылкам:
/forum/thread24137-1.html
/forum/thread26246-1.html

Еще от автора

[fix] Клубы, друзья - не корректная работа js в ICMS 1.10.3
Вот и мой первый блог и первая запись его. Пожалуй, начну с 2 маленьких мелочей, которые мало кто заметил в 10.3.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.