Русское сообщество fluxbb

Быстрый лёгкий надёжный форумный движок

Вы не вошли.

Объявление

Вы можете внести свой вклад в содержание сайта. Жертвователи попадут в почетную группу "Спонсоры". Поддержать сайт.

#1 2007-12-03 00:37:08

danger4k
Гость

редиректные ссылки из постов

может туплю...но нигде в настройках такого не нашел...
Я не хотел бы что бы исходящие ссылки с форума были прямыми (нужны редиректные)
Подскажите плиз как))

#2 2007-12-05 15:37:36

danger4k
Гость

Re: редиректные ссылки из постов

я некорректно вопрос задал? непонятно в смысле? или ни кто не знает?

#3 2007-12-05 17:28:52

artoodetoo
Гость

Re: редиректные ссылки из постов

в include/parser.php найти функцию handle_url_tag()
в строке global добавить $pun_config, ниже найти

    return '<a href="'.$full_url.'">'.$link.'</a>';

заменить на что-то типа

    if (preg_match('#^'.preg_quote(str_replace('www.', '', $pun_config['o_base_url']), '#').'#i', str_replace('www.', '', $full_url)))
        return '<a class="internal" href="'.$full_url.'">'.$link.'</a>';
    else
        return '<a class="external" href="redirect.php?url='.urlencode($full_url).'">'.$link.'</a>';

понятно? дальше зависит от твоего воображения

#4 2007-12-05 20:27:22

artoodetoo
Гость

Re: редиректные ссылки из постов

такой прием, кроме прочего, позволяет задать разные стили для внутренних и внешних ссылок.
можно, например, оформить внешние ссылки в стиле wiki: для стиля Oxygen в конец файла style/imports/Oxygen_cs.css дописываем

a.external {
    background: url(../../img/external.png) center right no-repeat;
    TEXT-DECORATION: none;
    BORDER-BOTTOM: 1px dotted;
    padding-right: 13px;
}

файл external.png можно скопировать в img/ отсюда external.png

Добавлено спустя     6 минут   17 секунд:
для тех, кто не может придумать скрипт для редиректа, могу предложить такой: копим статистику переходов в кеш-файле (БД не используется, просто и быстро)

redirect.php

<?php
define('PUN_ROOT', './');

if (!isset($_GET['url']))
    die('oops! no params');

$url = $_GET['url'];

@include PUN_ROOT.'cache/cache_urls.php';
if (!defined('PUN_URLS_LOADED'))
    $urls = array();

$referrer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');

if (isset($urls[$url]))
{
    $refs = $urls[$url][1];
    $refs[] = $referrer;
    $urls[$url] = array($urls[$url][0]+1, array_unique($refs));
}
else
    $urls[$url] = array(1, array($referrer));

$fh = @fopen(PUN_ROOT.'cache/cache_urls.php', 'wb');
if (!$fh)
    die('Unable to write file to cache directory. Please make sure PHP has write access to the directory \'cache\'');
@flock($fh, 2);
fwrite($fh, '<?php'."\n\n".'define(\'PUN_URLS_LOADED\', 1);'."\n\n".'$urls = '.var_export($urls, true).';'."\n\n".'?>');
fclose($fh);

header('Location: '.$url);

в cache/cache_urls.php копится статистика такого вида, пример (копировать не надо!):

<?php

define('PUN_URLS_LOADED', 1);

$urls = array (
  'http://ya.ru/' => 
  array (
    0 => 3,
    1 => 
    array (
      0 => 'http://myforum.com/viewtopic.php?pid=28',
      1 => 'http://myforum.com/viewtopic.php?pid=29',
    ),
  ),
  'http://rambler.ru/' => 
  array (
    0 => 2,
    1 => 
    array (
      0 => 'http://myforum.com/viewtopic.php?id=4',
    ),
  ),
  'http://lenta.ru/' => 
  array (
    0 => 1,
    1 => 
    array (
      0 => 'http://myforum.com/viewtopic.php?id=4',
    ),
  ),
);

?>

посмотреть статистику (только для админа)
redirect_stat.php

<?php
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';

if ($pun_user['g_id'] > PUN_ADMIN)
    message($lang_common['No permission']);

$page_title = pun_htmlspecialchars($pun_config['o_board_title'].' - Redirect statistics');

require PUN_ROOT.'header.php';

