"Similar Topics" für Content-Seite

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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.
uwe.ha
Mitglied
Beiträge: 838
Registriert: 18.05.2001 02:00

Re: "Similar Topics" für Content-Seite

Beitrag von uwe.ha »

:( und :D und :-?

Fangen wir an mit :(
Nachdem ich es so gemacht habe, wie von dir geschrieben, kam zwar keine Fehlermeldungen mehr, aber es wurde - im includierten bereich - gar nichts mehr ausgegeben.

Weiter mit :D
Nach vielen "rumspielen" habe ich dann mal das

Code: Alles auswählen

page_footer();
wieder in die similar.inc.php eingefügt, und siehe da, es wurden passende Ergebnisse ausgegeben :D

Dann aber :-?
Nach der letzten Tabellenzeile der Ergebnisse wird nun der Rest der rosen.php nicht weiter ausgegeben ...

Also irgendwie scheint das "page_footer();" wichtig zu sein, damit die similar* angezeigt wird. Dann scheint das aber die weitere Anzeige der Seite abzubrechen ... weil page_footer() zwar einen page_footer aufruft, dann aber keinen anzeigt ... und deshalb auch sonst nichts mehr angezeigt wird?

Bald sind wir - hoffentlich - am Ziel :D
Uwe
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: "Similar Topics" für Content-Seite

Beitrag von AmigaLink »

Hmmm - das der Footer das Script stopt weiss ich, aber das er benötigt wird ist mir neu. :roll:
Ich hab aber auch selber noch nie Seiten erstellt die ohne Header und Footer sind, es sei denn in komplett eigenen Skripten die nix mit dem phpBB zu tun haben. ;)
Ich schau mal ob ich was dazu finde.

// EDIT
Ah, ok. Wenn man es weiss ist auch das logisch. :)
So sollte es gehen:

Code: Alles auswählen

// Page output
page_header();

$template->set_filenames(array(
    'body' => 'similar-content.html',
));

$template->display('body');
uwe.ha
Mitglied
Beiträge: 838
Registriert: 18.05.2001 02:00

Re: "Similar Topics" für Content-Seite

Beitrag von uwe.ha »

Hallo Markus,

ja, so geht es weiter ... aber nun erscheint VOR der Ergebnisliste:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by...
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by ...
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by ...
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4285: Cannot modify header information - headers already sent by...
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4287: Cannot modify header information - headers already sent by...
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4288: Cannot modify header information - headers already sent by...
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4289: Cannot modify header information - headers already sent by ...
Und wenn ich die Zeile

Code: Alles auswählen

