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

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

Вы не вошли.

Объявление

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

#1 2006-05-04 12:46:16

hcs
Гость

Friendly URL by hcs --- дружественные ссылки

Данный мод позволяет менять обычные ссылки на темы в форуме на читабельные.
К примеру, пишем вот такой линк - http://punbb.ru/viewtopic.php?id=160
После отправки сообщения мод сконвертирует его в линк вот такого вида Reputation mod 2.0.1
Мод работает с  линками на темы, форумы и профили.
Установка предельно проста:
1. открываем /include/function.php
2. ищем самую последнюю строку и после нее добавляем это:

///hcs friendly url replacment function  
function convert_forum_url(&$text)
{
    global $db, $pun_config;
    
    function replace($query, $pattern, $text) {
        global $db;
        if (preg_match_all($pattern, $text, $regs, PREG_SET_ORDER)) {
            foreach ($regs as $pid) {
                $result = $db->query($query.$pid[1]) or error('Unable execute query for convert url\'s', __FILE__, __LINE__, $db->error());
                if ($result) {
                    $subject = $db->result($result);
                    $pattern = "/(?<=^|\s)".str_replace("/", "\/", str_replace("?", "\?", str_replace(".", "\.", $pid[0])))."\b/";
                    $text=preg_replace ($pattern, "[url=.$pid[0].]".$subject."[/url]", $text,1);
                } 
            }
        }
        return $text;
    }
    
    // Convert viewtopic
    $url = str_replace("/", "\/", str_replace(".", "\.", $pun_config['o_base_url']."/viewtopic.php\?"));
    $pattern = "/(?<=^|\s)".$url."pid=([0-9]+)#p[0-9]+\b/";
    $query='SELECT t.subject FROM '.$db->prefix.'posts AS p INNER JOIN '.$db->prefix.'topics AS t ON t.id = p.topic_id WHERE p.id=';
    $text = replace($query, $pattern, $text);
    $pattern = "/(?<=^|\s)".$url."id=([0-9]+)\b/";
    $query='SELECT subject FROM '.$db->prefix.'topics WHERE id=';
    $text = replace($query, $pattern, $text);
    
    // Convert profile
    $url = str_replace("/", "\/", str_replace(".", "\.", $pun_config['o_base_url']."/profile.php\?"));
    $pattern = "/(?<=^|\s)".$url."id=([0-9]+)\b/";
    $query='SELECT username FROM '.$db->prefix.'users WHERE id=';
    $text = replace($query, $pattern, $text);
    
    // Convert viewforum
    $url = str_replace("/", "\/", str_replace(".", "\.", $pun_config['o_base_url']."/viewforum.php\?"));
    $pattern = "/(?<=^|\s)".$url."id=([0-9]+)\b/";
    $query='SELECT forum_name FROM '.$db->prefix.'forums WHERE id=';
    $text = replace($query, $pattern, $text);

}

3. открываем post.php
4. находим строку ~158

// Validate BBCode syntax

5. добавляем перед этим:

// MOD CONVENIENT FORUM URL BEGIN        
            convert_forum_url($message);
// MOD CONVENIENT FORUM URL END

вуаля.
код в стадии тестирования.

Редактировался hcs (2007-03-21 05:24:24)

#2 2006-05-05 11:57:23

uT)Dev1L
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Ну что могу сказать? Спасибо тебе хороший человек smile

#3 2006-11-02 07:18:29

maximum
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Хороший мод, только вот сегодня решил урлы поменять, и чтобы не накосячить, обращаюсь за помощью. smile

forum1.html форум
forum1-2.html форум 2 страница
topic1.html топик
topic1-2.html топик 2 страница
topic1-all.html топик весь
p1.html#p1 пост

Как внедрить? Да, ещё хотел узнать, в базу в каком виде ложится ссылка? В обычном, или она конвертируется "на лету"?

#4 2006-11-02 08:13:20

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

в базу ложится обрамленная бб-кодом [url], т.е. конвертируется один раз при отправке поста.
Мод работает только с топиками, поэтому править имеет смысл только для :
topic1.html топик
topic1-2.html топик 2 страница
topic1-all.html топик весь

что значит вторая страница? есть еще и 3 и 4?

Судя по требованиям надо править регексп. Правка достаточно серъёзная. На вскидку не могу ничего предложить.

#5 2006-11-04 17:14:23

kmb
Гость

Re: Friendly URL by hcs --- дружественные ссылки

вставил всё... а как оно рабоатет не врубаюсь? где же чпу?

#6 2006-11-04 17:17:42

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

