[2.3] Ähnliche Themen

rellek

relativ sensationell
Teammitglied
Weniger...

letztendlich soll ja dennoch ein "aktueller" thread gegenüber eines alten threads priorisiert werden...
 

faruk

Neuer Benutzer
Hallo Relleck,

sorry wegen dem bug sache, du hast natürlich recht, ich meinte eigentlich die codeveränderungen die danach kommen um mehr finden zu lassen, die ersten laufen bei mir nicht.
da bin ich wohl ein wneig durcheinander gekommen



und zum sortieren bzw nach mehr relevanz in den trefferquoten.

mann kan mehr als eine oder by argument in der sql query angeben, so wie ich es bis jetzt verstadnden habe.

ich habe mal michs leber versucht... und es funktioniert. Zuerst werden die Themen aufgelistet die in der gleichen katogorie sind und dann kommen die anderen.. udn das schön nach dem letzten posten neu sortiert.

hier der code, wobei wie gesgat eigentlich nur ein einzige argument mehr ist.

PHP:
if($like_string) {
	$similar = $db->query("SELECT
                      t.threadid, t.boardid, x.title, x.boardid, t.prefix, t.topic, t.starttime, t.starterid, t.starter, t.lastposttime, t.lastposterid, t.lastposter, t.replycount, t.views, t.attachments, t.closed, t.important, t.pollid
                      FROM bb".$n."_threads t, bb".$n."_boards x
                      LEFT JOIN bb".$n."_boards b ON (t.boardid=b.boardid)
                      WHERE t.visible='1'
                      AND t.closed <> 3
                      AND t.threadid <> $threadid
                      AND b.password=''
                      AND t.boardid=x.boardid
                      AND t.boardid IN (0".GetAccessableForums().")
                      AND (t.topic LIKE ".$like_string.")
                      ORDER BY t.boardid != ".$boardid.", t.lastposttime DESC
                      LIMIT 0, 5;");
	}

wobei ja meien veränderung nur hier dirnn steckt

PHP:
ORDER BY t.boardid != ".$boardid.", t.lastposttime DESC

und als anhang den unterschied in Bilder.
das 1. bild vorher das 2. nachher


Gruß
faruk
 

Anhänge

  • ohne-katogorie-sortierung.gif
    ohne-katogorie-sortierung.gif
    14,6 KB · Aufrufe: 296
  • mit-katogorie-sortierung.gif
    mit-katogorie-sortierung.gif
    16,4 KB · Aufrufe: 284

rellek

relativ sensationell
Teammitglied
Hm... Aber irgendeinen Grund muss es damals gehabt haben, dass ich das ausgeschlossen habe :nachdenk:
 

IBK_modell

[inaktiv]
Hallo Rellek,

Erstmal großes Lob an dich und deine Hack's die sind alle sehr gut und funzt. auch wirklich gut. Auch lassen sie sich sehr gut einbauen.

Auch dieser Hack funzt einwandfrei, wenn man ihn richtig einbaut, inkl. der Beta und der erweiterung von faruk!!!

Jedoch habe ich eine Fragen:

1, Kann man wenn man es Nachträgelich einbaut irgentwie eine Abfrage machen das es auch bei den schon vorhanden beiträgen schaut oder funzt das nur ab dem Tage des einbaus und wenn dann neue beiträge geschriebenwerden???

2,
Wie kann ich die Tabellenbreite beinflussen???

Siehe:

tabellen.jpg


da ist mir die erste [Threat] zu breit und die letzte [Statistik] zu schmal.

bitte um hilfe Danke

mfg

Robert
 

rellek

relativ sensationell
Teammitglied
Wegen erstens: Der Hack beinhaltet alle Themen, die es gibt (mit der Ausnahme der Themen, die in Foren stehen, in die man keinen Zugriff hat).

Wegen zweitens: Da wende dich mal an faruk, der ist da sicher aussagekräftiger :)

HTH
 

IBK_modell

[inaktiv]
@rellek,