@include PUN_ROOT.'cache/cache_urls.php';

?>
<div class="blocktable">
    <h2><span>Redirect statistics</span></h2>
    <div class="box">
        <div class="inbox" style="PADDING: 10px">
<?php

function cmp($a, $b)
{
    if ($a[0] == $b[0]) {
        return 0;
    }
    return ($a[0] < $b[0]) ? 1 : -1;
}

if (defined('PUN_URLS_LOADED'))
{
    uasort($urls, 'cmp');

    foreach($urls as $url => $value)
    {
        echo '<p><strong>'.$value[0].'</strong>: <a href="'.$url.'" class="external">'.pun_htmlspecialchars($url).'</a> [';

        $refs = $value[1];
        for($i=0; $i<count($refs); $i++)
            $refs[$i] = '<a href="'.$refs[$i].'">#'.($i+1).'</a>';
        echo implode(', ', $refs);

        echo "]</p>\n";
    }
}

?>
        </div>
    </div>
</div>

<?php

require PUN_ROOT.'footer.php';

выглядит статистика вот так:
redirectstatnr8.gif

#5 2007-12-06 14:19:11

Zevs
Гость

Re: редиректные ссылки из постов

Прикольно !
Надо попробовать у себя !

#6 2008-06-26 16:54:37

Visman
Гость

Re: редиректные ссылки из постов

Это

header('Location: '.$url);

надо поменять на это

header('Location: '.str_replace('&amp;', '&', $url));

в redirect.php.

#7 2008-06-26 18:53:15

Visman
Гость

Re: редиректные ссылки из постов

Нет, лучше это

$url = $_GET['url'];

поменять на это

$url = str_replace('&amp;', '&', $_GET['url']);

А это

header('Location: '.$url);

оставить как есть.

#8 2008-06-28 06:15:16

Visman
Гость

Re: редиректные ссылки из постов

Вот наваял мод на основе предложений artoodetoo smile

1. Выполнить в плагине DB management или в phpMyAdmin заменив #__ префиксом Вашей базы.

   INSERT INTO #__config (conf_name, conf_value) VALUES('o_board_redirect', '');

2. Открываем файл admin_options.php

