Регистрация    Забыли пароль?        Правила форума    FAQ (читать перед созданием новой темы)
Имя   Пароль  запомнить
  
Просмотр темы
Вернуться на сайт: PHP-Fusion SF Russian Support Site

Форум поддержки PHP-Fusion SF | PHP-Fusion SF - Система Управлением Сайта | Народный SF Fusion
# 1 Тема: Полезные мелочи....
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 11 Марта 2008, 22:16:27
Добавляем перед названием темы ссылку на последнее сообщение темы:

Открываем viewforum.php ищем


$result = dbquery(
"SELECT t.*, COUNT(p.post_id) AS thread_replies, MAX(p.post_id) as last_id, tu1.user_name AS user_author, tu2.user_name AS user_lastuser, tp.poll_id FROM ".$db_prefix."threads t
LEFT JOIN ".$db_prefix."posts p USING(thread_id)
LEFT JOIN ".$db_prefix."users tu1 ON t.thread_author = tu1.user_id
LEFT JOIN ".$db_prefix."users tu2 ON t.thread_lastuser = tu2.user_id
LEFT JOIN ".$db_prefix."forum_thread_polls tp ON t.thread_id = tp.thread_id
WHERE t.forum_id='$forum_id' AND thread_sticky='1' GROUP BY thread_id ORDER BY thread_lastpost DESC"
);


* - то, что выделено красным надо добавить в запрос.

Теперь перед названием темы добавляете ссылку
<a href='viewthread.php?forum_id=$forum_id&thread_id=".$data['thread_id']."&pid=".$data['last_id']."#post_".
$data['last_id']."'><img src='".BASEDIR."forum/images/latest_reply.gif' border='0' title='".$locale['404']."'></a>




Добавляем такую же ссылку только на главной странице форума:

Открываем index.php из папки forum, находим строку:

$data9 = dbarray(dbquery("SELECT * FROM ".$db_prefix."threads WHERE forum_id='".$data2['forum_id']."' ORDER BY thread_lastpost DESC"));


добавлям после