Danke für die Info, Das zu erstens ist mir zu spät aufgefallen es werden auch die schon vorhandenen angezeigt.

wegen zweitens:

Ist der Hack nicht von dir??

Ist faruk noch hier im Forum?? oder sol ich ihn per mail oder pn anschreiben?

Danke für die Hilfe
 

rellek

relativ sensationell
Teammitglied
Für alle mit mySQL 5-Problemen!!!

Ersetze die Codestelle in der thread.php damit:
Code:
/* Ähnliche Themen */
function GetAccessableForums() {
	global $db, $n, $wbbuserdata, $boardcache;
	
	if (!isset($boardcache) || !is_array($boardcache)) $boardcache = array();
	$result = $db->query("SELECT boardid,boardorder,parentid,parentlist FROM bb".$n."_boards ORDER BY parentid ASC, boardorder ASC");
	while ($row = $db->fetch_array($result)) {
		$boardcache[$row['parentid']][$row['boardorder']][$row['boardid']] = $row;
	}

	$boardpermissions = getPermissions();
	$boardids = '';
	foreach ($boardcache as $key => $val) {
		foreach ($val as $key2 => $val2) {
			foreach ($val2 as $row) if ((!isset($boardpermissions[$row['boardid']]['can_view_board']) || $boardpermissions[$row['boardid']]['can_view_board'] != 0) && (!isset($boardpermissions[$row['boardid']]['can_enter_board']) || $boardpermissions[$row['boardid']]['can_enter_board'] != 0) && (!isset($boardpermissions[$row['boardid']]['can_read_thread']) || $boardpermissions[$row['boardid']]['can_read_thread'] != 0)) $boardids .= ",".$row['boardid'];
		}	
	}
	return $boardids;
}

/* Unset Used Vars To Avoid Hacking Attempts */
unset($similar_thread_bit);
unset($like_string);