3. После этого

                                <tr>
                                    <th scope="row">Базовый URL</th>
                                    <td>
                                        <input type="text" name="form[base_url]" size="50" maxlength="100" value="<?php echo $pun_config['o_base_url'] ?>" />
                                        <span>Полный URL форума без замыкающего слэш (т.е. http://www.mydomain.com/forums). Это <strong>необходимо</strong> для корректной работы панели администрироавния и модерирования. Если вы получаете ошибки "Bad referer", вероятно URL некорректный.</span>
                                    </td>
                                </tr>

Ставим это

                                <tr>
                                    <th scope="row">Условие редиректа</th>
                                    <td>
                                        <input type="text" name="form[board_redirect]" size="50" maxlength="255" value="<?php echo pun_htmlspecialchars($pun_config['o_board_redirect']) ?>" />
                                        <span>Регулярное выражение соответствующее ссылкам не перехватываемым редиректом. Если пусто, то все ссылки идут без редиректа.<br /> Пример: ^(http|ftp)://(www\.)?(сайт1|сайт2|сайт3)</span>
                                    </td>
                                </tr>

4. Сохранить файл admin_options.php

5. Открыть файл parser.php

6. Заменить

    function handle_url_tag($url, $link = '')
    {
        global $pun_user;

На

    function handle_url_tag($url, $link = '')
    {
        global $pun_user, $pun_config;

7. Заменить

    return '<a href="'.$full_url.'">'.$link.'</a>';

На

    if (empty($pun_config['o_board_redirect']) || eregi($pun_config['o_board_redirect'],$full_url)) {
        return '<a class="internal" href="'.$full_url.'">'.$link.'</a>';
    } else {
        return '<a class="external" href="redirect.php?url='.urlencode($full_url).'">'.$link.'</a>';
    }

8. Сохранить файл parser.php

9. Создать пустой файл redirect.php в корне форума

10. Скопировать в него код

<?php
define('PUN_ROOT', './');

if (!isset($_GET['url']))
    die('oops! no params');

$url = str_replace('&amp;', '&', $_GET['url']);

@include PUN_ROOT.'cache/cache_urls.php';
if (!defined('PUN_URLS_LOADED'))
    $urls = array();

$referrer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');

if (isset($urls[$url]))
{
    $refs = $urls[$url][1];
    $refs[] = $referrer;
    $urls[$url] = array($urls[$url][0]+1, array_unique($refs));
}
else
    $urls[$url] = array(1, array($referrer));

$fh = @fopen(PUN_ROOT.'cache/cache_urls.php', 'wb');
if (!$fh)
    die('Unable to write file to cache directory. Please make sure PHP has write access to the directory \'cache\'');
@flock($fh, 2);
fwrite($fh, '<?php'."\n\n".'define(\'PUN_URLS_LOADED\', 1);'."\n\n".'$urls = '.var_export($urls, true).';'."\n\n".'?>');
fclose($fh);

header('Location: '.$url);

11. Сохранить файл redirect.php

12. Создать пустой файл AP_Redirect.php в каталоге plugins форума

13. Скопировать в него код

<?php

// Make sure no one attempts to run this script "directly"
if (!defined('PUN'))
    exit;

// Tell admin_loader.php that this is indeed a plugin and that it is loaded
define('PUN_PLUGIN_LOADED', 1);

@include PUN_ROOT.'cache/cache_urls.php';

function cmp($a, $b)
{
    if ($a[0] == $b[0]) {
        return 0;
    }
    return ($a[0] < $b[0]) ? 1 : -1;
}

// Display the admin navigation menu
generate_admin_menu($plugin);
?>
    <div class="block">
        <h2><span>Статистика переходов - v 1.0</span></h2>
        <div class="box">
            <div class="inbox">
        <p>Этот плагин показывает статистику переходов по ссылкам с форума.
                </p>
            </div>
        </div>
    </div>

    <div class="blockform">
        <h2 class="block2"><span>Статистика</span></h2>
        <div class="box">
<?php
if (defined('PUN_URLS_LOADED'))
{
    uasort($urls, 'cmp');

    foreach($urls as $url => $value)
    {
        echo '<p><strong>'.$value[0].'</strong>: <a href="'.$url.'" class="external">'.pun_htmlspecialchars($url).'</a> [';

        $refs = $value[1];
        for($i=0; $i<count($refs); $i++)
            $refs[$i] = '<a href="'.$refs[$i].'">#'.($i+1).'</a>';
        echo implode(', ', $refs);

        echo "]</p>\n";
    }
}
?>
        </div>
    </div>

14. Сохранить файл AP_Redirect.php

Редактировался Visman (2008-06-28 06:17:58)

#9 2009-03-19 05:14:50

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman

Установил ваш мод, но не могу разобраться, как им пользоваться. Не подскажете?

#10 2009-03-19 14:29:07

Visman
Гость

Re: редиректные ссылки из постов

В админке:
на странице Опции новая настройка Условие редиректа.
и плагин Redirect (только информирует).

#11 2009-03-19 15:30:08

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman пишет:

В админке:
на странице Опции новая настройка Условие редиректа.
и плагин Redirect (только информирует).

А как правильно задавать условия редиректа (там не совсем понятно написано)?

И еще обнаружилась такая бяка: в сроку для ввода условий редиректа влазят всего несколько ссылок. У меня более 3-х адресов не вводятся neutral

#12 2009-03-19 15:48:57

Visman
Гость

Re: редиректные ссылки из постов

Вот моя строка

^http://(www\.)?(forum\.alltes\.ru|alltes\.ru|radikal\.ru|wiki\.rumor\.ru|forum\.rumor\.ru|mtes\.ru|tesall\.ru|forum\.tesall\.ru|tesnexus\.com)

т.е. ссылки на сайты forum.alltes.ru, alltes.ru, (_radikal_ru_), wiki.rumor.ru, forum.rumor.ru, mtes.ru, tesall.ru, forum.tesall.ru и tesnexus.com нормальные, а все остальные - через редирект.
В коде

...<input type="text" name="form[board_redirect]" size="50" maxlength="255"...

максимальная длина строки 255 символов задана!

#13 2009-03-19 17:05:31

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman пишет:

т.е. ссылки на сайты forum.alltes.ru, alltes.ru, (_radikal_ru_), wiki.rumor.ru, forum.rumor.ru, mtes.ru, tesall.ru, forum.tesall.ru и tesnexus.com нормальные, а все остальные - через редирект.

Т.е. там можно задавать и условия исключений и шаблоны? 

Не совсем это очевидно для рядового пользователя. А где можно почитать о принципе формирования этого шаблона?

И на мой взгляд 255 символов маловато для всей возможной статистики. Мод получается слишком малофункциональным ...

#14 2009-03-19 17:20:59

Visman
Гость

Re: редиректные ссылки из постов

NewUser21031972 пишет:

Не совсем это очевидно для рядового пользователя. А где можно почитать о принципе формирования этого шаблона?

Это регулярное выражение, т.ч. читай про них.

NewUser21031972 пишет:

И на мой взгляд 255 символов маловато для всей возможной статистики. Мод получается слишком малофункциональным ...

В 255 символов можно много что напихать с помощью регулярных выражений.
А ограничения такие наложены таблицей config!

#15 2009-03-19 17:53:55

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman пишет:

Это регулярное выражение, т.ч. читай про них.

Ок - почитаю ...

#16 2009-03-19 19:35:30

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman пишет:

т.е. ссылки на сайты forum.alltes.ru, alltes.ru, (_radikal_ru_), wiki.rumor.ru, forum.rumor.ru, mtes.ru, tesall.ru, forum.tesall.ru и tesnexus.com нормальные, а все остальные - через редирект.

Так значит в строке редиректа задаются только исключения, а по всем остальным ссылками статистика накапливается?

Если так, то 255 символов вполне достаточно

#17 2009-03-20 13:09:40

NewUser21031972
Гость

Re: редиректные ссылки из постов

Вроде работает. Возник только такой вопрос: а что означают ссылки [#1, #2, #3] и для чего они нужны? При наведении на любую из них показывается одна и та же ссылка http:/..../admin_loader.php?plugin=AP_Redirect.php

#18 2009-03-20 13:27:27

Visman
Гость

Re: редиректные ссылки из постов

NewUser21031972 пишет:

а что означают ссылки [#1, #2, #3]

Это ссылки на страницы форума, откуда были сделаны переходы по текущей ссылке.
Замечания: Правильно было бы:
1. Чтобы была ссылка на сообщение где ссылка висит или на тему, а не куча таких ссылок.
2. Надо чтобы ссылки в ЛС не обратывались редиректом, а то фигня получается.

#19 2009-03-20 13:32:00

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman пишет:

Это ссылки на страницы форума, откуда были сделаны переходы по текущей ссылке.

Так в том-то и дело, что ссылки все до единой одинаковые, и при клике на любую просто обновляют страницу со статистикой редиректа.

Visman пишет:

Замечания: Правильно было бы:
1. Чтобы была ссылка на сообщение где ссылка висит или на тему, а не куча таких ссылок.
2. Надо чтобы ссылки в ЛС не обратывались редиректом, а то фигня получается.

С замечаниями согласен. Планируется ли дополнения мода?

#20 2009-03-20 15:12:52

Visman
Гость

Re: редиректные ссылки из постов

Не имею понятия smile

#21 2009-03-20 16:30:32

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman пишет:

Не имею понятия smile

Обыдно ...
sad

#22 2009-04-02 15:54:21

NewUser21031972
Гость

Re: редиректные ссылки из постов

Visman

А есть ли возможность изменить форму статистики так, чтобы рядом со ссылками [#1, #2, #3] в скобках отражалось количество кликов с каждой страницы.

Чтобы в конечном итоге было, например, так:  [#1(20), #2(83), #3(75)]

#23 2009-04-02 20:04:34

Visman
Гость

Re: редиректные ссылки из постов

Об этом надо artoodetoo спрашивать, т.к. на основе его предложений я свой вариант делал.

#24 2009-04-02 20:38:14

artoodetoo
Гость

Re: редиректные ссылки из постов

хз, у меня всё работало smile NewUser21031972 попробуй сам разобраться.

#25 2009-04-02 23:54:50

NewUser21031972
Гость

Re: редиректные ссылки из постов

artoodetoo пишет:

хз, у меня всё работало smile NewUser21031972 попробуй сам разобраться.

Так оно и работает в обозначенных пределах. Правда это не совсем то, что я изначально хотел, но тоже полезно.

Речь о небольших доработках. Заложено ли это изначально для реализации пожелания?

Подвал доски

Под управлением FluxBB. Хостинг Hostens