это не чпу. этот мод конвертирует внутренние ссылки (ссылки на сообщения и на темы на локальном форуме) при отправке сообщения в бб-код с названием темы.
мод чпу совершенно другой мод.

#7 2006-11-07 22:24:40

Slavik
Гость

Re: Friendly URL by hcs --- дружественные ссылки

А это и есть Convenient Forum URL's ?

#8 2006-11-08 05:07:21

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Да. Сначала я назвал его Friendly, потом пошарился по другим форумам, решающим аналогичную задачу, и понял что Friendly в понимании пользователей - совершенно другая функциональность.

#9 2006-11-08 18:30:27

Slavik
Гость

Re: Friendly URL by hcs --- дружественные ссылки

hcs пишет:

понял что Friendly в понимании пользователей - совершенно другая функциональность

Понятно, но слова Convenient в моем понимании вообще нет smile

#10 2006-11-08 18:35:15

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Зато в понимании электронных словарей есть smile

#11 2006-11-08 21:44:52

maximum
Гость

Re: Friendly URL by hcs --- дружественные ссылки

"Convert" было бы понятнее.

#12 2007-02-21 03:31:21

Px
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Поставил на тестовую сборку форума, текст ссылки меняет на название темы, но ломает саму ссылку. На выходе вместо

http://localhost/forum/viewtopic.php?id=505

имеем

http://.http//localhost/forum/viewtopic.php?id=505.

#13 2007-02-22 19:48:01

kmb
Гость

Re: Friendly URL by hcs --- дружественные ссылки

понравилось. спасибо.

#14 2007-02-22 21:06:11

Slavik
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Px
неправильно установил, у меня работает нормально

#15 2007-02-23 09:24:49

artoodetoo
Гость

Re: Friendly URL by hcs --- дружественные ссылки

очень полезный мод — спасибо hcs!

#16 2007-03-01 04:42:52

Px
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Slavik пишет:

неправильно установил, у меня работает нормально

Вроде всё делал как указано в описании, не заработало. Посмотрел количество таких ссылок у себя на форуме, и плюнул на этот мод...

#17 2007-03-10 21:22:34

niikto
Гость

Re: Friendly URL by hcs --- дружественные ссылки

случайно обнаружил:

что когда постю http//ru55.ru/forum/topic.php?id=726

то получаю

Need HELP - Hyundai Microcat..]Need HELP - Hyundai Microcat.[/url ]

причем ссылка - то что сперва: http://.[ url=.http //rr.aa.z/forum/topic.php?id=736.
поставил 2 пробела чтоб не преобразовывалась


посмотреть можно тут: http://ru55.ru/forum/topic.php?pid=3434#p3434

Добавлено спустя       37 секунд:
привем на hcs - сборке работает. а у меня не хотит. чтото не то.. с Dexus сборкой sad

Добавлено спустя     1 минуту   4 секунды:
базы вроде одинаковы, что касается запросов в этом куске кода.

Добавлено спустя     4 минуты   24 секунды:
причем что касается постов - работает, а с топиками - нет.

Редактировался niikto (2007-03-10 21:35:39)

#18 2007-03-15 23:09:59

niikto
Гость

Re: Friendly URL by hcs --- дружественные ссылки

кстате обманулся - на hcs - сборке тоже коряво. просто не рвёт имя темы, вставляет:

"Впечатления владельцев о своих машинах, плюсы и минусы" - тоесть длинное имя не рвёт, но ссылка вот такая получается:
_http://.http//forum.aa.z/viewtopic.php?id=2.

тоесть лишнее http://. с точкой на конце... и после слешей

Добавлено спустя     42 минуты   7 секунд:
вот у кого то сверху та же ошибка.. хм..

Добавлено спустя     46 минут   20 секунд:
почему то считаю - дело в этой строчке:

   $url = str_replace("/", "\/", str_replace(".", "\.", $pun_config['o_base_url']."/viewtopic.php\?"));

Добавлено спустя     47 минут   8 секунд:
вот в тех штуках:  "/", "\/", и "." "\."

#19 2007-03-16 05:07:25

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Буду прикручивать этот мод сюда, обязательно посмотрю что там за ерунда происходит, заодно оптимизирую, ибо время всегда выявляет недостатки.

#20 2007-03-16 09:18:45

niikto
Гость

Re: Friendly URL by hcs --- дружественные ссылки

да. спасибо. буду ждать

#21 2007-03-18 17:24:38

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Значит так. Проверил всё, установил на чистый форум - никаких проблем, описанных выше не наблюдаю. Если не трудно, покажите мне ваши битые ссылки вживую.

