"Similar Topics" für Content-Seite
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Re: "Similar Topics" für Content-Seite
Ich habe schon andere keywords ausprobiert ... keine Ergebnisse ...
Uwe
Re: "Similar Topics" für Content-Seite
LOL ok, ich weiss auch warum.
Die Abfrage wird gar nicht ausgeführt weil das Skript beendet wird wenn der Footer generiert wurde.
// EDIT
Und noch etwas. Für den Fall das es keine Threads zu dem Keyword gibt, wäre dieses Template ganz nett.
Oder alternativ das hier:
Die Abfrage wird gar nicht ausgeführt weil das Skript beendet wird wenn der Footer generiert wurde.
Code: Alles auswählen
<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$keyword = 'rosen';
// Begin similar topics
$sql_array = array(
'SELECT' => 'f.forum_id, f.forum_name, t.topic_id, t.topic_title, u.user_id, u.username, u.user_colour, t.topic_replies',
'FROM' => array(
TOPICS_TABLE => 't',
),
'LEFT_JOIN' => array(
array(
'FROM' => array(USERS_TABLE => 'u'),
'ON' => 'u.user_id = t.topic_poster'
),
array(
'FROM' => array(FORUMS_TABLE => 'f'),
'ON' => 'f.forum_id = t.forum_id'
),
),
'WHERE' => "MATCH (t.topic_title) AGAINST ('" . $db->sql_escape($keyword) . "') >= 0.5
AND t.topic_status <> " . ITEM_MOVED,
'GROUP_BY' => 't.topic_id',
'ORDER_BY' => 't.topic_last_post_time DESC'
);
$sql = $db->sql_build_query('SELECT', $sql_array);
if ($result = $db->sql_query_limit($sql, 5))
{
while($similar = $db->sql_fetchrow($result))
{
if ($auth->acl_get('f_read', $similar['forum_id']))
{
$similar_forum_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=" . $similar['forum_id']);
$similar_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=" . $similar['forum_id'] . '&t=' . $similar['topic_id']);
$similar_user = get_username_string('full', $similar['user_id'], $similar['username'], $similar['user_colour'], $similar['username']);
$template->assign_block_vars('similar', array(
'TOPIC_TITLE' => $similar['topic_title'],
'U_TOPIC' => $similar_topic_url,
'REPLIES' => $similar['topic_replies'],
'USER' => $similar_user,
'U_FORUM' => $similar_forum_url,
'FORUM' => $similar['forum_name'])
);
}
}
}
// End Similar Topics
// Page output
page_header($keyword);
$template->set_filenames(array(
'body' => 'similar-content.html',
));
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
?>
Und noch etwas. Für den Fall das es keine Threads zu dem Keyword gibt, wäre dieses Template ganz nett.
Code: Alles auswählen
<!-- INCLUDE overall_header.html -->
<table class="tablebg" width="100%" cellspacing="1" cellpadding="0" style="margin-top:5px">
<tr>
<th colspan="3" align="left">{L_SIMILAR_TOPICS}</th>
</tr>
<!-- IF .similar -->
<!-- BEGIN similar -->
<tr><td class="row1"><a href="{similar.U_TOPIC}" class="topictitle">{similar.TOPIC_TITLE}</a></td>
<td class="row2">{L_FORUM}: <a href="{similar.U_FORUM}">{similar.FORUM}</a></td>
<td class="row1">{L_REPLIES}: {similar.REPLIES}</td>
</tr>
<!-- END similar -->
<!-- ELSE -->
<tr><td class="row1" colspan="3" align="center"><strong>{L_NO_POSTS}</strong></td></tr>
<!-- ENDIF -->
</table>
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
Code: Alles auswählen
<!-- INCLUDE overall_header.html -->
<!-- IF .similar -->
<table class="tablebg" width="100%" cellspacing="1" cellpadding="0" style="margin-top:5px">
<tr>
<th colspan="3" align="left">{L_SIMILAR_TOPICS}</th>
</tr>
<!-- BEGIN similar -->
<tr><td class="row1"><a href="{similar.U_TOPIC}" class="topictitle">{similar.TOPIC_TITLE}</a></td>
<td class="row2">{L_FORUM}: <a href="{similar.U_FORUM}">{similar.FORUM}</a></td>
<td class="row1">{L_REPLIES}: {similar.REPLIES}</td>
</tr>
<!-- END similar -->
</table>
<!-- ENDIF -->
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->
Zuletzt geändert von AmigaLink am 09.06.2010 17:02, insgesamt 1-mal geändert.
Re: "Similar Topics" für Content-Seite






Hast dir ein Bierchen verdient ... eins ... nach dem anderen

