Fluxbb |
Автор: admin Просмотров: 15694 Комментарии:
Добавлен: 21 сентября 2015
Обновлено: 3.03.2017 - 13:40
Популярный скрипт форума на PHP и MySQL.
В 2008 году команда разработчиков отделилась от проекта Punbb из за управленческих проблем. FluxBB был объявлен финалистом награды «Выбор Общества 2008» в категории «Лучший новый проект» на SourceForge.net.
Возможности Fluxbb
- Скорость и гибкость.
- Простой интуитивный интерфейс.
- Шаблоны
- Плагины.
- Защита от спама.
- RSS-каналы
Несмотря на внешнюю простоту и малый размер дистрибутива (менее 2Мб), FluxBB имеет функциональность большого форума:
он Поддерживает BB-код, управление пользователями, стилями и языками, благодаря своей гибкости легко приспосабливается для любых нужд. Также пользователь имеет возможность установить в форуме дополнительные плагины.
Закрываем Powered by (Под управлением FluxBB ):
/footer.php
Меняем:
$user_personal[] = '
'.$user['url'].'
';
На
FluxBB '.(($pun_config['o_show_version'] == '1') ? ' '.$pun_config['o_cur_version'] : '')) ?>
Вместо https://site.ru/go.php? можно закрыть весь html через
Отключаем режим обслуживания (maintenance)
Есть 3 способа отключить режим maintenance:
1. Поменять значение 'o_maintenance' => '1' на 0 в таблице config и удалить все файлы *.php из папки /cache.
2. Ввести значение 0 прямо в кеш-файле /cache/cache_config.php, а затем залогинившить зайти в админку и поправить там.
3. В файл config.php добавить define('PUN_TURN_OFF_MAINT',0);
Сайт русского сообщества: https:// fluxbb .org.ru
Перевод с Википедии: https://uk.wikipedia.org/wiki/ FluxBB
Добавление счётчиков metrika и liveinternet в FluxBB , PunBB
Откройте файл
/forum/include/template/main.tpl
и вставьте код счётчика в любое место внутри
Хак для скрытия всех внешних ссылок через редирект на Fluxbb
(с возможностью оставить открытой любую необходимую ссылку)
Когда хак будет настроен, все внешние ссылки с сайта, включая ссылки в бб-кодах url, в описаниях профилей и на страницах профилей, будут работать редиректом через файл go.php
Таким образом все внешние ссылки будут иметь следующий вид:
https://site.ru/go.php?to=https://yandex.ru
Затем данный файл для надежности закрывается от индексации в robots.txt с помощью такой директивы:
Disallow: go.php
Чтобы иметь возможность оставлять некоторые ссылки открытыми, мы добавим на форум дополнительный бб-код [rurl]. Далее в инструкции в коде в качестве бб-кода будет использоваться rurl, но вы можете использовать любой другой (скажем [refurl231], чтобы защитить свой форум от спамеров, которые возможно набредут на инструкцию по этому хаку. Это маловероятно, но всё же.
Инструкция для Fluxbb 1.5.10:
1) Создаем в корне форума файл с названием go.php и таким содержанием:
<?php
$to_link = $_GET["to"];
$URL = substr_replace($URL, $to_link, 0);
header ("Location: $URL");
?>
2) Находим в файле /includes/parser.php функцию handle_url_tag, в которой нас интересует вот эта часть:
return '<a href="'.$full_url.'" rel="nofollow">'.$link.'</a>';
Заменяем её на это, изменив site.ru на ваш домен:
return '<a href="https://site.ru/go.php?to='.$full_url.'" rel="nofollow">'.$link.'</a>';
Теперь все ссылки в бб-коде url будут идти редиректом через go.php
3) Чтобы иметь возможность оставлять некоторые ссылки прямыми, без редиректов и rel=nofollow, нам нужна точно такая же функция, но которая будет обрабатывать ссылки, скажем, в бб-коде [rurl] и выдавать их напрямую, без подстановки go.php.
Для этого мы полностью копируем функцию handle_url_tag, переименовываем её в handle_rurl_tag, приводим строчку return к такому виду:
return '<a href="'.$full_url.'">'.$link.'</a>';
А также находим вот этот кусок кода:
if ($bbcode)
{
if ($full_url == $link)
return '[url]'.$link.'[/url]';
else
return '[url='.$full_url.']'.$link.'[/url]';
}
И заменяем в нём все url, на rurl. Получится вот так:
if ($bbcode)
{
if ($full_url == $link)
return '[rurl]'.$link.'[/rurl]';
else
return '[rurl='.$full_url.']'.$link.'[/rurl]';
}
Вы могли заметить, что помимо отсутствия go.php мы также убрали и rel="nofollow".
Напоминаю, что если вы хотите получить в итоге не [rurl] бб-код для открытых ссылок, а какой-то другой, то начиная с этого момента и далее все rurl вам надо заменять на свой вариант.
В итоге у вас должна получиться вот такая картина:
function handle_rurl_tag($url, $link = '', $bbcode = false)
{
$url = pun_trim($url);
// Deal with [url][img]https://example.com/test.png[/img][/url]
if (preg_match('%<img src=\"(.*?)\"%', $url, $matches))
return handle_url_tag($matches[1], $url, $bbcode);
$full_url = str_replace(array(' ', '\'', '`', '"'), array('%20', '', '', ''), $url);
if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) // Else if it doesn't start with abcdef://, we add https://
$full_url = 'https://'.$full_url;
// Ok, not very pretty :-)
if ($bbcode)
{
if ($full_url == $link)
return '[rurl]'.$link.'[/rurl]';
else
return '[rurl='.$full_url.']'.$link.'[/rurl]';
}
else
{
if ($link == '' || $link == $url)
{
$url = pun_htmlspecialchars_decode($url);
$link = utf8_strlen($url) > 55 ? utf8_substr($url, 0 , 39).' … '.utf8_substr($url, -10) : $url;
$link = pun_htmlspecialchars($link);
}
else
$link = stripslashes($link);
return '<a href="'.$full_url.'">'.$link.'</a>';
}
}
Не забываем про замену site.ru на ваш домен.
Необязательное улучшение
Хотите немного сэкономить ресурсы сервера? Для этого можно удалить лишние обработчики неправильного написания ссылок в нашей новой функции.
Убираем из handle_rurl_tag данный кусок кода:
if (strpos($url, 'www.') === 0) // If it starts with www, we add https://
$full_url = 'https://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (strpos($url, '/') === 0) // Allow for relative URLs that start with a slash
$full_url = get_base_url(true).$full_url;
и заменяем оставшуюсся
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) // Else if it doesn't start with abcdef://, we add https://
$full_url = 'https://'.$full_url;
на
if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) // Else if it doesn't start with abcdef://, we add https://
$full_url = 'https://'.$full_url;
В итоге наша функция handle_rurl_tag станет на несколько операций короче и будет выглядеть так:
function handle_rurl_tag($url, $link = '', $bbcode = false)
{
$url = pun_trim($url);
// Deal with [url][img]https://example.com/test.png[/img][/url]
if (preg_match('%<img src=\"(.*?)\"%', $url, $matches))
return handle_url_tag($matches[1], $url, $bbcode);
$full_url = str_replace(array(' ', '\'', '`', '"'), array('%20', '', '', ''), $url);
if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) // Else if it doesn't start with abcdef://, we add https://
$full_url = 'https://'.$full_url;
// Ok, not very pretty :-)
if ($bbcode)
{
if ($full_url == $link)
return '[rurl]'.$link.'[/rurl]';
else
return '[rurl='.$full_url.']'.$link.'[/rurl]';
}
else
{
if ($link == '' || $link == $url)
{
$url = pun_htmlspecialchars_decode($url);
$link = utf8_strlen($url) > 55 ? utf8_substr($url, 0 , 39).' … '.utf8_substr($url, -10) : $url;
$link = pun_htmlspecialchars($link);
}
else
$link = stripslashes($link);
return '<a href="'.$full_url.'">'.$link.'</a>';
}
}
С такой функцией в тэгах [rurl] ссылки нужно будет обязательно прописывать с https:// в начале. Вот так:
[rurl=https://yandex.ru]анкор ссылки[/rurl]
Если указать ссылку без https:// - она не будет работать, потому что мы удалили код, отвечающий за преобразование неправильных ссылок без протокола к виду с протоколом: https://site.ru
Зато сэкономили немного серверных ресурсов на будущее.
3) Теперь нам надо связать новую функцию handle_rurl_tag с, собственно, бб-кодом rurl, который нам кстати тоже сперва надо добавить.
Для этого находим в файле /includes/parser.php функцию do_bbcode, а в ней такие строки:
$pattern_callback[] = '%\[url\]([^\[]*?)\[/url\]%';
$pattern_callback[] = '%\[url=([^\[]+?)\](.*?)\[/url\]%';
Делаем дубль этих двух строк.
Меняем в дублированных строках url на rurl или ваш бб-код.
В итоге получаем такой код:
$pattern_callback[] = '%\[url\]([^\[]*?)\[/url\]%';
$pattern_callback[] = '%\[url=([^\[]+?)\](.*?)\[/url\]%';
$pattern_callback[] = '%\[rurl\]([^\[]*?)\[/rurl\]%';
$pattern_callback[] = '%\[rurl=([^\[]+?)\](.*?)\[/rurl\]%';
Далее опускаемся ниже и находим такие строки:
$replace_callback[] = 'handle_url_tag($matches[1])';
$replace_callback[] = 'handle_url_tag($matches[1], $matches[2])';
Поясню подробнее. Данные строки отвечают за то, чтобы бб-код url обрабатывался функцией handle_url_tag.
Наша задача теперь привязать только что созданный [rurl] бб-код к новой функции handle_rurl_tag.
Для этого мы также делаем дубль этих двух строк и заменяем в них handle_url_tag на handle_rurl_tag.
В итоге у нас получится вот это:
$replace_callback[] = 'handle_url_tag($matches[1])';
$replace_callback[] = 'handle_url_tag($matches[1], $matches[2])';
$replace_callback[] = 'handle_rurl_tag($matches[1])';
$replace_callback[] = 'handle_rurl_tag($matches[1], $matches[2])';
Сохраняем файл на сервере вместо стандартного, заходим на форум и создаём пост с двумя ссылками:
Одну через url бб-код, другую через rurl бб-код. Если вы всё сделали правильно, то обычная ссылка будет идти через редирект, а rurl-ссылка будет прямой и без атрибута rel="nofollow".
4) Осталось дело за малым. Помимо текстов постов, нам надо закрыть ещё и ссылки в описаниях профилей и на страницах профилей.
а) Чтобы такие ссылки в описаниях профилей тоже работали через редирект:
Открываем файл /viewtopic.php и заменяем вот эту строку:
$user_contacts[] = '<span class="website"><a href="'.pun_htmlspecialchars($cur_post['url']).'" rel="nofollow">'.$lang_topic['Website'].'</a></span>';
на это, заменив site.ru на свой домен:
$user_contacts[] = '<span class="website"><a href="https://site.ru/go.php?to='.pun_htmlspecialchars($cur_post['url']).'" rel="nofollow">'.$lang_topic['Website'].'</a></span>';
б) Чтобы редиректить ссылки со страниц профилей, открываем файл /profile.php и аналогичным образом заменяем это:
$user_personal[] = '<dd><span class="website"><a href="'.$user['url'].'" rel="nofollow">'.$user['url'].'</a></span></dd>';
на это, заменив site.ru на свой домен:
$user_personal[] = '<dd><span class="website"><a href="https://site.ru/go.php?to='.$user['url'].'" rel="nofollow">'.$user['url'].'</a></span></dd>';
Инструкция для Fluxbb 1.4
В файле include/parser.php также дублируем функцию function handle_url_tag
и меняем
{на
if ($full_url == $link)
return '[url]'.$link.'[/url]';
else
return '[url='.$full_url.']'.$link.'[/url]';
}
{
if ($full_url == $link)
return '[rurl]'.$link.'[/rurl]';
else
return '[rurl='.$full_url.']'.$link.'[/rurl]';
}
Добавляем бб-тэг rurl и связываем его с нашей новой функцией. Для этого находим в файле include/parser.php такие строчки:
$pattern[] = '#\[url\]([^\[]*?)\[/url\]#e';Дублируем их и в продублированных строчках заменяем url на rurl
$pattern[] = '#\[url=([^\[]+?)\](.*?)\[/url\]#e';
Далее находим строки:
$replace[] = 'handle_url_tag(\'$1\')';Дублируем их и также заменяем url на rurl
$replace[] = 'handle_url_tag(\'$1\', \'$2\')';
Сделал фрилансер Wondersmith
Я потратился на этот код, в знак благодарности можете зарегистрироваться по моей партнёрской ссылке на linkum.ru
In English
hack to hide all external links through a redirect to Fluxbb
(with the option to leave open any link)
When the hack is configured, all external links from the site including the links in BB-code url in the description of profiles and profile pages will work via redirect file go.php
So all external links will have the following form:
https://site.ru/go.php?to=https://yandex.ru
Then this file is for reliability is closed from indexing in robots.txt using this Directive:
Disallow: go.php
To be able to leave some of the links to open, we add to the forum for more BB code [rurl]. Further, the user in the code as a BB code will be used to rurl, but you can use any other (say [refurl231] to protect your forum from spammers who may find the instructions for this hack. It's unlikely, but still.
Manual for Fluxbb 1.5.10:
1) Create in the root of the forum a file called go.php and such content:
<?php
$to_link = $_GET["to"];
$URL = substr_replace($URL, $to_link, 0);
header ("Location: $URL");
?>
2) Find in the file /includes/parser.php function handle_url_tag in which we are interested in here is this part:
return '<a href="'.$full_url.'" rel="nofollow">'.$link.'</a>';
Her model is changing site.ru on your domain:
return '<a href="https://site.ru/go.php?to='.$full_url.'" rel="nofollow">'.$link.'</a>';
Now all links in BB code url will go through redirect go.php
3) to be able to leave some links are direct, without redirects and rel=nofollow, we need exactly the same function, but which will process the links, say, in BB-code [rurl] and pass them directly without lookup go.php.
To this end, we fully handle_url_tag copy the function, rename it in handle_rurl_tag driven return line like the following:
return '<a href="'.$full_url.'">'.$link.'</a>';
And find this piece of code:
if ($bbcode)
{
if ($full_url == $link)
return '[url]'.$link.'[/url]';
else
return '[url='.$full_url.']'.$link.'[/url]';
}
And model everything in it url, rurl. Will be this:
if ($bbcode)
{
if ($full_url == $link)
return '[rurl]'.$link.'[/rurl]';
else
return '[rurl='.$full_url.']'.$link.'[/rurl]';
}
You may have noticed that in addition to the lack go.php we also removed a rel="nofollow".
I remind you that if you want to get in the end is not [rurl] BB-code to open links, and some other, then starting from this point on, all you need rurl replace with your own version.
In the end, you should get this picture:
handle_rurl_tag function($url, $link = ", $bbcode = false)
{
$url = pun_trim($url);
// Deal with [url][img]https://example.com/test.png[/img][/url]
if (preg_match('%<img src=\"(.*?)\"%', $url, $matches))
handle_url_tag return($matches[1], $url, $bbcode);
$full_url = str_replace(array(' ', '\", "', '"'), array('%20', ", ", "), $url);
if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) // Else if it doesn't start with abcdef://, we add https://
$full_url = 'https://'.$full_url;
// Ok, not very pretty :-)
if ($bbcode)
{
if ($full_url == $link)
return '[rurl]'.$link.'[/rurl]';
else
return '[rurl='.$full_url.']'.$link.'[/rurl]';
}
else
{
if ($link == " || $link == $url)
{
$url = pun_htmlspecialchars_decode($url);
$link = utf8_strlen($url) > 55 ? utf8_substr($url, 0 , 39).' ... '.utf8_substr($url, -10) : $url;
$link = pun_htmlspecialchars($link);
}
else
$link = stripslashes($link);
return '<a href="'.$full_url.'">'.$link.'</a>';
}
}
With such a function in tags [rurl] reference will need to register with https:// at the beginning. Here it is:
[rurl=https://yandex.EN]anchor links[/rurl]
If you specify a link without https:// - it won't work because we removed the code responsible for converting improper links without Protocol to mean the Protocol: https://site.ru
But save a bit of server resources for the future.
3) Now we need to associate a new function with handle_rurl_tag actually BB-code rurl, which we by the way too, first I might add.
To do this, find in file /includes/parser.php function do_bbcode, and in it the following lines:
$pattern_callback[] = '%\[url\]([^\[]*?)\[/url\]%';
$pattern_callback[] = '%\[url=([^\[]+?)\](.*?)\[/url\]%';
Do take these two lines.
Change in duplicate rows on url rurl or your BB code.
The result of this code:
$pattern_callback[] = '%\[url\]([^\[]*?)\[/url\]%';
$pattern_callback[] = '%\[url=([^\[]+?)\](.*?)\[/url\]%';
$pattern_callback[] = '%\[rurl\]([^\[]*?)\[/rurl\]%';
$pattern_callback[] = '%\[rurl=([^\[]+?)\](.*?)\[/rurl\]%';
Next go down and find these lines:
$replace_callback[] = 'handle_url_tag($matches[1])';
$replace_callback[] = 'handle_url_tag($matches[1], $matches[2])';
I will explain in more detail. These lines are responsible for ensuring that BB code url is processed by the function handle_url_tag.
Our task is now to bind the newly created [rurl] BB-code to new function handle_rurl_tag.
To do this, we also take these two lines and replace them handle_url_tag on handle_rurl_tag.
In the end, we get this:
$replace_callback[] = 'handle_url_tag($matches[1])';
$replace_callback[] = 'handle_url_tag($matches[1], $matches[2])';
$replace_callback[] = 'handle_rurl_tag($matches[1])';
$replace_callback[] = 'handle_rurl_tag($matches[1], $matches[2])';
Save the file on the server instead of the standard, go to the forum and create a post with two links:
One using the url BB code using a different rurl BB-code. If you did everything correctly, then a normal link will go through the redirect, and rurl-link will be direct and without rel="nofollow".
4) it Remains the case for small. In addition to the texts of the posts, we need to close that also links in the descriptions of the profiles and on profile pages.
a) To make such links in the descriptions of the profiles also worked through a redirect:
Open file /viewtopic.php and replace this line:
$user_contacts[] = '<span class="website"><a href="'.pun_htmlspecialchars($cur_post['url']).'" rel="nofollow">'.$lang_topic['Website'].'</a></span>';
on it, replacing site.ru to your domain:
$user_contacts[] = '<span class="website"><a href="https://site.ru/go.php?to='.pun_htmlspecialchars($cur_post['url']).'" rel="nofollow">'.$lang_topic['Website'].'</a></span>';
b) to redirect links from the pages of profiles, open the file /profile.php and similarly replace it:
$user_personal[] = '<dd><span class="website"><a href="'.$user['url'].'" rel="nofollow">'.$user['url'].'</a></span></dd>';
on it, replacing site.ru to your domain:
$user_personal[] = '<dd><span class="website"><a href="https://site.ru/go.php?to='.$user['url'].'" rel="nofollow">'.$user['url'].'</a></span></dd>';
Did freelancer Wondersmith
I splurged on this code, in gratitude can register via my affiliate link exchange seo links linkum.ru
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Доски объявлений, CMS/CMF
Комментарии |