if (dbrows($subForums)) {
$subForum = dbarray(dbquery("SELECT * FROM ".$db_prefix."forums WHERE forum_sub='".$data2['forum_id']."' ORDER BY forum_order DESC"));
$data99 = dbarray(dbquery(
"SELECT t.*, COUNT(p.post_id) AS thread_replies, MAX(p.post_id) as last_id FROM ".$db_prefix."threads t
LEFT JOIN ".$db_prefix."posts p USING(thread_id)
WHERE t.forum_id='".$subForum['forum_id']."' GROUP BY thread_id ORDER BY thread_lastpost DESC"));
} else {
$data99 = dbarray(dbquery(
"SELECT t.*, COUNT(p.post_id) AS thread_replies, MAX(p.post_id) as last_id FROM ".$db_prefix."threads t
LEFT JOIN ".$db_prefix."posts p USING(thread_id)
WHERE t.forum_id='".$data2['forum_id']."' GROUP BY thread_id ORDER BY thread_lastpost DESC"));
}


Ссылка на пост выглядит так:
<a href='viewthread.php?forum_id=".$data9['forum_id']."&thread_id=".$data9['thread_id']."&pid=".$data99['
;last_id']."#post_".
$data99['last_id']."'><img src='".BASEDIR."forum/images/latest_reply.gif' border='0' title='".$locale['404']."'></a>




На главной странице форума есть один баг: если последнее сообщение было написано в подфоруме, то неотображалась ссылка на пост...я попробовал ето исправить:


Открываем index.php из папки forum, находим:

$forums .= " ".showdate("forumdate", $data2['forum_lastpost'])."<br>
<span class='small'><b>".$locale['406'].": </b><a href='".BASEDIR."profile.php?lookup=".$data2['forum_lastuser']."'>".$data3['user_name']."<
/a></span><br />
<span class='small'><b>Тема: </b><a href='".FORUM."viewthread.php?forum_id=".$data9['forum_id']."&thread_id=".$data9['thread_id']."'
alt='".$data9['thread_subject']."'>".trimlink($data9['thread_subject'], 22)."</a></span>
</td>
</tr>\n";


возможно у вас выглядит немного подругому(!)

Заменяем на (предварительно сделав бекап):

$data98 = dbarray(dbquery("SELECT * FROM ".$db_prefix."threads WHERE forum_id='".$subForum['forum_id']."' ORDER BY thread_lastpost DESC"));

if (dbrows($subForums)) {
$forums .= "<a href='viewthread.php?forum_id=".$subForum['forum_id']."&thread_id=".$data98['thread_id']."&pid=".$data99[
'last_id']."#post_".
$data99['last_id']."'><img src='".BASEDIR."forum/images/latest_reply.gif' border='0' title='".$locale['404']."'></a> ".showdate("forumdate", $data2['forum_lastpost'])."<br>
<span class='small'><b>".$locale['406'].": </b><a href='".BASEDIR."profile.php?lookup=".$data2['forum_lastuser']."'>".$data3['user_name']."<
/a></span><br />
<span class='small'><b>Тема: </b><a href='".FORUM."viewthread.php?forum_id=".$subForum['forum_id']."&thread_id=".$data98['thread_id']."&
#39; alt='".$data98['thread_subject']."'>".trimlink($data98['thread_subject'], 22)."</a></span></td></tr>";
} else {
$forums .= "<a href='viewthread.php?forum_id=".$data9['forum_id']."&thread_id=".$data9['thread_id']."&pid=".$data99['
;last_id']."#post_".
$data99['last_id']."'><img src='".BASEDIR."forum/images/latest_reply.gif' border='0' title='".$locale['404']."'></a> ".showdate("forumdate", $data2['forum_lastpost'])."<br>
<span class='small'><b>".$locale['406'].": </b><a href='".BASEDIR."profile.php?lookup=".$data2['forum_lastuser']."'>".$data3['user_name']."<
/a></span><br />
<span class='small'><b>Тема: </b><a href='".FORUM."viewthread.php?forum_id=".$data9['forum_id']."&thread_id=".$data9['thread_id']."'
alt='".$data9['thread_subject']."'>".trimlink($data9['thread_subject'], 22)."</a></span></td></tr>";
}




Те кто шарит в пхп лучше меня, проверте чтобы все было правильно и небыло лишних запросов в бд =)


вот пару вариантов картинок которые надо залить в forum/images и назвать latest_reply.gif

http://forum.0day.kiev.ua/style_images/0day[1]/lastpost.gif
http://forum.0day.kiev.ua/style_images/0day[1]/newpost.gif
http://tracker-fusion.ho.ua/forum/images/mp.gif
http://tracker-fusion.ho.ua/forum/images/latest_reply.gif

ну или можете чтото свое...


[Изменил(а) pozitiv, 12 Марта 2008, 14:46:24]

--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
1 пользователь сказал спасибо Вам: dvdiamond
# 2  
dvdiamond
Пользователь

Avatar пользователя




Местный

Сообщений: 17
Зарегистрирован: 27 Февраля 2008, 22:30:18
Сказали спасибо 1 раз
Статус: offline
Опубликовано 12 Марта 2008, 01:46:55
+1
Работает. Вставлять походу надо в двух местах. Я вывел картинку в столбике "Последнее сообщение" после даты.

ЗЫ. А теперь тож самое только в index форума... smiley


[Изменил(а) dvdiamond, 12 Марта 2008, 01:59:34]  
^ наверх ^
# 3  
dvdiamond
Пользователь

Avatar пользователя




Местный

Сообщений: 17
Зарегистрирован: 27 Февраля 2008, 22:30:18
Сказали спасибо 1 раз
Статус: offline
Опубликовано 12 Марта 2008, 03:21:51
На базе полезности от pozitiv родилась еще одна.. Имхо полезная.
Ссылка на пост. Живет маленькая картинка в правом углу таблички с временем каждого поста.

1. добавить post_url.gif к картинкам форума
2. viewthread.php
ищем
<tr><td class='tbl1'>".$locale['505'].showdate("forumdate", $data['post_datestamp'])."</td>
<td align='right' class='tbl1'>\n";


после добавляем
echo "<a href='viewthread.php?forum_id=$forum_id&thread_id=".$data['thread_id']."&pid=".$data['last_id']."#post_".

$data['post_id']."'><img src='".BASEDIR."forum/images/post_url.gif' border='0' title='ссылка на пост'></a>";



Тестим, благодарим smiley
 
^ наверх ^
# 4  
Sky
Супер Администратор

Avatar пользователя

АнарХия Х4

Администратор

Сообщений: 3023
Откуда: Astana
Зарегистрирован: 01 Апреля 2007, 18:11:10
Сказали спасибо 470 раз
Статус: offline
Опубликовано 12 Марта 2008, 05:42:42
прийду с универа обязательно посмотрю все варианты smiley


--------------------
Я в контакте

Народ читаем и запоминаем!
Не помогаю по ICQ
Не помогаю по ЛС
буду просто игнорировать эти сообщения!
Все вопросы задаем на форуме, но предварительно пользуемся поиском!
^ наверх ^
# 5  
classic
SF Team

Avatar пользователя

Классик

SF Support Team

Любитель Fusion

Сообщений: 353
Откуда: Москва, ВАО, Перово
Зарегистрирован: 18 Октября 2007, 01:42:47
Сказали спасибо 51 раз
Статус: offline
ICQ статус 350192996
Опубликовано 12 Марта 2008, 08:17:40
У меня так давно было в viewforum.php сделано - ссылка на последний пост в теме была сделана в столбце "Последнее сообщение" (рисуночек перед словами "последнее сообщение"smiley и можно было сразу перейти к последнему ссобщению в теме - по моему это стандарт для всех форумов.

Такая же ссылка у меня стоит в viewthread.php у каждого поста перед словами
"Опубликовано 05 февраля 2008, 13:50:02" сделал по просьбе посетителей, чтобы можно было легко сослаться на любой пост в теме (получить ссылку на него и где-то её использовать).
 
^ наверх ^ 350192996
# 6  
dvdiamond
Пользователь

Avatar пользователя




Местный

Сообщений: 17
Зарегистрирован: 27 Февраля 2008, 22:30:18
Сказали спасибо 1 раз
Статус: offline
Опубликовано 12 Марта 2008, 12:17:15
classic написал:
У меня так давно было ...

А поделиться забыл? smiley

Еще б на главной форума сделать ссылку на последний пост, но у меня мозгов не хватает, во всяком случае пока..
 
^ наверх ^
# 7  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 12 Марта 2008, 13:45:41
обновил первый пост....


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 8  
dvdiamond
Пользователь

Avatar пользователя




Местный

Сообщений: 17
Зарегистрирован: 27 Февраля 2008, 22:30:18
Сказали спасибо 1 раз
Статус: offline
Опубликовано 12 Марта 2008, 14:53:12
Во! Теперь полный порядок. Подфорумов у меня пока нет и не планировал. Но, было бы совсем красиво.
 
^ наверх ^
# 9  
Bidgo
SF Team

Avatar пользователя

Антикиллер

SF Support Team

Любитель Fusion

Сообщений: 240
Откуда: Полтава
Зарегистрирован: 27 Октября 2007, 15:06:15
Сказали спасибо 39 раз
Статус: offline
ICQ статус 252950850
Опубликовано 12 Марта 2008, 16:01:55
Хм... я помойму когда то давно предлагал такой вариант. И код выставлял... (вроде бы).. или может тока собирался.
Но у меня такое давно реализовано.


--------------------
Все что НЕ делается, было бы к лучшему...
Присоединяйтесь!
^ наверх ^ 252950850 http://ordenplameni.tclans.ru/
# 10  
Yan
SF Team

Avatar пользователя

Не трогайте Ская! Отпизжу!

SF Support Team

Любитель Fusion

Сообщений: 325
Откуда: Москва
Зарегистрирован: 08 Мая 2007, 19:40:59
Сказали спасибо 24 раз
Статус: offline
Опубликовано 12 Марта 2008, 19:34:29
Давай не будем хвастаться, а будем выкладывать то, что ты "давно реализовал, реализуеш" в эту тему...
 
^ наверх ^ yan.kiev.ua
1 пользователь сказал спасибо Вам: Maxie
# 11  
GORDON
Пользователь

Avatar пользователя

я тут

Завсегдатый

Сообщений: 87
Зарегистрирован: 07 Мая 2007, 20:32:37
Сказали спасибо 6 раз
Статус: offline
ICQ статус 6860042
Опубликовано 13 Марта 2008, 02:15:24
Номер сообщения в таблице на форуме
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=17&thread_id=1693
------------------------------------------------------------------------------------------

кнопка СПАСИБО на форуме
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=17&thread_id=2572
------------------------------------------------------------------------------------------

Пользователь в сети не в сети на форуме
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=4&thread_id=575
------------------------------------------------------------------------------------------

Разбитие тем на форуме
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=17&thread_id=2754
------------------------------------------------------------------------------------------

Выбор модератора на несколько разделов форума сразу
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=17&thread_id=2777
------------------------------------------------------------------------------------------

Удаление сообщений с форума без захода в Правку
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=17&thread_id=1844
------------------------------------------------------------------------------------------

Не показывать ник и дату при повторном редактировании поста на форуме
http://www.phpfusion-themes.com/forum/viewthread.php?forum_id=17&thread_id=2215
------------------------------------------------------------------------------------------


то что сам поставил и проверил и работает в данный момент.


[Изменил(а) GORDON, 13 Марта 2008, 02:17:42]

--------------------
''
^ наверх ^ 6860042 http://www.se-symbian.ru/
2 пользователей сказали спасибо Вам: Sky, Respectus
# 12  
anto111ka
Пользователь

Avatar пользователя



Любитель Fusion

Сообщений: 110
Зарегистрирован: 31 Января 2008, 20:35:18
Сказали спасибо 1 раз
Статус: offline
Опубликовано 13 Марта 2008, 16:00:22
А как сделать ,чтоб сверху на форуме была ещё ссылка на главную страницу сайта?
 
^ наверх ^
# 13  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 13 Марта 2008, 19:48:06
Незнаю как вам, а помне ето полезная мелочь=)

Если в теме есть аттачи, то перед названием темы добавляет картинку скрепки(как в ИПБ) - это означает что в теме есть аттач=)

Открываем viewforum.php ищем:

if (dbrows($result) != 0) {
while ($data = dbarray($result)) {


после добавлеям:

$result2 = dbquery("SELECT * FROM ".$db_prefix."forum_attachments WHERE thread_id='".$data['thread_id']."'");



Далее ищем:

$threadsubject = ($data['poll_id'] ? "<b>Опрос</b>: " : "")."<a href='viewthread.php?forum_id=$forum_id&thread_id=".$data['thread_id']."'>".$data['thread_subject']."&l
t;/a>";

у вас ето может выглядеть по-другому, т.к. я правил немного под себя(!)

Добавляем после:

if (dbrows($result2) != 0) {
$threadsubject = "<img src='".FORUM."images/attach.gif'> ".$threadsubject;
}



Повторить два раза...Для важных тем и для простых....
Прикрепленные файлы
attach.gif   ( width:8 height:10 )


[Изменил(а) pozitiv, 13 Марта 2008, 20:10:48]

--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 14  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 13 Марта 2008, 20:59:12
Еще одна мелочь....изменяем картинку которая отображает состояние темы, всмысле есть новые ответы или нету, горячая тема...
Данная модификация добавляет:

1. Если тема гарячая и есть новые ответы с момента вашего последнего посещения то отображается папка красная папка
2. Если тема гарячая и нет новых ответов с момента вашего последнего посещения, то отображается тускло-красная папка
3. Если в теме опрос и есть нове ответы-отображается соответсвующая иконка
4. Если есть опрос и нет новых ответов то отображается таже иконка, только немного тусклее

Пока вроде все...если кому невпадлу-протестируйте плиз=)

Опять-таки открываем viewforum.php и ищем код который отвечает за иконку

if ($data['thread_locked']) {
echo "<tr>\n<td align='center' width='25' class='tbl2'><img src='".THEME."forum/folderlock.gif' alt='".$locale['564']."'></td>";
} else {
if ($data['thread_lastpost'] > $lastvisited) {
$folder = "<img src='".FORUM."images/f_norm.gif' alt='".$locale['560']."'>";
} else {
$folder = "<img src='".FORUM."images/f_norm_no.gif' alt='".$locale['561']."'>";
}
echo "<tr>\n<td align='center' width='25' class='tbl2'>$folder</td>";
}



и заменяем на

if ($data['thread_locked']) {
$folder = "<img src='".THEME."forum/folderlock.gif' alt='".$locale['564']."'>";
} elseif ($data['thread_replies'] > $hot){
if ($data['thread_lastpost'] > $lastvisited){
$folder = "<img src='".FORUM."images/f_hot.gif'>";
} else {
$folder = "<img src='".FORUM."images/f_hot_no.gif'>";
}
} elseif ($data['poll_id']) {
if ($data['thread_lastpost'] > $lastvisited){
$folder = "<img src='".IMAGES."poll.gif'>";
} else {
$folder = "<img src='".IMAGES."poll_no.gif'>";
}
} elseif ($data['thread_lastpost'] > $lastvisited) {
$folder = "<img src='".FORUM."images/f_norm.gif' alt='".$locale['560']."'>";
} else {
$folder = "<img src='".FORUM."images/f_norm_no.gif' alt='".$locale['561']."'>";
}
echo "<tr><td align='center' width='25' class='tbl2'>$folder</td>";


Повторить 2 раза....


Пример здесь:
http://tracker-fusion.ho.ua/forum/viewforum.php?forum_id=10


[Изменил(а) pozitiv, 13 Марта 2008, 21:01:27]

--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 15  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 15 Марта 2008, 22:40:01
Добавляем каждому разделу форума свою иконку (для главной страницы форума):

Затронутые файлы:

administration/forums.php
forum/index.php
imsges/
+MySQL

1. Открываем administration/forums.php,

ищем функцию:
} elseif (isset($_POST['save_forum'])) {

в ней после строки $forum_sub = $_POST['forum_sub'];
добавляем
$forum_foldernew = $_POST['forum_foldernew'];
$forum_folder = $_POST['forum_folder'];



Тамже ищем:

if ($action == "edit" && $t == "forum") {
$result = dbquery("UPDATE ".$db_prefix."forums SET forum_name='$forum_name', forum_cat='$forum_cat', forum_description='$forum_description', forum_access='$forum_access', forum_posting='$forum_posting', forum_sub='$forum_sub', forum_foldernew='$forum_foldernew', forum_folder='$forum_folder' WHERE forum_id='$forum_id'");
redirect(FUSION_SELF.$aidlink."&status=savefe");
}


Надо добавить выделенное красным!



Ищем

$result = dbquery("UPDATE ".$db_prefix."forums SET forum_order=forum_order+1 WHERE forum_cat='$forum_cat' AND forum_order>='$forum_order'");


после етого запроса идет еще запрос, его и правим:

$result = dbquery("INSERT INTO ".$db_prefix."forums (forum_cat, forum_name, forum_order, forum_description, forum_moderators, forum_access, forum_posting, forum_lastpost, forum_lastuser, forum_sub, forum_foldernew, forum_folder) VALUES ('$forum_cat', '$forum_name', '$forum_order', '$forum_description', '$forum_mods', '$forum_access', '$forum_posting', '0', '0', '$forum_sub', '$forum_foldernew', '$forum_folder')");


опять добавить выделенное



Ищем
} elseif ($t == "forum") {


там после $forum_sub = $data['forum_sub'];

добавляем
$forum_foldernew = $data['forum_foldernew'];
$forum_folder = $data['forum_folder'];


ищем $forum_sub = "";
добавляем после

$forum_foldernew = "";
$forum_folder = "";



Теперь ищем

<tr>
<td colspan='2' class='tbl'>".$locale['460']."<br>
<input type='text' name='forum_name' value='$forum_name' class='textbox' style='width:285px;'></td>
</tr>


Добавляем после

<tr>
<td colspan='2' class='tbl'><span class='small2'>Изображение форума имеющего новые сообщения:</span><br>
<input type='text' name='forum_foldernew' value='$forum_foldernew' class='textbox' style='width:285px;'><br>
<span class='small2'>Необязательно. Иконки заливать в images/forum_img</span></td>
</tr>
<tr>
<td colspan='2' class='tbl'><span class='small2'>Изображение форума неимеющего новые сообщения:</span><br>
<input type='text' name='forum_folder' value='$forum_folder' class='textbox' style='width:285px;'><br>
<span class='small2'>Необязательно. Иконки заливать в images/forum_img</span></td>
</tr>


2. Идем forum/index.php:

Ищем

if ($new_posts > 0) {
$fim = "<img src='".THEME."forum/foldernew.gif' alt='".$locale['560']."'>";
} else {
$fim = "<img src='".THEME."forum/folder.gif' alt='".$locale['561']."'>";
}



заменяем на

if ($new_posts > 0) {
if ($data2['forum_foldernew'] != "") {
$fim = "<img src='".IMAGES."forum_img/".$data2['forum_foldernew']."' alt='".$locale['567']."'><br><br>\n";
} else {
$fim = "<img src='".THEME."forum/foldernew.gif' alt='".$locale['560']."'>";
}

} else {
if ($data2['forum_folder'] != "") {
$fim = "<img src='".IMAGES."forum_img/".$data2['forum_folder']."' alt='".$locale['567']."'><br><br>\n";
} else {
$fim = "<img src='".THEME."forum/folder.gif' alt='".$locale['560']."'>";
}

}




3. Добавляем поля в базу rusfusion_forums:

Я делал без запроса а просто через пхпмайдмин

надо добавить два поля

forum_foldernew varchar(200) cp1251_general_ci
forum_folder varchar(200) cp1251_general_ci


после forum_sub smallint(5) UNSIGNED Нет 0


Теперь создай в папке images папку forum_img и выставь права как у всех папок....все...теперь редактируй форумы....картинки для форумов надо заливать в ету папку и потом при редактировании в админке только писать название картинки для форума.....


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 16  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 16 Марта 2008, 21:49:31
Скрываем любой раздел под паролем, доступ только для избранных...
beta-release 0.1


Файлы подлежащие изменениям:
1. maincore.php
2. forum/index.php
3. forum/viewforum.php
4. forum/viewthread.php
5. administraion/forums.php
6. MySQL




1. Открываем maincore.php, ищем:

// Redirect browser using the header function
function redirect($location, $type="header") {


Добавляем перед

if (isset($_POST['forum_enter'])) {
$forum_password = md5(md5($_POST['forum_password']));
$forum = $_POST['forum_id'];
$cookie_value = $forum.".".$forum_password;
$cookie_exp = time() + 3600*3;
$result = dbarray(dbquery("SELECT * FROM ".$db_prefix."forums WHERE forum_id='".$forum."'"));
if ($result['forum_password'] == $forum_password) {
setcookie("forum_password", $cookie_value, $cookie_exp, "/", "", "0");
}
redirect(FORUM."viewforum.php?forum_id=".$forum."", "script");
}



2. Открываем и редактируем forum/index.php

Ищем функцию которая отвечает за картинку форума, выкладываю свой код а вы под себя сделайте:

if ($new_posts > 0) {
if ($data2['forum_foldernew'] != "") {
$fim = "<img src='".IMAGES."forum_img/".$data2['forum_foldernew']."' alt='".$locale['567']."'>\n";
} else {
$fim = "<img src='".THEME."forum/foldernew.gif' alt='".$locale['560']."'>";
}

} else if ($data2['forum_password']) {
$fim = "<img src='".IMAGES."forum_img/closed.gif' alt='".$locale['567']."'>\n";
}
else {
if ($data2['forum_folder'] != "") {
$fim = "<img src='".IMAGES."forum_img/".$data2['forum_folder']."' alt='".$locale['567']."'>\n";
} else {
$fim = "<img src='".THEME."forum/folder.gif' alt='".$locale['560']."'>";
}

}


то что выделено жирным показывает картинку если тема под паролем!

3. Открываем и редактируем forum/viewforum.php:


Следующий код надо вставлять после кода вывода объявления, у меня он изменен, поэтому привести пример немогу=( :

if (isset($_COOKIE['forum_password'])) {
$cookie_vars = explode(".", $_COOKIE['forum_password']);
$forums = $cookie_vars['0'];
$forum_password = $cookie_vars['1'];
$result = dbarray(dbquery("SELECT * FROM ".$db_prefix."forums WHERE forum_id='".$forums."'"));
if ($result['forum_password'] == $forum_password) {
$access = 1;
} else {
$access = 0;
}
}


$results = dbarray(dbquery("SELECT * FROM ".$db_prefix."forums WHERE forum_id='".$forum_id."'"));

if ($access == 0 && $results['forum_password']) {
forumsidez('Введите пароль раздела');
echo"<b>Даний розділ захищено паролем!</b><br>
Якщо у Вас немає доступу до даного розділу, не намагайтеся ввести пароль. Всі невдалі спроби записуються в логах Адміністратора і Ви можете позбутися прав користувача форуму.

Перевірте і переконаєтеся, що Ваш браузер підтримує тимчасові cookies

<form name='loginform' method='post' action='".FUSION_SELF."'>
".$locale['062'].": <input type='password' name='forum_password' class='textbox' style='width:100px;filter:alpha(opacity=70)'>
<input type='hidden' name='forum_id' value='".$forum_id."' class='textbox'>
<input type='submit' name='forum_enter' value='Вход' class='button'>
</form>
";
closesidez();
} else {


далее перед

require_once "../side_right.php";
require_once "footer.php";
?>


Вставить }

4. Открываем и редактируем forum/viewthread.php

Ищем $posts_per_page = 20;

Добавляем перед:



if (isset($_COOKIE['forum_password'])) {
$cookie_vars = explode(".", $_COOKIE['forum_password']);
$forums = $cookie_vars['0'];
$forum_password = $cookie_vars['1'];
$result = dbarray(dbquery("SELECT * FROM ".$db_prefix."forums WHERE forum_id='".$forums."'"));
if ($result['forum_password'] == $forum_password) {
$access = 1;
} else {
$access = 0;
}
}


$results = dbarray(dbquery("SELECT * FROM ".$db_prefix."forums WHERE forum_id='".$forum_id."'"));

if ($access == 0 && $results['forum_password']) {
forumsidez('Введите пароль раздела');
echo"<b>Даний розділ захищено паролем!</b><br>
Якщо у Вас немає доступу до даного розділу, не намагайтеся ввести пароль. Всі невдалі спроби записуються в логах Адміністратора і Ви можете позбутися прав користувача форуму.

Перевірте і переконаєтеся, що Ваш браузер підтримує тимчасові cookies

<form name='loginform' method='post' action='".FUSION_SELF."'>
".$locale['062'].": <input type='password' name='forum_password' class='textbox' style='width:100px;filter:alpha(opacity=70)'>
<input type='hidden' name='forum_id' value='".$forum_id."' class='textbox'>
<input type='submit' name='forum_enter' value='Вход' class='button'>
</form>
";
closesidez();
} else {


Ищем
require_once BASEDIR."side_right.php";
require_once BASEDIR."footer.php";
?>

добавляем перед }

5. Открываем и редактируем administraion/forums.php

Ищем
if ($action == "edit" && $t == "forum") {

В запросе что ниже етой строки добавляем выделенное красным

$result = dbquery("UPDATE ".$db_prefix."forums SET forum_name='$forum_name', forum_cat='$forum_cat', forum_description='$forum_description', forum_access='$forum_access', forum_posting='$forum_posting', forum_sub='$forum_sub', forum_foldernew='$forum_foldernew', forum_folder='$forum_folder', forum_password='".md5(md5($forum_password))."' WHERE forum_id='$forum_id'");


далее ищем

$result = dbquery("UPDATE ".$db_prefix."forums SET forum_order=forum_order+1 WHERE forum_cat='$forum_cat' AND forum_order>='$forum_order'");

В запросе что ниже етой строки добавляем выделенное красным

$result = dbquery("INSERT INTO ".$db_prefix."forums (forum_cat, forum_name, forum_order, forum_description, forum_moderators, forum_access, forum_posting, forum_lastpost, forum_lastuser, forum_sub, forum_foldernew, forum_folder, forum_password) VALUES ('$forum_cat', '$forum_name', '$forum_order', '$forum_description', '$forum_mods', '$forum_access', '$forum_posting', '0', '0', '$forum_sub', '$forum_foldernew', '$forum_folder', '".md5(md5($forum_password))."'");

ищем $forum_sub = $data['forum_sub'];
добавляем ниже
$forum_password = $data['forum_password'];

ищем $forum_sub = "";
добавляем ниже $forum_password = "";


ищем
<tr>
<td colspan='2' class='tbl'>".$locale['460']."<br>
<input type='text' name='forum_name' value='$forum_name' class='textbox' style='width:285px;'></td>
</tr>


добавляем ниже
<tr>
<td colspan='2' class='tbl'>Пароль<br>
<input type='password' name='forum_password' value='$forum_password' class='textbox' style='width:285px;'></td>
</tr>



6. Добавить в базе новое поле
`forum_password` varchar(32) NOT NULL,


Только неработает редирект при входе, вроде все=)

Просьба протестировать и отписатся о результатах


[Изменил(а) pozitiv, 17 Марта 2008, 15:10:05]

--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
# 17  
pozitiv
SF Team

Avatar пользователя

паZитифф

SF Support Team

Почетный SF

Сообщений: 1676
Откуда: Киев
Зарегистрирован: 18 Ноября 2007, 18:49:13
Сказали спасибо 148 раз
Статус: offline
ICQ статус 3902393
Опубликовано 08 Апреля 2008, 20:16:23
Новая мелочь...отображает на форуме кто и когда закрыл тему...

Создать в базе два новых поля(выделенные красным)

CREATE TABLE IF NOT EXISTS `rusfusion_threads` (
`forum_id` smallint(5) unsigned NOT NULL default '0',
`thread_id` smallint(5) unsigned NOT NULL auto_increment,
`thread_smile` varchar(100) NOT NULL,
`thread_subject` varchar(100) NOT NULL default '',
`thread_description` varchar(100) NOT NULL,
`thread_author` smallint(5) unsigned NOT NULL default '0',
`thread_views` smallint(5) unsigned NOT NULL default '0',
`thread_lastpost` int(10) unsigned NOT NULL default '0',
`thread_lastuser` smallint(5) unsigned NOT NULL default '0',
`thread_sticky` tinyint(1) unsigned NOT NULL default '0',
`thread_locked` tinyint(1) unsigned NOT NULL default '0',
`thread_replies` smallint(5) unsigned NOT NULL default '0',
`thread_close_author` smallint(5) unsigned NOT NULL default '0',
`thread_close_time` int(10) unsigned NOT NULL default '0',

PRIMARY KEY (`thread_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=91 ;


Далее в options.php найти
$result = dbquery("UPDATE ".$db_prefix."threads SET thread_locked='1' WHERE thread_id='$thread_id'");

и заменить на

$result = dbquery("UPDATE ".$db_prefix."threads SET thread_locked='1', thread_close_author='".$userdata['user_id']."', thread_close_time='".time()."' WHERE thread_id='$thread_id'");

и теперь в файле viewthread.php в том месте где вы хотите чтобы отображало автора и дату вставте код

$locked = dbarray(dbquery("SELECT * FROM ".$db_prefix."threads WHERE thread_id='$thread_id'"));
if ($locked['thread_locked'] == 1) {
$author = dbarray(dbquery("SELECT * FROM ".$db_prefix."users WHERE user_id='".$locked['thread_close_author']."'"));
echo "<b>Тему закрыл:</b> ".$author['user_name'].", <b>дата закрытия:</b> ".showdate("forumdate", $locked['thread_close_time'])."";
}


Все....


--------------------
wmz - Z226856101527
wmr - R513979829437

Все вопросы задавать на форуме. На вопросы заданные в приват или асю неотвечаю!
^ наверх ^ 3902393 http://nekto.me
Перейти на форум:


104,859,016 уникальных посетителей
сейчас: 01 Ноября 2024, 01:45:32
Генерация страницы: 0.44 сек.

Original size:80 кб.
GZipped size: 16 кб.
Compression:80%