page_header();
raus nehme, kommen auch die obigen Meldungen, allerdings NUR zu session.php (nicht zu functions.php).
AmigaLink hat geschrieben:Ich hab aber auch selber noch nie Seiten erstellt die ohne Header und Footer sind, es sei denn in komplett eigenen Skripten die nix mit dem phpBB zu tun haben. ;)
Dann lass uns doch mal ganz anders an die Sache ran gehen.
Im Augenblick versuchen wir diese ganze Sache innerhalb des phpBB Grundgerüstes zu realisieren (wegen "define('IN_PHPBB', session_begin, etc.), und versuchen nun mühsam die ganzen phpBB-Eigenheiten wieder raus zu nehmen.
Aber eigentlich will ich ja nur eine Datenbankabfrage machen (mehr ist similar ja nicht) ... brauche ich dazu die common.php oder das session management?
Ich brauche doch eigentlich nur die Datenbankabfrage.
Im Augenblick erreichen wir die db über phpBB, also und die common -> config.php ... wenn ich das richtig verstehe
Wenn wir aus dem similar-script (der similar.inc.php) direkt auf die db (ggf. über eine direkte Verlinkung/include der config.php) zugreifen, sollte es doch auch ausreichen ... oder kann man - aus Sicherheitsgründen - auf die config.php nur aus den phpBB-Ordner zugreifen?
Dieser direkte Weg hätte den Vorteil, dass die ganzen phpBB-Eigenheiten (footer, sessions, functions) keine Probleme machen würden.
Oder?

EDIT:
Wie schon geschrieben, habe ich das "page_header()" deaktiviert und herausgefunden, dass man die Debug-Meldung durch "@" unterdrücken kann.
Der Hinweis, dass der header nicht mehr modifiziert werden kann, ist ja kein Fehler, sondern nur ein - logischer - Hinweis, also nichts schlimmes.
Also habe ich folgendes gemacht:

Code: Alles auswählen

// Start session management
@$user->session_begin();
@$auth->acl($user->data);
@$user->setup();
Und bin glücklich :D

Wollen wir es so lassen? ... oder - wie in dem Absatz oben angedacht - den ganzen "phpBB-Kram" noch raus nehmen?
Ich überlege auch noch, das template nicht zu Verlinken, sondern direkt einzubauen, wodurch ein separater Seitenaufruf gespart würde ... oder?
Uwe
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: "Similar Topics" für Content-Seite

Beitrag von AmigaLink »

Wenn das phpBB komplett raus genommen wird, dann wird das komplette Skript ungültig und muss neu erstellt werden. Denn sowohl die Datenbankabfrage, als auch die Ausgabe der Ergebnisse läuft über Funktionen des phpBB. Also über Befehle die es normalerweise gar nicht gibt.
Machbar ist das und man könnte auch die Daten der config.php auslesen um die Zugangsdaten zur Datenbank zu erhalten. Aber wenn ich ehrlich bin, ist mir das zu aufwendig. :roll:
Die Meldung die du bekommst ist von page_header(); da wird die Ausgabe gestartet. Da deine rosen.php ja bereits die Ausgabe gestartet hat, kommt es zu der Fehlermeldung. Schlimm ist das nicht (von daher ist das Unterdrücken ok) aber halt auch nicht schön und ich weiss nicht ob es evtl bei Suchmaschienen zu negativ Bewertungen kommt.
Probier mal page_header() komplett weg zu lassen. Das müsste eigentlich Problemlos gehen, da hier nur (für dich) unwichtige Daten ausgelesen und die Ausgabe gestartet wird.
uwe.ha
Mitglied
Beiträge: 838
Registriert: 18.05.2001 02:00

Re: "Similar Topics" für Content-Seite

Beitrag von uwe.ha »

AmigaLink hat geschrieben:Machbar ist das und man könnte auch die Daten der config.php auslesen um die Zugangsdaten zur Datenbank zu erhalten. Aber wenn ich ehrlich bin, ist mir das zu aufwendig. :roll:
Dann lassen wir es so ... ich will dich ja nicht zu sehr beamspruchen ;-) Es war eh schon klasse, wie du mir geholfen hast! Hierfür nochmals VIELEN, VIELEN DANK!!!!!

Den Suchmaschinen sollte es eh egal sein, da die die Meldung ja eh nicht zu lesen bekommen ... wird ja unterdrückt ;-)

In diesem Sinne: Nochmals vielen Dank ... jetzt kannst du dich mal richtig ausschlafen :D
Uwe
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: "Similar Topics" für Content-Seite

Beitrag von AmigaLink »

uwe.ha hat geschrieben:... ich will dich ja nicht zu sehr beamspruchen ;-) Es war eh schon klasse, wie du mir geholfen hast! Hierfür nochmals VIELEN, VIELEN DANK!!!!!
Kein Ding. Es ist zwar ein wenig ausgeartet, aber nicht tragisch. :)
Den Suchmaschinen sollte es eh egal sein, da die die Meldung ja eh nicht zu lesen bekommen ... wird ja unterdrückt ;-)
Ja und nein.
Es gibt nicht umsonst Analyse-Tools die einen auf solche Fehler hinweisen.
Die Meldung besagt (was ja auch wirklich stimmt) das dem Browser 2 mal gesagt wird das nun Daten kommen die er Zeigen soll. In erster Linie ist das nur ein Schönheitsfehler und somit die Meldung nur ein Hinweis darauf das du eine unnötige Aktion ausführst.
Es ist aber auch so das Suchmaschinen heutzutage sehr ausgeklügelte Techniken einsetzen um zu verhindern das sich Webmaster in den Suchergebnissen nach oben mogeln. Und in dem Zusammenhang könnte es durchaus sein das dieser "Fehler" zu einer negativen Bewertung führt.
Wie gesagt, probiere mal das weglassen von page_header(); aus. Sollte das unerwünschte Ergebnisse liefern kannst du ja immer noch mit der Unterdrückung Arbeiten. :)
... jetzt kannst du dich mal richtig ausschlafen :D
Hab ich heute schon. :D
Hab seit gestern einen neuen Job. Grundsätzlich einen sehr einfachen. Aber da ich die Arbeit nicht gewohnt bin, hab ich geschlafen wie ein junger Gott. :)
Selbst "nix" tun kann sehr anstrengend sein. :lol:
uwe.ha
Mitglied
Beiträge: 838
Registriert: 18.05.2001 02:00

