Комментарии, улучшение?

#1 31 мая 2013 в 00:14
Можно ли сделать так, чтоб в комментариях в блоге, можно было как на форуме, при клике на ник, получить имя к кому обращаешься в комментарий? Немного сумбурно высказался laughВ общем вот эта опция
  1. <div><a class="post_userlink" href="javascript:addNickname(\''.$p['author'].'\');" title="'.$_LANG['ADD_NICKNAME'].'"/>'.$p['author'].'</a></div>';
И можно ли ее прикрутить к комментам в блоге?
Версия 1.10.1
#2 7 июня 2013 в 00:03
Видимо никому не нужно…
#3 7 июня 2013 в 01:29
Я задавал вопрос как сделать что бы при клике вообще имя писалось — у меня только undefinder пишет… — В общем я вообще без ответа остался
#4 7 июня 2013 в 16:22


Видимо никому не нужно...

Aleks Shultz

… к сожалению не так быстро😊
Если я правильно понял задачу, то надо сделать вот что:

1) находим файл: \components\comments\js\comments.js
правим функцию

вместо:
function addComment(target, target_id, parent_id){

заменяем на:
function addComment(target, target_id, parent_id, nickname){

и

вместо:
$.post('/components/comments/addform.php', {target: target, target_id: target_id, parent_id: parent_id}, function(data) {

меняем на:
$.post('/components/comments/addform.php', {target: target, target_id: target_id, parent_id: parent_id, nickname: nickname}, function(data) {

2) находим файл: \components\comments\addform.php
после сточки:
$smarty->assign('is_user', $inUser->id);

добавляем строчку:
$smarty->assign('is_user_name', $nickname);

3) заходим в шаблон \templates\_default_\components\
правим файлы:

com_comments_add.tpl

находим:

<div class="cm_editor">
<textarea id="content" name="content" class="ajax_autogrowarea" style="height:250px">$comment.content_bbcode|escape:'html'}</textarea>
</div>

заменяем на:

<div class="cm_editor">
<textarea id="content" name="content" class="ajax_autogrowarea" style="height:250px">{$is_user_name}{$comment.content_bbcode|escape:'html'}</textarea>
</div>

com_comments_list.tpl

находим:
<span class="cmm_author"><a href="{profile_url login=$comment.author.login}">{$comment.author.nickname}</a> {if $is_admin && $comment.ip}({$comment.ip}){/if}</span>

заменяем на:
<span class="cmm_author"><a href="javascript:void(0)" onclick="addComment('{$target|escape:'html'}', '{$target_id}', {$comment.id}, '{$comment.author.nickname}')" class="ajaxlink">{$comment.author.nickname}</a> {if $is_admin && $comment.ip}({$comment.ip}){/if}</span>

всё!

Что в итоге у нас получается, если в блоге есть комменты, жмакаем на автора коммента, как на картинке vasya


открывается окно сообщения куда добавляется Ник на который нажали:



вуаля😊будьте терпимее :))) Удачи.
#5 16 сентября 2015 в 23:44
Nemoi,

Спасибо, отличная инструкция!
Вы, правда, позабыли упомянуть, что нужно еще добавить в \components\comments\addform.php строку
  1. $nickname = cmsCore::request('nickname', 'str', '');
Я еще немного доработал com_comments_list.tpl

  1. <span class="cmm_author"><a href="javascript:void(0)" onclick="addComment('{$target|escape:'html'}', '{$target_id}', {$comment.id}, '[b]{$comment.author.nickname}[/b],')" title="{$LANG.ADD_NICKNAME}" class="ajaxlink">{$comment.author.nickname}</a> {if $is_admin && $comment.ip}({$comment.ip}){/if}</span>
Теперь никнейм вставляется болдовый и при наведении подсвечивается тайтл.

Но! Есть одно большое но.
При открытии формы добавления комментария курсор оказывается перед никнеймом.
Кто подскажет, как доработать \components\comments\js\comments.js, чтобы оно переводила курсор в конец строки, а еще лучше на новый абзац.

-------------------------------------------

Разобрался сам:


  1. function addComment(target, target_id, parent_id, nickname){
  2. $('.cm_addentry').remove();
  3. $('.cm_add_link').show();
  4. $link_span = $('#cm_add_link'+parent_id);
  5. old_html = $link_span.html();
  6. loading_img = '<img src="/images/ajax-loader.gif"/>';
  7. $link_span.html(loading_img);
  8. $.post('/components/comments/addform.php', {target: target, target_id: target_id, parent_id: parent_id, nickname: nickname}, function(data) {
  9.  
  10. if(data){
  11.  
  12. $("#cm_addentry"+parent_id).html(data).fadeIn();
  13. $('#content').focusToEnd();
  14. $().br;
  15. $link_span.html(old_html).hide();
  16. $('#submit_cmm').click(function() {
  17. $('#submit_cmm').prop('disabled', true);
  18. $('#cancel_cmm').hide();
  19. $('.submit_cmm').append(loading_img);
  20. var options = {
  21. success: showResponseAdd,
  22. dataType: 'json'
  23. };
  24. $('#msgform').ajaxSubmit(options);
  25. });
  26.  
  27. }
  28. });
  29.  
  30. }
  31. $.fn.focusToEnd = function() {
  32. return this.each(function() {
  33. var v = $(this).val();
  34. $(this).focus().val("").val(v);
  35. });
  36. };

  1. cmsPage::initTemplate('components', 'com_comments_add')->
  2. assign('user_can_add', $model->is_can_add)->
  3. assign('is_can_bbcode', $model->is_can_bbcode)->
  4. assign('do', $do)->
  5. assign('comment', isset($comment) ? $comment : array())->
  6. assign('is_user', $inUser->id)->
  7. assign('nickname', $nickname."
  8. ")->
  9. assign('cfg', $model->config)->
  10. assign('target', $target)->
  11. assign('target_id', $target_id)->
  12. assign('parent_id', $parent_id)->
  13. assign('user_subscribed', cmsUser::isSubscribed($inUser->id, $target, $target_id))->
  14. assign('can_by_karma', $can_by_karma)->
  15. assign('karma_need', $karma_need)->
  16. assign('karma_has', $inUser->karma)->
  17. assign('need_captcha', $need_captcha)->
  18. assign('bb_toolbar', isset($bb_toolbar) ? $bb_toolbar :'')->
  19. assign('smilies', isset($smilies) ? $smilies : '')->
  20. assign('notice', isset($notice) ? $notice : '')->
  21. display('com_comments_add.tpl');
  22.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.