Извините, что вот так вот пришел сюда и задаю вопросы,
просто уже отчаялся, никак не могу разобраться со сложными
скриптами форума ExBB...
Предыстория такая, решил у себя на сайте www.tis.kz сделать
форум... Остановился на бесплатном ExBB FM 1.0 RC1
Знания PHP у меня только на базовом уровне, но написать
свой сайт руками в FAR'е ума хватило.. :)
Хочу в форуме добавить возможность говорить "Спасибо" за полезные
сообщения...
"Спасибо" на форуме должно выглядеть примерно так:
www.tis.kz/forum/dst/post.jpg
Скрипт форума можно скачать тут: www.tis.kz/forum/dst/ExBB_FM_1.0_RC1.zip
Что уже сделано:
В topic.php добавляю
$_icon['ths'] = ($fm->exbb['text_menu'] === TRUE) ? $fm->LANG['IconTHS'] : '<img src="./templates/'.DEF_SKIN.'/im/thanks.gif" border="0">';
$ths = $users[$member_id]['ths'];
В lang_front_forums.php добавляю
$this->LANG['IconTHS'] = 'Сказать спасибо';
$this->LANG['SendTHS'] = 'Сказать спасибо';
В post.php , в строку
$prf = $eml = $www = $aim = $icq = $pm = $delbox = $karma = $reputation = $pun = $addpun = '';
Добавляю:
$prf = $eml = $www = $aim = $icq = $pm = $THS = $delbox = $karma = $reputation = $pun = $addpun = '';
В topic_data.tpl , в строку
<div>{$prf} {$eml} {$aim} {$www} {$icq} {$pm} </div>
Добавляю:
<div>{$prf} {$eml} {$aim} {$www} {$icq} {$pm} {$THS}</div>
Так-же в topic.php добавляю
'ths' => ($user['name'] !== '') ? ' <a href="thanks.php" title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" >'.$_icon['ths'].'</a>':'',
Благодаря сделанным изменениям, на форуме, в постах пользователей появилась кнопка "Спасибо" по нажатию которой открывается файл thanks.php
Помогите пожалуйста, как в файл thanks.php передать следующие
переменные:
1) Имя_Текущего_пользователя, который нажал кнопку "Спасибо"
2) Путь файла с сообщением, на котором нажали кнопку "Спасибо",
чтоб можно было дописать в этот файл кто сказал спасибо...
3) Адрес текущей страницы форума, чтоб потом из внешнего скрипта
thanks.php вернутся на ту-же страницу...
Спустя 7 минут, 15 секунд (11.01.2012 - 07:09) Игорь_Vasinsky написал(а):
Цитата |
1) Имя_Текущего_пользователя, который нажал кнопку "Спасибо" |
читать из сессии
Цитата |
2) Путь файла с сообщением, на котором нажали кнопку "Спасибо", |
прочитать на той странице на которой ссылка и смормировать ссылку с использованием имени файла - т.е. передать в GET
Цитата |
3) Адрес текущей страницы форума, чтоб потом из внешнего скрипта thanks.php вернутся на ту-же страницу... |
$_SERVER['HTTP_REFERER']
Спустя 26 минут, 51 секунда (11.01.2012 - 07:36) Andrey_Ak написал(а):
Добавил в файл thanks.php
echo $_SERVER['HTTP_REFERER'];
Отображается адрес страницы форума, где был... :)
А как сделать переход автоматический на ту-же страницу?
Так:
не получается....
Какая переменная задает имя пользователя?
"прочитать на той странице на которой ссылка и смормировать ссылку с использованием имени файла - т.е. передать в GET"
- Как это сделать?
echo $_SERVER['HTTP_REFERER'];
Отображается адрес страницы форума, где был... :)
А как сделать переход автоматический на ту-же страницу?
Так:
$f = fopen($_SERVER['HTTP_REFERER'],"r");
не получается....
Какая переменная задает имя пользователя?
"прочитать на той странице на которой ссылка и смормировать ссылку с использованием имени файла - т.е. передать в GET"
- Как это сделать?
Спустя 2 минуты, 55 секунд (11.01.2012 - 07:38) Andrey_Ak написал(а):
echo $user['name'];
- Так не получается отобразить имя пользователя нажавшего кнопку..
Спустя 10 минут, 12 секунд (11.01.2012 - 07:49) Andrey_Ak написал(а):
Я так понимаю в topic.php имя текущего пользователя это
тогда пытаюсь добавить следующее:
Добавляю в строчку:
Пишет:
Parse error: syntax error, unexpected T_STRING in /home/users2/t/tis/domains/tis.kz/forum/topic.php on line 441
$user['name']
тогда пытаюсь добавить следующее:
$_GET['usrname'] = $user['name']
Добавляю в строчку:
'ths' => ($user['name'] !== '') ? ' $_GET['usrname'] = $user['name'] <a href="thanks.php" title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" >'.$_icon['ths'].'</a>':'',
Пишет:
Parse error: syntax error, unexpected T_STRING in /home/users2/t/tis/domains/tis.kz/forum/topic.php on line 441
Спустя 54 минуты, 3 секунды (11.01.2012 - 08:43) Andrey_Ak написал(а):
Вообще по этой команде:
Появляется кнопка, на которую если нажать, произойдет открытие файла thanks.php, если на кнопку навести мышку выходит подсказка заданная в переменных '.$fm->LANG['SendTHS'].' и '.$user['name'].'
На этой кнопке вообще можно только ссылку куда-нибудь сделать?
Нельзя ли вместо ссылки, для проверки скажем сделать по нажатию кнопки echo $user['name']; или вывод другой какой-нибудь переменной?
Как это сделать?
И самое главное, как по нажатию кнопки, помимо открытия thanks.php,
передать туда нужные мне переменные?
'ths' => '<a href="thanks.php" title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" > '.$_icon['ths'].'</a>',
Появляется кнопка, на которую если нажать, произойдет открытие файла thanks.php, если на кнопку навести мышку выходит подсказка заданная в переменных '.$fm->LANG['SendTHS'].' и '.$user['name'].'
На этой кнопке вообще можно только ссылку куда-нибудь сделать?
Нельзя ли вместо ссылки, для проверки скажем сделать по нажатию кнопки echo $user['name']; или вывод другой какой-нибудь переменной?
Как это сделать?
И самое главное, как по нажатию кнопки, помимо открытия thanks.php,
передать туда нужные мне переменные?
Спустя 16 минут, 44 секунды (11.01.2012 - 08:59) NitroGenerate написал(а):
'ths' => '<a href="thanks.php?mess='.$mess.'&user='.$user['id'].'" title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" > '.$_icon['ths'].'</a>',
$mess - номер сообщения для которого мы сказали спасибо
$user['id']- ид пользователя который сказал спасибо.
В файле thanks.php делаете обработчик который ловит ваши переменные и добавляет в бд
так же желательно ref ссылку передать, что бы после добавления спасибо пользователя проредиректить туда, откуда он пришел.
Спустя 10 минут, 27 секунд (11.01.2012 - 09:10) Andrey_Ak написал(а):
В файле thanks.php делаете обработчик который ловит ваши переменные и добавляет в бд
- А как это сделать?
- В файле thanks.php
даже не показываются значения этих переменных...
- А как это сделать?
- В файле thanks.php
echo $mess;
echo $user['id'];
даже не показываются значения этих переменных...
Спустя 28 минут, 38 секунд (11.01.2012 - 09:38) Andrey_Ak написал(а):
Разобрался.... :)
В файле topic.php
Задаем переменные:
&user='.$user['name'].'
&www='.$user['www'].'
В файле thanks.php выводим значения этих переменных:
echo $_GET['user'];
echo $_GET['www'];
В файле topic.php
'ths' => '<a href="thanks.php?mess='.$mess.' &user='.$user['name'].' &www='.$user['www'].' " title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" > '.$_icon['ths'].'</a>',
Задаем переменные:
&user='.$user['name'].'
&www='.$user['www'].'
В файле thanks.php выводим значения этих переменных:
echo $_GET['user'];
echo $_GET['www'];
Спустя 32 минуты, 23 секунды (11.01.2012 - 10:11) Andrey_Ak написал(а):
А теперь подскажите, где в файле topic.php
найти переменную, которая отвечает за номер поста,
и как найти по ней файл, в котором есть этот пост?
найти переменную, которая отвечает за номер поста,
и как найти по ней файл, в котором есть этот пост?
Спустя 5 минут, 39 секунд (11.01.2012 - 10:17) Andrey_Ak написал(а):
Да и еще теперь на форуме выходят ошибки:
Notice: Undefined variable: mess in /home/users2/t/tis/domains/tis.kz/forum/topic.php on line 444
Notice: Undefined variable: mess in /home/users2/t/tis/domains/tis.kz/forum/topic.php on line 444
Notice: Undefined variable: mess in /home/users2/t/tis/domains/tis.kz/forum/topic.php on line 444
Notice: Undefined variable: mess in /home/users2/t/tis/domains/tis.kz/forum/topic.php on line 444
Спустя 4 минуты, 55 секунд (11.01.2012 - 10:21) Andrey_Ak написал(а):
С ошибками разобрался, должно быть так:
'ths' => '<a href="thanks.php? &user='.$user['name'].' &www='.$user['www'].' " title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" > '.$_icon['ths'].'</a>',
Спустя 58 минут, 3 секунды (11.01.2012 - 11:19) NitroGenerate написал(а):
Вы не разобрались!
Вы вместо того, что бы разобраться с ошибкой, просто выкинули эту переменную! Это неправильно!
тут не нужно ничего выкидывать! $mess - это выбранная мною переменная для передачи номера сообщения, для которого должна быть кнопка спасибо. Какая переменная у вас отвечает за это я не знаю. Вы разберитесь сами в своем скрипте и в переменных.
Вы вместо того, что бы разобраться с ошибкой, просто выкинули эту переменную! Это неправильно!
mess='.$mess.'
тут не нужно ничего выкидывать! $mess - это выбранная мною переменная для передачи номера сообщения, для которого должна быть кнопка спасибо. Какая переменная у вас отвечает за это я не знаю. Вы разберитесь сами в своем скрипте и в переменных.
Спустя 1 час, 34 минуты, 4 секунды (11.01.2012 - 12:54) Andrey_Ak написал(а):
Изменил topic.php :
стоку 246 убрал:
и строку 443 тоже надо убрать:
Вместо них, в строке 268 добавил код:
- Это можно убрать, но тогда не зарегистрированные пользователи гости смогут говорить спасибо...
Причина того что, убрал 246 и 443 строки, с них не корректно отображается номер сообщения, хотя номер темы, номер раздела и имя пользователя правильно...
С одной строкой 268 таких проблем нет...
Теперь в thanks.php я могу посмотреть следующие переменные:
echo $_SERVER['HTTP_REFERER']; - Адрес страницы откуда был переход
echo $_GET['forum_id']; - Номер форума - число XX (Папки форумов имеют названия: forumXX)
echo $_GET['topic_id']; - Номер темы в форуме - число Y (Файлы тем имеют названия: Y-thd.php)
echo $_GET['post_id']; - Номер поста в теме
echo $_GET['user_id']; - Номер пользователя
echo $_GET['user_name']; - Имя пользователя
стоку 246 убрал:
$ths = $users[$member_id]['ths'];
и строку 443 тоже надо убрать:
'ths' => '<a href="thanks.php? &t_usr='.$user['name'].' &t_forum_id='.$forum_id.' &t_topic_id='.$topic_id.' &t_post_id='.$key.' &t_state='.$topic['state'].' " title="'.$fm->LANG['SendTHS'].' '.$user['name'].'" > '.$_icon['ths'].'</a>',
Вместо них, в строке 268 добавил код:
$ths = ($access === TRUE && $topic['state'] != 'closed') ? '<a href="thanks.php?&forum_id='.$forum_id.'&topic_id='.$topic_id.'&post_id='.$key.'&use r_id='.$member_id.'&user_name='.$users[$member_id]['user'].'">'.$_icon['ths'].'</a>'.$_icon['divider']:'';
($access === TRUE && $topic['state'] != 'closed') ?
- Это можно убрать, но тогда не зарегистрированные пользователи гости смогут говорить спасибо...
Причина того что, убрал 246 и 443 строки, с них не корректно отображается номер сообщения, хотя номер темы, номер раздела и имя пользователя правильно...
С одной строкой 268 таких проблем нет...
Теперь в thanks.php я могу посмотреть следующие переменные:
echo $_SERVER['HTTP_REFERER']; - Адрес страницы откуда был переход
echo $_GET['forum_id']; - Номер форума - число XX (Папки форумов имеют названия: forumXX)
echo $_GET['topic_id']; - Номер темы в форуме - число Y (Файлы тем имеют названия: Y-thd.php)
echo $_GET['post_id']; - Номер поста в теме
echo $_GET['user_id']; - Номер пользователя
echo $_GET['user_name']; - Имя пользователя
Спустя 5 минут, 45 секунд (11.01.2012 - 12:59) Andrey_Ak написал(а):
Теперь надо понять принцип файлов тем...
И научится туда дописывать текст, но дописывать надо
не в конец файла, а в конец поста указанного пользователя.
А для этого надо в указанном файле найти номер темы, найти после номера темы
текст и дописать в конце текста "Сказали спасибо: $_GET['user_name'] "
www.tis.kz/forum/temp/1-thd.rar
- Вот файл с постами которые нужно научится редактировать
И научится туда дописывать текст, но дописывать надо
не в конец файла, а в конец поста указанного пользователя.
А для этого надо в указанном файле найти номер темы, найти после номера темы
текст и дописать в конце текста "Сказали спасибо: $_GET['user_name'] "
www.tis.kz/forum/temp/1-thd.rar
- Вот файл с постами которые нужно научится редактировать
Спустя 14 минут, 16 секунд (11.01.2012 - 13:14) Andrey_Ak написал(а):
Вот пример файла форума:
www.tis.kz/forum/temp/1-thd.rar
www.tis.kz/forum/temp/1-thd.rar
Спустя 11 часов, 40 минут, 25 секунд (12.01.2012 - 00:54) Andrey_Ak написал(а):
Усе, разобрался... Все сделал, то что хотел...
Спустя 8 минут, 40 секунд (12.01.2012 - 01:03) Игорь_Vasinsky написал(а):
молодец!