Решено: Ник в ответ

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 17:46

Зддравствуйте. Вопрос такой:
Стоит Advanced forum. Хотел сделать линк "Ник в ответ" в шаблоне advf-author-pane.tpl.php, по нажатию на который имя пользователя улетало бы в текстовый редактор.
Т.е. нужно что-то вроде этого:  <a href="javascript:;" onclick="jQuery('#edit-comment').val(' $account_name ');jQuery('#edit-comment').focus();">Ник в ответ</a>
Но не могу нарыть как засунуть переменную в js. При нажатии отправляется как и есть $account_name

Комментарии

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 18:04
"OldWarrior" wrote:

Хм... обернуть $account_name в <?php print $account_name ?>

Не) Это я уже проделывал) Оборачивание подобным образом выводит вообще с ошибкой:
http://SSMaker.ru/42c0053a/

Аватар пользователя OldWarrior OldWarrior 9 января 2013 в 18:08

Ну на скриншоте ALEX - это, видимо, и есть ник. И он выводится.

А то, что дальше - это уже копать синтаксис JS, там какая-то ошибка.

Возможно ещё, не экранированы какие-то спецсиволы.

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 18:11
"OldWarrior" wrote:

Ну на скриншоте ALEX - это, видимо, и есть ник. И он выводится.

А то, что дальше - это уже копать синтаксис JS, там какая-то ошибка.

Да, сам никнейм выводится, но уже сама ссылка перестаёт функционировать. Потому и создал тему, т.к. в js не силён.

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 18:19
"OldWarrior" wrote:

Вы сначала убедитесь, что ваша конструкция JS вообще работает.
Без $account_name.

Работает на ура. Т.е. к примеру
<a href="javascript:;" onclick="jQuery('#edit-comment').val(' VLADI27 ');jQuery('#edit-comment').focus();">Ник в ответ</a>
при нажатии на линк "Ник в ответ" никнейм VLADI27 улетает в текстовый редактор без проблем. Все радости заканчиваются когда вместо простого текста вставляется переменная.

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 20:27
"Stan.Ezersky" wrote:

читайте

Кхм... вы вообще в суть вопроса вникли? Ну и как вы предлагаете сформировать линк по той статье? Или вы думаете я гуглом пользоваться разучился?
В яваскрипт переменную я выведу, хоть через alert, хоть через echo, хоть через print.
Мне не вывод на экран нужен. Мне нужен insert to textarea по клику на линк.

Я уже тут много видел тем, где ответы аля "Да вон, читай", но толком подсказать никто не может. Тут сайт поддержки или пиара других сайтов?

Аватар пользователя OldWarrior OldWarrior 9 января 2013 в 20:28
"VLADI27" wrote:

Все радости заканчиваются когда вместо простого текста вставляется переменная.

Ну посмотрите, что именно генерируется в выходном коде. Буквально - в браузере выделить фрагмент этого блока, щёлкнуть правой "Исходный код выделенного" (или как там точно, уже не помню) и смотреть, что именно выводится и почему "бьётся" выполнение JS при <?php print $account_name ?> . У меня подозрение на экранирование каких-то спецсимволов.

И сюда этот фрагмент кода, в студию. Smile

Аватар пользователя OldWarrior OldWarrior 9 января 2013 в 20:30
"VLADI27" wrote:

Тут сайт поддержки или пиара других сайтов?

Тут просто сайт по Друпалу. "Поддержки" (как таковой) тут нет. Это как бы между прочим.

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 20:47
"OldWarrior" wrote:

И сюда этот фрагмент кода, в студию. Smile

))
Исходный код показывает мне это:
<a href="javascript:;" onclick="jQuery('#edit-comment').val('<a href=" http:="" www.cobalt-club.com="" users="" alex"="" title="Информация о пользователе.">ALEX</a>');jQuery('#edit-comment').focus();"&gt;Ник в ответ

Аватар пользователя OldWarrior OldWarrior 9 января 2013 в 20:52

Ну вот вам и причина.

$account_name здесь просто не канает, поскольку выводит уже готовую ссылку (причём на сайт пользователя).

Ищите другую переменную.

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 20:53

Ооооп... OldWarrior, Вы меня всё-таки натолкнули на путь исправления с экранированием) Правда трабла была не в экранировании, но когда начал копать, нашёл) Проблема в том, что <?php print $account_name ?> выдаёт не просто ник, а ссылку на ник со всеми вытекающими прелестями, потому и билось JS. Остался вопрос - чем можно заменить переменную $account_name ?

Аватар пользователя VLADI27 VLADI27 9 января 2013 в 21:12

И так, итог. Может кому-то пригодится. Вставка ника в ответ по клику для комментариев:
В шаблон advf-author-pane.tpl.php стиля форума вставляем готовый код:

<a href="javascript:;" onclick="jQuery('#edit-comment').val('<?php print $account->name; ?>');jQuery('#edit-comment').focus();">Ник в ответ</a>

Всем спасибо!

Аватар пользователя OldWarrior OldWarrior 9 января 2013 в 21:13
"VLADI27" wrote:

Остался вопрос - чем можно заменить переменную $account_name ?

Всё равно у вас этот механизм реализован на jQuery. Так что, думаю, будет вполне кошерно и грамотно извлечь имя (ник) пользователя с помощью jQuery - отталкиваясь от текущего поста, где отображается это самое имя пользователя. Только нужно правильно составить условие выборки jQuery - так, чтобы не захватить и ссылку вместе с именем.