$ttopic = str_replace("."," ",$threadtopic);
$ttopic = str_replace("!"," ",$ttopic);
$ttopic = str_replace("?"," ",$ttopic);
$ttopic = str_replace("/"," ",$ttopic);
$ttopic = str_replace("§"," ",$ttopic);
$ttopic = str_replace("$"," ",$ttopic);
$ttopic = str_replace("%"," ",$ttopic);
$ttopic = str_replace("&"," ",$ttopic);
$ttopic = str_replace("("," ",$ttopic);
$ttopic = str_replace(")"," ",$ttopic);
$ttopic = str_replace("="," ",$ttopic);
$ttopic = str_replace("\\"," ",$ttopic);
$ttopic = str_replace("?"," ",$ttopic);
$ttopic = str_replace("-"," ",$ttopic);
$ttopic = str_replace("*"," ",$ttopic);
$ttopic = str_replace("+"," ",$ttopic);
$ttopic = str_replace("#"," ",$ttopic);
$ttopic = str_replace("_"," ",$ttopic);
$ttopic = str_replace(","," ",$ttopic);
$ttopic = str_replace(":"," ",$ttopic);
$ttopic = str_replace(";"," ",$ttopic);
$ttopic = str_replace("<"," ",$ttopic);
$ttopic = str_replace(">"," ",$ttopic);
$ttopic = str_replace("|"," ",$ttopic);
$ttopic = str_replace("~"," ",$ttopic);
$ttopic = str_replace("'"," ",$ttopic);
$ttopic = str_replace('"',' ',$ttopic);
$ttopic = explode(" ",$ttopic);
$badwordlist = explode("\n",$badsearchwords);
$y = count($ttopic);
if($y>1) {
  foreach($ttopic as $tt) {
  	if(!in_array($tt, $badwordlist)) {
  		if(strlen($tt)>=$minwordlength && strlen($tt)<=$maxwordlength) $x++;
  		if($x>1 && (strlen($tt)>=$minwordlength && strlen($tt)<=$maxwordlength)) $like_string .= " OR t.topic LIKE ";
  		if(strlen($tt)>=$minwordlength && strlen($tt)<=$maxwordlength) $like_string .= "'%".$tt."%'";
  }
}
} else $like_string = "'%$threadtopic%'";
if($like_string) {
	$similar = $db->query("SELECT
                      t.threadid, t.boardid, x.title, x.boardid, t.prefix, t.topic, t.starttime, t.starterid, t.starter, t.lastposttime, t.lastposterid, t.lastposter, t.replycount, t.views, t.attachments, t.closed, t.important, t.pollid
                      FROM bb".$n."_threads t, bb".$n."_boards x
                      WHERE t.visible='1'
                      AND t.closed <> 3
                      AND t.threadid <> $threadid
                      AND x.password=''
                      AND t.boardid=x.boardid
                      AND t.boardid IN (0".GetAccessableForums().")
                      AND (t.topic LIKE ".$like_string.")
                      ORDER BY t.lastposttime DESC
                      LIMIT 0, 5;");
	}
if($like_string && $db->num_rows($similar)) {
	$i = "0";
	while ($row = $db->fetch_array($similar)) {
		$i++;
		$tdclass = getone($i, "tablea", "tableb");
		$started = formatdate($wbbuserdata['dateformat'], $row['starttime'],1);
		$started .= " <span class=\"time\">".formatdate($wbbuserdata['timeformat'], $row['starttime'])."</span>";
		$lastreply = formatdate($wbbuserdata['dateformat'], $row['lastposttime'],1);
		$lastreply .= " <span class=\"time\">".formatdate($wbbuserdata['timeformat'], $row['lastposttime'])."</span>";
		if ($row['replycount'] >= 1000) $row['replycount'] = number_format($row['replycount'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
		if ($row['views'] >= 1000) $row['views'] = number_format($row['views'], 0, "", $lang->get("LANG_GLOBAL_THOUSANDS_SEP"));
		if (strlen($row['topic']) > 60) $row['topic'] = substr($row['topic'], 0, 54).' [...]';
		$row['topic'] = htmlconverter($row['topic']);
		eval("\$similar_thread_bit .= \"".$tpl->get("thread_similarthread_bit")."\";");
	}
	eval("\$similar_thread = \"".$tpl->get("thread_similarthread")."\";");
}
/* Ähnliche Themen Ende */
 
S

Shackles

Guest
Geht nicht, dann kommt:

Parse error: syntax error, unexpected '"' in /var/www/web13/html/wbb2/thread.php on line 1075

Ich häng dir mal meine thread.php dran ohne den Einbau, kannst es ja mal versuchen wenn du magst, vielleicht hab ich auch was falsch gemacht..
 

Anhänge

  • thread.php.txt
    38,2 KB · Aufrufe: 158

rellek

relativ sensationell
Teammitglied
Doch geht, aber irgendwie spinnt der Parser rum hier....

Kannst du die thread.php mal eben anhängen?
 

rellek

relativ sensationell
Teammitglied
naja, ich meinte zwar eigentlich dir, die den parse-error verursache (weil sonst nützt die fehlermeldung auch nichts), aebr die sollte jetzt gehen.

und mein parser i.ü. auch :) (d.h. Parse-Error sollte keiner mehr entstehen)
 

Anhänge

  • thread.bearbeitet.php.txt
    42,9 KB · Aufrufe: 113
S

Shackles

Guest
Cool, danke es funzt!

Bevor ich jetzt großartig im Quelltext des Templates rumfummel, wie setze ich es nach unten?
 

rellek

relativ sensationell
Teammitglied
Meinst du die Ähnliche-Themen-Box? Die ist standardmäßig unten, da hast du wohl das Template "thread" nicht korrekt bearbeitet...
 
S

Shackles

Guest
Habs nun unten, Rellek, haste ICQ oder so?
Muss dich mal was fragen!
 

rellek

relativ sensationell
Teammitglied
Dazu geh mal lieber zum Autor des Hacks, das ist nicht meine Version (die braucht nämlich gar keine Setup-Datei)
 

rellek

relativ sensationell
Teammitglied
Also ist Flavius für den Support seiner Modifizierung verantwortlich :rolleyes:
 
Oben