Wenn du mal im Hunsrück bist (nähe Flughafen Frankfurt-Hahn) und was brauchst (z.B. kostenloser Parkplatz und Flughafentransfer, oder sonstwas) ... melde dich!
Jetzt muss ich die Tage nur noch hin bekommen, dass ich das Suchergebnis auch in einer Seite OHNE den header und footer von phpBB rein bekomme ... also in eine Seite mit dem header und footer meines redaktionellen Teil.
VIELEN DANK einstweilen!!!
Uwe
Re: "Similar Topics" für Content-Seite
Danke für das Angebot, wer weiss wofür es mal gut ist. 
Header, Footer und Jumpbox lassen sich einfach entfernen.
Dafür zuständig sind diese Befehle:
php:
html:Einfach weg und gut is. 
Einbinden in deinen Content lässt sich das ganze dann theoretisch mittels include. (Du hattest in dem anderem Thema ja erwähnt das dies bei dir möglich ist.)
Und wenn du dann nochgegenersetzt, kannst du das Skript mittels similar.php?keyword=rosen aufrufen und musst somit nicht für jedes keyword ein eigenes Skript erstellen. 

Header, Footer und Jumpbox lassen sich einfach entfernen.
Dafür zuständig sind diese Befehle:
php:
Code: Alles auswählen
page_header($keyword);
make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
page_footer();
Code: Alles auswählen
<!-- INCLUDE overall_header.html -->
<!-- INCLUDE jumpbox.html -->
<!-- INCLUDE overall_footer.html -->

Einbinden in deinen Content lässt sich das ganze dann theoretisch mittels include. (Du hattest in dem anderem Thema ja erwähnt das dies bei dir möglich ist.)
Und wenn du dann noch
Code: Alles auswählen
$keyword = 'rosen';
Code: Alles auswählen
$keyword = utf8_normalize_nfc(request_var('keyword', '', true));

Re: "Similar Topics" für Content-Seite
Hallo ... da bin ich wieder 
es scheint doch nicht ganz sooo einfach zu sein ...
Ich habe nun die o.g. "unnötigen" Zeilen (header, footer, jumpbox) entfernt, und die Datei similar.inc.php (wie ich sie nun nenne) per include in meine rosen.php eingefügt. Dabei habe ich den ROOT-PATH wie folgt angepasst:, da die rosen.php außerhalb des phpBB-Ordners liegt. Sollte doch so richtig sein, oder?
Dann kommt aber die Fehlermeldung:
Könnte es sein, dass sich die common.php - aus Sicherheitsgründen - nicht von außerhalb des Ordners phpBB aufrufen lässt? ... ich meine sowas mal gelesen zu haben.
Die Idee mit der Keywordübergabe ist sehr, sehr gut!
Wenn ich aber in der rosen.php einfüge:
kommt die Fehlermeldung:
so als wenn diese Keywordübergabe im include-Befehl nicht funktionieren würde, oder?
DANKE!