Обновил этот мод. Теперь он конвертирует не только ссылки на топики, но и на профили и на форумы. Инструкция в первом посте обновлена. При апгрейде обратите внимание на изменение имени функции.

Добавлено спустя   1 час   39 минут   9 секунд:
niikto
дай ссылку на пост где можно посмотреть корявый урл, покажи содержимое o_base_url из таблицы config

#22 2007-03-20 23:26:57

Dr.Rom
Гость

Re: Friendly URL by hcs --- дружественные ссылки

По моему ошибка здесь: $text=preg_replace ($pattern, "[url={}.$pid[0].{}]".$subject."[/url]", $text,1);

{} - должны быть двойные кавички,
заменил этими символами так как кавычки в этих местах при публикации пропадают. Это заметно в коде первого поста.

Редактировался Dr.Rom (2007-03-20 23:34:34)

#23 2007-03-21 05:23:22

hcs
Гость

Re: Friendly URL by hcs --- дружественные ссылки

Dr.Rom, точно так! Спасибо что нашёл баг smile
Вобщем там надо ставить двойные кавычки, бб-код их почему-то вырезает, инструкцию сделаю в виде текстового файла.

#24 2007-03-25 02:28:48

niikto
Гость

Re: Friendly URL by hcs --- дружественные ссылки

с новым кодом сперва та же проблема:

[url=.http://forum.aa.z/viewtopic.php?id=2.]Впечатления владельцев о своих машинах, плюсы и минусы[/url]#p20

добавил такие кавычки {}, но они тож не исчезают!:

[url={}.http://forum.aa.z/viewtopic.php?id=2.{}]Впечатления владельцев о своих машинах, плюсы и минусы[/url]#p20

потом я убрал и {} и точки:

[url=http://forum.aa.z/viewtopic.php?id=2#p25]Впечатления владельцев о своих машинах, плюсы и минусы[/url]

тоесть все путём.. щас буду пробовать использовать этот мод совместно с тем, что преобразует адрес, чтоб не дублировались ссылки на тему и посты.

Добавлено спустя     4 минуты   1 секунду:
такс..
отбрасывает номер поста: #p26

Добавлено спустя     16 минут   28 секунд:
сделал!!!! :

смотрите - в обычном двиге тока 2 вида ссылок:

_http://rr.aa.z/forum/topic.php?pid=3471#p3471 - на пост
и
_http://rr.aa.z/forum/topic.php?id=43 - на топик

когда добавляешь мод, кой убирает ссылки на пост и превращает их в ссылки на топик с якорем на пост, появляется последний вид:

_http://rr.aa.z/forum/topic.php?id=873#p3400


чтобы его тоже превращать - добавтье перед

    $pattern = "/(?<=^|\s)".$url."pid=([0-9]+)#p[0-9]+\b/";

вот это:

здесь был неправильный код

и тада тоже они будут превращаться!
а старый вариант - тож не убирайте - потому что когда тока-тока ответил - всеравно адрес  в старом стиле.. если кто его скопирует - это будет в старом стиле (без мода dublicate urls)

Добавлено спустя     51 минуту   43 секунды:
ошибся наверное.. хм..

_http://forum.aa.z/viewtopic.php?pid=28#p28 - превращаетс в http://forum.aa.z/viewtopic.php?pid=28#p28

Добавлено спустя   1 час   19 минут   34 секунды:
а ещё думаю можно доделать под дубль-мод и ту реплейсину, что _http://rr.aa.z/forum/topic.php?pid=3471#p3471 - такие ссылки преобразует - пусть уже коглда вставляешь эту ссылку - вставляется правильная: _http://rr.aa.z/forum/topic.php?id=883#p3471


ВСЁ - первую проблему решил!!!
зачем учитывать номер поста иза базы, если нам просто номер темы в урле даётся?
поэтому надо делать так, а сверху = кусок неправильный:

    $pattern = "/(?<=^|\s)".$url."id=([0-9]+)#p[0-9]+\b/";
    $query='SELECT subject FROM '.$db->prefix.'topics WHERE id=';
    $text = replace($query, $pattern, $text);

Добавлено спустя   1 час   29 минут   20 секунд:
вторая проблема тоже решена - причем сразу же! - надо было просто решить первую!!!

HCS добавть пожалуйста этот кусочек в код мода - он мешать не будет, а кто внедрил себе ДУБЛЬ-МОД (ведь штука важная!) Индексация ссылок на пост - у того тоже работать будет!

Редактировался niikto (2007-03-25 03:58:49)

#25 2007-03-25 04:19:40

niikto
Гость

Re: Friendly URL by hcs --- дружественные ссылки

да, в edit.php перед той же строкой надо тоже добавить

Подвал доски

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