Re: "Similar Topics" für Content-Seite

Beitrag von uwe.ha »

AmigaLink hat geschrieben:Wie gesagt, probiere mal das weglassen von page_header(); aus.
Das habe ich doch schon, wie oben unter viewtopic.php?p=1183528#p1183528 geschrieben:
uwe.ha hat geschrieben:Und wenn ich die Zeile

Code: Alles auswählen

page_header();
raus nehme, kommen auch die obigen Meldungen, allerdings NUR zu session.php (nicht zu functions.php).
Der unetere Abschnitt der similar.inc.php sieht nun so aus:

Code: Alles auswählen

// Page output
// page_header();
	
    $template->set_filenames(array(
        'body' => 'similar-content.html',
    ));

    $template->display('body');
//	page_footer();
?>
Oder meinst du was anderes?
Uwe
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: "Similar Topics" für Content-Seite

Beitrag von AmigaLink »

Seltsam.

Ich hab das eben mal local getestet und bei mir Funktioniert es absolut ohne Probleme. :o

Hier mal meine Testdateien:

Code: Alles auswählen

<?
echo 'bla bla';
echo 'bla bla';
define('PHPBB_ROOT_PATH', './phpBB3/');
$keyword = "test";
include ($_SERVER['DOCUMENT_ROOT']."/phpBB3/similar-test.php");
echo 'bla bla';
echo 'bla bla bla';
echo 'bla bla';
?>

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);

$user->session_begin();
$auth->acl($user->data);
$user->setup();

$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'])
         );
      }
   }
}

$template->set_filenames(array(
    'body' => 'similar-test.html',
));

$template->display('body');
?>

Code: Alles auswählen

   <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>{NO_POSTS}</strong></td></tr>
   <!-- ENDIF -->
   </table>
uwe.ha
Mitglied
Beiträge: 838
Registriert: 18.05.2001 02:00

Re: "Similar Topics" für Content-Seite

Beitrag von uwe.ha »

hmmm ... egal ob mit deinen Dateien oder meinen ... mal kommt die debug-Meldung, mal nicht.
Das hängt wohl mit meinem cookie / session-management zusammen. Wenn ich "alle Cookies des Boards lösche" ist es weg. Auf anderen PC's wieder da ... ich habe noch keine Logik dahinter gefunden.
Ich schick dir mal meine url per PN. Wenn dann bei dir - als neuer Besucher - alles ok ist, ist es ok.

EDIT: Wenn ich mit FF im "Privatmodus" diese Seiten aufrufe, also ohne jegliche cookies, etc, kommt immer die Meldung.
Es scheint also so, dass ich erst ein cookie brauche, damit die Meldung nicht mehr kommt ... das werden aber die wenigsten Besucher, die nicht erst im Forum waren, haben.
Dann werde ich wohl die Meldung weiter mit

Code: Alles auswählen

@$user->session_begin();
unterdrücken müssen; es ist wohl zu tief in phpBB verwurzelt, als dass man dies abstellen kann.
Uwe
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Re: "Similar Topics" für Content-Seite

Beitrag von AmigaLink »

Sehr schöne Seite hast du da. *respekt*

Und ein Interessantes Problem.
Die nötigen Cookies werden (normalerweise) erstellt, egal ob der Besucher erst im Forum war oder nicht. Denn die Similar-Funktion ist ja komplett ins Forum integriert.
Aaaaber (und jetzt kommts) bei meinem erstem Aufruf deiner Seite (mit dem FF) hatte ich meinen Add-Blocker aktiv (AddBlock Plus vom Firefox) und die besagte Meldung kam. Nachdem ich den AddBlocker mal kurz deaktiviert hatte, kam sie nicht mehr. Und nachdem ich die Cookies gelöscht habe, kam die Meldung wieder. Selbst ohne aktiven AddBlocker wurden die Cookies nicht neu gesetzt. :o
Beim Internet Explorer kommt die Meldung immer. Und bei Google Chrome verschwindet die Meldung nachdem ich einmal im Forum war. (IE und Chrome befinden sich bei mir in der Grundkonfiguration, weil ich sie nur gelegentlich zum Testen meiner Seiten nutze.)
Der Witz ist, egal welchen der 3 Browser ich benutze. Beim Testen meines Test-Skriptes kommt es niemals zu der Meldung. :-?
Das kann ich mir beim bestem willen nicht Erklären. :roll:
Antworten

Zurück zu „[3.0.x] Mod Support“