Изменение формы комментария – Установка и настойка плагина – wpDiscuz Форум

Уведомления
Очистить все

[Решено] Изменение формы комментария  


oldland
Сообщения: 12
(@oldland)
Active Member
Присоединился: 4 недели назад

Здравствуйте! 

У меня, наверное, сложные для решения вопросы - простые я уже решила самостоятельно. 

1. Я добавила в форму кастомное поле Тема (заголовок комментария). Под textaria это поле выглядит по меньшей мере глупо... Есть ли возможность поднять кастомное поле над текстовым полем комментария (например, каким-нибудь хуком)?  Имя пользователя и email тоже хотелось бы видеть над текстовым полем комментария - так пользователям гораздо привычней. 

2. Наиважнейший для меня вопрос (если он не решится, мне, возможно, придется отказаться от столь совершенного и замечательного плагина как WPDiscuz). Мне нужно, чтобы кастомное поле "Тема" в ответе на комментарий заполнялась автоматически как "RE: Тема родительского комментария", чтобы у пользователя была возможность его изменить при желании. Так работают, например, комментарии в ЖЖ. Это не прихоть - число комментариев к некоторым постам бывает больше 700 и без четкого разделения на ветки, обозначенные темой, ориентироваться в них очень трудно, особенно на мобильных устройствах. 

3. Возможно ли перенести форму комментария вниз страницы, под выведенные комментарии - нам важно поощрить ответы в нужную ветку комментариев, а не создание новой ветки. Когда форма с комментариями находится наверху (да еще и с призывом присоединиться к дискуссии), пользователя так и подмывает создать новую ветку, и это создает большие проблемы модераторам. 

Метки темы
19 Ответов
Ольга
Сообщения: 44
Admin
(@olga)
Поддержка
Присоединился: 11 месяцев назад

Здравствуйте @oldland,

1. Я добавила в форму кастомное поле Тема (заголовок комментария). Под textaria это поле выглядит по меньшей мере глупо... Есть ли возможность поднять кастомное поле над текстовым полем комментария (например, каким-нибудь хуком)?  Имя пользователя и email тоже хотелось бы видеть над текстовым полем комментария - так пользователям гораздо привычней. 

Здесь можно настроить либо с помощью CSS либо js кодов. Смотря какая структура.

2. Наиважнейший для меня вопрос (если он не решится, мне, возможно, придется отказаться от столь совершенного и замечательного плагина как WPDiscuz). 

Думаю с помощью js это легко можно сделать

3. Возможно ли перенести форму комментария вниз страницы, под выведенные комментарии - нам важно поощрить ответы в нужную ветку комментариев, а не создание новой ветки

Тут точно нет возможности сделать.

Ответить
oldland
Сообщения: 12
(@oldland)
Active Member
Присоединился: 4 недели назад

Ольга, большое спасибо за быстрый ответ! 

На первый вопрос мне ответила поддержка. Вдруг кому-то пригодится это решение: 

Вы можете использовать этот код js:

jQuery.each( jQuery( ".wpd_comm_form" ), function( ) {
jQuery('.wpd-form-foot .wpdiscuz-textarea-foot + .wpd-form-row', this).prependTo( jQuery(this) );
});

Поместите код в активные файлы them js.

Эта статья также может быть полезна для вас: https://www.collectiveray.com/add-javascript-to-wordpress

По второму вопросу: а нельзя заказать вам эту несложную функцию за дополнительную плату? Без плагина я это делала примерно так: 

//$_GET['replytocom'] - - ID родительского комментария
$val = "";
if (isset($_GET['replytocom'])) {
$replytoid = (int) $_GET['replytocom'];
$commenttitle = get_comment_meta( $replytoid, 'title', true );
$commenttitle = str_replace("Re: ", "", $commenttitle);
$val = "Re: " . $commenttitle;
}
echo '<p class="comment-form-title">'.
'<label for="title">Тема:</label>'.
'<input id="title" name="title" type="text" size="30" value="' . $val . '"/></p>';
Ответить
1 Ответить
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

@oldland,

Пришлите мне URL вашего сайта попробую вам помочь. 

Ответить
oldland
Сообщения: 12
(@oldland)
Active Member
Присоединился: 4 недели назад

http://maleevka.interpresscon.ru/astra_blitz/1302/ - вот тут страница с комментариями. 

http://maleevka.interpresscon.ru/ - домашняя страница. 

Ответить
15 Ответы
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

@oldland,

Я тут попробовала прокомментировать у вас на сайте, для примера, и к сожалению, не смогла. У вас какая-то ошибка с ReCaptcha.

Ошибка: Пожалуйста, введите корректное значение CAPTCHA.

Исправите ошибку и дайте мне знать. 

 

Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

@olga, готово! Забыла отключить прежнюю капчу. 

