Przesunięty przez: Matteo 09-11-2013, 09:29 |
Find Similar Topics |
Autor |
Wiadomość |
Knofel
Pomógł: 69 razy Posty: 796
|
Wysłany: 31-07-2007, 19:06 Find Similar Topics
|
|
|
Pytał o to barteq więc napisałem.
Tak jak w opisie, modyfikacja wyświetli na ekranie x tematów podobnych do tego który aktualnie przeglądamy.
Jak to działa... Modyfikacja pobiera z bazy wszystkie tematy które zawierają w sobie wyrazy (dłużesz niż 3 znaki) z tematu w którym jesteśmy, następnie funkcją similar_text() sprawdza stopień ich "pokrewieństwa" i wyświetla na ekranie te które wg niej są najbardziej podobne. Nic wielkiego ale zawsze coś.
Stosowanie tej modyfikacji na forach z "typowymi" tematami nie ma raczej większego sensu, no ale kto wie:
No to do rzeczy:
Otwieramy plik viewtopic.php i znajdujemy w nim:
Kod: | $template->pparse('body');
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?> |
przed tym wstawiamy:
Kod: | // BEGIN FIND SIMILAR TOPICS
$fst_row = 2;
$similar_topic_title = trim($topic_title);
$similar_topic_title = str_replace(array('\'', '"'), array('', ''), $similar_topic_title);
$topic_parts = explode(" ", $similar_topic_title);
$all_proper_words = count($topic_parts);
for( $x=0; $x<$all_words; $x++ )
{
if( strlen($topic_parts[$x] > 3) )
{
$proper_words[] = $topic_parts[$x];
$all_proper_words++;
}
}
$x = 0;
for( $x=0; $x<$all_proper_words; $x++ )
{
if( $x == $all_proper_words-1 )
{ $find_words .= "topic_title LIKE '%".$proper_words[$x]."%' "; }
else
{ $find_words .= "topic_title LIKE '%".$proper_words[$x]."%' OR "; }
}
$sql = "SELECT topic_id, topic_title FROM " . TOPICS_TABLE . " WHERE " . $find_words;
if ( !($result = $db->sql_query($sql)) )
{ message_die(GENERAL_ERROR, 'Could not query posts table', '', __LINE__, __FILE__, $sql); }
while( $row = $db->sql_fetchrow($result) )
{
$similarity_level = similar_text($topic_title, $row['topic_title'] );
if( $similarity_level < 10 ) { $similarity_level = '0'.$similarity_level; }
$similar_topics[] = ( $row['topic_title'] != $topic_title ) ? $similarity_level."<>".$row['topic_id']."<>".$row['topic_title'] : '';
}
rsort($similar_topics);
for( $y==0; $y<=5; $y++ ) // Zamiast 5 wstawcie ile chcecie - To jest ilość podobnych tematów wyświetlanych na ekranie
{
$fst_row = ( $fst_row == 2 ) ? 1 : 2;
$topic_title = explode("<>", $similar_topics[$y]);
$topic_link = append_sid('viewtopic.php?t='.$topic_title[1]);
$topic_title = $topic_title[2];
$template->assign_block_vars('fst', array(
'FST_TOPIC_LINK' => $topic_link,
'FST_TOPIC_TITLE' => $topic_title,
'FST_CLASS' => $fst_row
));
}
// END FIND SIMILAR TOPICS |
Zapisujemy i zamykamy plik. Otwieramy: viewtopic_body.tpl i znajdujemy w nim:
Kod: | <table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
<tr>
<td align="left" valign="middle" class="nav"><span class="nav" style="color: #08A5CE;"><a href="{U_INDEX}" class="nav">{L_INDEX}</a>{NAV_CAT_DESC}</span></td> |
I wklejamy przed tym:
Kod: | <br />
<table width="100%" cellspacing="1" cellpadding="2" border="0" align="center" class="forumline">
<tr><th class="catTitle">Podobne Tematy</th></tr>
<!-- BEGIN fst -->
<tr><td class="row{fst.FST_CLASS}"><a class="postlink" target="_BLANK" href="{fst.FST_TOPIC_LINK}">{fst.FST_TOPIC_TITLE}</a></td></tr>
<!-- END fst -->
<tr><td class="row2"> </td></tr>
</table> |
Demo na moim forum |
_________________ Reklamuje swoje forum |
Ostatnio zmieniony przez Polaczek 20-08-2010, 20:21, w całości zmieniany 5 razy |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
barteq
Posty: 46
|
Wysłany: 31-07-2007, 22:31
|
|
|
Knofel, dzieki wielkie! jestes mistrzem ;d nie moge Ci dac zadnego plusa ale zapamietam to sobie ;D |
_________________ People always ask me, "Are you a lover or a fighter?"
I answer "both" because I fight for love.
http://PutImg.Org - Free Image Hosting and Photo Sharing |
|
|
|
|
Radek
Pomógł: 955 razy Posty: 4614
|
Wysłany: 31-07-2007, 22:37
|
|
|
Knofel napisał/a: | Modyfikacja pobiera z bazy wszystkie tematy które zawierają w sobie wyrazy (dłużesz niż 3 znaki) z tematu w którym jesteśmy, |
Czyli ? Bierzesz pod uwage wyrazy z tytulu tematu czy z postów w temacie ? |
|
|
|
|
barteq
Posty: 46
|
Wysłany: 31-07-2007, 22:40
|
|
|
z tego co zrozumialem, to z tytulu tematu i szuka podobnych ;> |
_________________ People always ask me, "Are you a lover or a fighter?"
I answer "both" because I fight for love.
http://PutImg.Org - Free Image Hosting and Photo Sharing |
|
|
|
|
pio32
Pomógł: 11 razy Posty: 212
|
Wysłany: 31-07-2007, 23:40
|
|
|
U mnie wszystko się pojawia, oprócz wyświetlania tematów, które są podobne, chyba że po prostu ich nei znajduje
edit: to był mój błąd, ale w pewnych tematach pokazuje np. coś takiego
Kod: | Could not query posts table
DEBUG MODE
SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
SELECT topic_id, topic_title FROM phpbb_topics WHERE topic_title LIKE '%Jacka%' OR
Line : 2984
File : viewtopic.php |
|
_________________ Noc, matka dnia |
|
|
|
|
Knofel
Pomógł: 69 razy Posty: 796
|
Wysłany: 01-08-2007, 08:09
|
|
|
RuseK, tak jak prosił barteq, modyfikacja porównuje tylko tematy.
P.S Póki co zrezygnowałem ze sprawdzania długości wyrazu - źle do tego podszedłem i jeśli ostatni wyraz był krótszy niż 3 znaki to wywalał błąd - ale to chyba i tak nie ma znaczenia. Update* w pierwszym poście
* Nadpisać kod z pliku viewtopic.php |
_________________ Reklamuje swoje forum |
|
|
|
|
Bonzaj
Posty: 55
|
Wysłany: 01-08-2007, 16:35
|
|
|
Poprostu super, u mnie też można zobaczyć jak działa.
Thx Knofel. |
_________________ Portal Hodowców Drobiu Ozdobnego |
|
|
|
|
pio32
Pomógł: 11 razy Posty: 212
|
Wysłany: 01-08-2007, 18:29
|
|
|
Knofel, dzięki, aktualnie działa, niektóre podobieństwa nawet śmiechowe są |
_________________ Noc, matka dnia |
|
|
|
|
barteq
Posty: 46
|
Wysłany: 07-08-2007, 01:11
|
|
|
hm.. u mnie nie do konca znajduje podobne tematy:) no ale
a mozna prosic aby wyswietlal jeszcze:
oprocz nazwy tematu i linku:
Cytat: | Nazwa (jako link) - Autor wątku (jego nick i link do profilu) - Forum (nazwa forum w ktorym sie znajduje + link do tego) - Odpowiedzi (ilosc odpowiedzi w tym "podobnym" temacie) |
? to juz w ogole wygladaloby bajerancko, mimo, ze nie dziala jak nalezy |
_________________ People always ask me, "Are you a lover or a fighter?"
I answer "both" because I fight for love.
http://PutImg.Org - Free Image Hosting and Photo Sharing |
|
|
|
|
yasiu
Pomógł: 12 razy Posty: 206
|
Wysłany: 09-08-2007, 17:23
|
|
|
Faktycznie trzeba by nad tym jeszcze popracować, aby modyfikacja była Super.
Jak na razie obserwuję wiele tematów nie jest wcale podobna do przeglądanego.
Gratuluję pomysłu i liczę że system porównywania się trochę usprawni.
DODANO:
Niestety zmuszony byłem usunąć modyfikację ze względu na pojawianie się tematów które są w działach ukrytych i nie ma się do niego dostępu. Owszem wyświetla się tylko nazwa tematu bo próbując wejść pokazuje że nie masz uprawnień ale uważam to za wielką wadę |
|
|
|
|
Bonzaj
Posty: 55
|
Wysłany: 09-08-2007, 17:39
|
|
|
yasiu napisał/a: | pojawianie się tematów które są w działach ukrytych |
Ooo, nie zauważyłem.
Potrzebna szybka poprawka.Knofel prosimy. |
_________________ Portal Hodowców Drobiu Ozdobnego |
|
|
|
|
Centurion
Pomógł: 543 razy Posty: 1972
|
Wysłany: 12-08-2007, 08:42
|
|
|
mozna w viewtopic.php zamiast
Kod: | $sql = "SELECT topic_id, topic_title FROM " . TOPICS_TABLE . " WHERE " . $find_words; |
dac
Kod: | SELECT topic_id, topic_title FROM " . TOPICS_TABLE . " WHERE forum_id = " . $forum_id . " AND " . $find_words; |
wtedy bedzie szukal podobnych tylko w tym samym forum co rozwiaze problem z niepowolanym dostepem |
_________________ Poza forum pomagam tylko odpłatnie
• przenoszenie/łączenie/naprawianie baz danych
• instalacja/pisanie modów, aktualizacja for z zachowaniem modów
• programowanie php/mysql |
|
|
|
|
azwel
Pomógł: 41 razy Posty: 402
|
Wysłany: 12-08-2007, 12:46
|
|
|
Knofel napisał/a: | for( $x==0; $x<$all_words; $x++ ) |
|
_________________ Bezpłatnie pomagam na forum. Jeśli to za mało to zapraszam do skorzystania z płatnych usług. |
|
|
|
|
pio32
Pomógł: 11 razy Posty: 212
|
Wysłany: 12-08-2007, 14:35
|
|
|
Centurion napisał/a: | wtedy bedzie szukal podobnych tylko w tym samym forum co rozwiaze problem z niepowolanym dostepem |
Ale w tym momencie ogranicza poszukiwanie podobnych do jednego forum tylko, a da radę żeby też inne wyszukiwał, bez pokazywania ukrytych? |
_________________ Noc, matka dnia |
|
|
|
|
Gadatliwa Kasia
|
|
|
|
Morgus
Pomógł: 3 razy Posty: 14
|
Wysłany: 13-08-2007, 16:30
|
|
|
A dałoby się to tak przerobić, aby wyszukiwał w określonym forum i przeszukiwał także pierwsze posty ? |
|
|
|
|
|