es scheint doch nicht ganz sooo einfach zu sein ...
Ich habe nun die o.g. "unnötigen" Zeilen (header, footer, jumpbox) entfernt, und die Datei similar.inc.php (wie ich sie nun nenne) per include in meine rosen.php eingefügt. Dabei habe ich den ROOT-PATH wie folgt angepasst:
Code: Alles auswählen
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '/phpBB/';
Dann kommt aber die Fehlermeldung:
Code: Alles auswählen
Warning: include(/phpBB/common.php) [function.include]: failed to open stream: No such file or directory in /www/htdocs/xxx/phpBB/similar.inc.php on line 6
Warning: include() [function.include]: Failed opening '/phpBB/common.php' for inclusion (include_path='.:/usr/share/php:..') in /www/htdocs/xxx/phpBB/similar.inc.php on line 6
Fatal error: Call to a member function session_begin() on a non-object in /www/htdocs/xxx/phpBB/similar.inc.php on line 9
Die Idee mit der Keywordübergabe ist sehr, sehr gut!
Wenn ich aber in der rosen.php einfüge:
Code: Alles auswählen
<?
include ($_SERVER['DOCUMENT_ROOT']."/phpBB/similar.inc.php?keyword=rosen")
?>
Code: Alles auswählen
Warning: include(/www/htdocs/xxx//phpBB/similar.inc.php?keyword=rosen) [function.include]: failed to open stream: No such file or directory in /www/htdocs/xxx/x
Warning: include() [function.include]: Failed opening '/www/htdocs/xxx//phpBB/similar.inc.php?keyword=rosen' for inclusion (include_path='.:/usr/share/php:..') in /www/htdocs/xxx/x
DANKE!
Uwe
Re: "Similar Topics" für Content-Seite
Die ganzen Fehlermeldungen besagen das er die zu includierenden Dateien nicht finden kann. Es stimmt also etwas in der geänderten Pfadangabe nicht.
Liegt die similar.inc.php im Root-Verzeichnis und das Forum in dem Unterordner phpBB ? Es sieht nicht so aus und macht auch nicht wirklich einen Sinn.
Liegt die similar.inc.php im Root-Verzeichnis und das Forum in dem Unterordner phpBB ? Es sieht nicht so aus und macht auch nicht wirklich einen Sinn.
Re: "Similar Topics" für Content-Seite
Hallo Markus,
ja, die similar.inc.php liegt - genauso wie die common.php - im Root-Ordner /phpBB/
Das Forum selbst liegt - natürlich auch - in /phpBB/
Die rosen.php liegt in /blumen/rosen/
Wenn ich den root-path wie am Anfang - als es noch mit foren-header+footer funktioniert hat - lasse, also, dann scheint er zumindest die common.php zu finden, denn er gibt folgende (Fehler)-Meldung aus:
, was Teil der common.php ist, siehein common.php um Zeile 126:
Aber wenn er doch die common.php gefunden hat, warum findet er dann die config.php nicht mehr? 
ja, die similar.inc.php liegt - genauso wie die common.php - im Root-Ordner /phpBB/
Das Forum selbst liegt - natürlich auch - in /phpBB/
Die rosen.php liegt in /blumen/rosen/
Wenn ich den root-path wie am Anfang - als es noch mit foren-header+footer funktioniert hat - lasse, also
Code: Alles auswählen
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
Code: Alles auswählen
The config.php file could not be found.
Click here to install phpBB
Code: Alles auswählen
if (!file_exists($phpbb_root_path . 'config.' . $phpEx))
{
die("<p>The config.$phpEx file could not be found.</p><p><a href=\"{$phpbb_root_path}install/index.$phpEx\">Click here to install phpBB</a></p>");
}

Uwe
Re: "Similar Topics" für Content-Seite
Hmmm - das die common.php gefunden wird und die config.php nicht kann ich mir auch nicht erklären.
Ich glaub da muss ich erst mal ein paar Stunden drüber Schlafen, ich bin nämlich schon seit 26 Stunden auf den Beinen.

Ich glaub da muss ich erst mal ein paar Stunden drüber Schlafen, ich bin nämlich schon seit 26 Stunden auf den Beinen.
Re: "Similar Topics" für Content-Seite
Sooo, jetzt denkt es sich besser.
Also das das die Übergabe des Keywords nicht funktioniert ist logisch weil das mittels include nicht geht.
Aber das die common.php gefunden wird und die config.php nicht kann ich mir immer noch nicht erklären. Logisch wäre es wenn beide nicht gefunden würden.
Es gibt aber selbstverständlich eine Lösung für das Problem.
Sie similar.inc.php liegt im Ordner /phpBB/
Die rosen.php liegt in /blumen/rosen/
In der similar.inc.php löschst du
Und in der rosen.php machst du
Zur Erklärung:
Die übergebe von Parametern ist mittels include nicht möglich und macht auch keinen Sinn weil das Script das includiert wird genau dort eingefügt wird wo es mittels include() aufgerufen wurde. Der komplette Inhalt von similar.inc.php steht also -bei der Ausführung- genau da wo der include() Befehl eigentlich ist.
Das Erklärt dann auch warum die similar.inc.php die anderen Dateien nicht findet. Denn schaut ob ein Dateipfad in Form einer Konstante vorgegeben ist. Ist das nicht der Fall, wird der Dateipfad auf http://www.deine-domain.de/blumen/rosen/ gesetzt da das Skript offiziell genau in dem Ordner läuft.
Wir gehen also hin und belegen die Konstante PHPBB_ROOT_PATH mit dem tatsächlichem Dateipfad und weil wir gerade so schön dabei sind, definieren wir auch gleich die Variable $keyword damit die similar.inc.php weiss wonach sie in der Datenbank suchen soll.
Klingt jetzt vielleicht etwas Verwirrend, aber besser kann ich es nicht Erklären.

Also das das die Übergabe des Keywords nicht funktioniert ist logisch weil das mittels include nicht geht.
Aber das die common.php gefunden wird und die config.php nicht kann ich mir immer noch nicht erklären. Logisch wäre es wenn beide nicht gefunden würden.
Es gibt aber selbstverständlich eine Lösung für das Problem.

Sie similar.inc.php liegt im Ordner /phpBB/
Die rosen.php liegt in /blumen/rosen/
In der similar.inc.php löschst du
Code: Alles auswählen
$keyword = 'rosen';
Code: Alles auswählen
<?
define('PHPBB_ROOT_PATH', './../../phpBB3/');
$keyword = 'rosen';
include (PHPBB_ROOT_PATH . 'similar.inc.php');
?>
Die übergebe von Parametern ist mittels include nicht möglich und macht auch keinen Sinn weil das Script das includiert wird genau dort eingefügt wird wo es mittels include() aufgerufen wurde. Der komplette Inhalt von similar.inc.php steht also -bei der Ausführung- genau da wo der include() Befehl eigentlich ist.
Das Erklärt dann auch warum die similar.inc.php die anderen Dateien nicht findet. Denn
Code: Alles auswählen
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';

Wir gehen also hin und belegen die Konstante PHPBB_ROOT_PATH mit dem tatsächlichem Dateipfad und weil wir gerade so schön dabei sind, definieren wir auch gleich die Variable $keyword damit die similar.inc.php weiss wonach sie in der Datenbank suchen soll.

Klingt jetzt vielleicht etwas Verwirrend, aber besser kann ich es nicht Erklären.