[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Форум ExBB Написание мода "Спасибо"
Andrey_Ak
Всем доброе время суток!

Извините, что вот так вот пришел сюда и задаю вопросы,
просто уже отчаялся, никак не могу разобраться со сложными
скриптами форума 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'];

Отображается адрес страницы форума, где был... :)

А как сделать переход автоматический на ту-же страницу?
Так:
$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 имя текущего пользователя это
$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 написал(а):
Вообще по этой команде:

'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
echo $mess; 
echo $user['id'];

даже не показываются значения этих переменных...




Спустя 28 минут, 38 секунд (11.01.2012 - 09:38) Andrey_Ak написал(а):
Разобрался.... :)

В файле 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


Спустя 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 - это выбранная мною переменная для передачи номера сообщения, для которого должна быть кнопка спасибо. Какая переменная у вас отвечает за это я не знаю. Вы разберитесь сами в своем скрипте и в переменных.

Спустя 1 час, 34 минуты, 4 секунды (11.01.2012 - 12:54) Andrey_Ak написал(а):
Изменил topic.php :

стоку 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

- Вот файл с постами которые нужно научится редактировать

Спустя 14 минут, 16 секунд (11.01.2012 - 13:14) Andrey_Ak написал(а):
Вот пример файла форума:

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 написал(а):
молодец!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.