Ответить
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

Ок @oldland, посмотрю что можно сделать и сообщу вам. 

Ответить
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

Все готово @oldland,

Вот код, который вы можете использовать.

jQuery(document).delegate('.wpd-reply-button', 'click', function () {
var parent = jQuery(this).parents('.wpd-comment');
var id = parent.attr('id').substring(parent.attr('id').lastIndexOf('-') + 1);
if (parent.children('.comment_title').length) {
jQuery('#wpd-secondary-form-wrapper-' + id).find('#title-' + id).val(jQuery(this).parents('.wpd-comment').children('.comment_title').text());
}
});

Кстати, полезная статья, следуйте инструкциям и все будет работать нормально: https://www.collectiveray.com/add-javascript-to-wordpress

Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

@olga, увы, пока не работает. Подключаю так же, как скрипт, поднимающий поле темы над полем комментария. Сейчас еще раз проверю, все ли я туда вставила.

В любом случае, большое спасибо за помощь. Я тронута вашим вниманием! 

Ответить
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

Всегда пожалуйста @oldland

Вроде должно работать. Я тут вам видео записала. 

https://www.screencast.com/t/w4um9kN3u

Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

@olga, иногда оно срабатывает. Пока не поняла, в каких случаях. Думала из-за кэша, но он тут не при чем. На ваш тестовый комментарий сперва не сработало (там остался коммент без темы), потом стало срабатывать. На мои пока ни разу не сработало. Можно видео не писать, я верю на слово. 

Ответить
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

@oldland

Попробуйте этот код:

jQuery(document).ready(function ($) {
$(document).delegate('.wpd-reply-button', 'click', function () {
var parent = $(this).parents('.wpd-comment');
var id = parent.attr('id').substring(parent.attr('id').lastIndexOf('-') + 1);
if (parent.children('.comment_title').length) {
$('#wpd-secondary-form-wrapper-' + id).find('#title-' + id).val($(this).parents('.wpd-comment').children('.comment_title').text());
}
});
});
Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

@olga, оно срабатывает при повторном нажатии на кнопку Ответ. 1-й скриншот - одно нажатие на кнопку. 2-й скриншот - третье нажатие на кнопку (второе сворачивает форму).

Это проба сделана на дочернем комментарии, и она, похоже, подцепила темы всех родителей по цепочке. При проверке на комментариях более глубокого уровня так и происходит - сколько уровней, столько и дублей заголовков. 

 07 07 2020 161733
 07 07 2020 161809

 

Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

@oldland,

Попробуйте этот код:

jQuery(document).ready(function ($) {
    $(document).delegate('.wpd-reply-button', 'click', function () {
        var $this = $(this);
        setTimeout(function () {
            var parent = $this.parents('.wpd-comment');
            var id = parent.attr('id').substring(parent.attr('id').lastIndexOf('-') + 1);
            if (parent.children('.comment_title').length) {
                $('#wpd-secondary-form-wrapper-' + id).find('#title-' + id).val($this.parents('.wpd-comment').children('.comment_title').text());
            }
        }, 200);
    });
});;
Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

@olga, теперь все срабатывает с первого раза, но все равно цепляются темы всех родителей комментария, а не последнего. 

И еще. Я такая тупая в части js, что не могу найти, куда вставить две буковки "Re:" перед темой ответа.  

Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

@olga, я решила проблему с повтором тем - ввела атрибут id для заголовка комментария, аналогичного по структуре заголовку поля темы. И поменяла код вот на этот. 

jQuery(document).ready(function ($) {
$(document).delegate('.wpd-reply-button', 'click', function () {
var $this = $(this);
setTimeout(function () {
var parent = $this.parents('.wpd-comment');
var id = parent.attr('id').substring(parent.attr('id').lastIndexOf('-') + 1);
if (parent.children('#comtitle-' + id).length) {
$('#wpd-secondary-form-wrapper-' + id).find('#title-' + id).val($this.parents('.wpd-comment').children('#comtitle-' + id).text());
}
}, 200);
});
});

Все работает. Но вот куда вставить буковки Re:, а так же как не повторять их, если комменты идут все глубже, я пока так и не решила. Но я в процессе. 

Огромное Вам спасибо. 

 

Ответить
oldland
(@oldland)
Присоединился: 4 недели назад

Active Member
Сообщения: 12

Вставила и буковки Re: самостоятельно. Но без Вашего скрипта у меня бы ничего не получилось. Ура! Еще раз спасибо! 

Ответить
Ольга
Admin
(@olga)
Присоединился: 11 месяцев назад

Поддержка
Сообщения: 44

Рада слышать @oldland,

Простите что отлучилась, просто была немного занята. Будут вопросы заходите. Постараюсь помочь.

 

Ответить
Поделиться: