Seite 11 von 45
Verfasst: 21.09.2003 14:39
von oxpus
Schau Dir doch mal an, welche Dateien Du per include doppelt aufrufst, bzw. welche .tpl-Dateien doppelt geöffnet werden
. Wichtig ist auch, wann die jeweils mit
wieder geschlossen werden...
Die template.php hat dann nur ein Problem, die Darstellung hinzubekommen, da irgend eine Datei zu einem Zeitpunkt doppelt benutzt werden soll. Also liegt der Fehler nicht in der angegebenen Datei, sondern entweder in der page_tail.php oder recent.php. Ab ehesten solltest Du allerdings prüfen, welche Aufrufe in der recent.php gelöscht werden können, um Konflikte auszumerzen...
Verfasst: 21.09.2003 15:24
von RusTin
thx geht...
Verfasst: 29.09.2003 19:49
von F@B
Ich habe mir die Ausgabe jetzt so formatiert, dass sie als Newsticker ausgegeben wird... Die recent.php funktioniert... Doch wenn ich sie einbinde, dann bekomme ich folgende fehlermeldung:
Fatal error: Cannot redeclare class template in c:\programme\apache group\serverfiles\abi05\board\includes\template.php on line 30
Woran kann das liegen? Habe die Tabelle komplett gelöscht...

Verfasst: 29.09.2003 20:00
von oxpus
Ich könnte sagen: Siehe oben...
Wenn die recent.php per include aufgerufen wird, so kann es vorkommen (bei der Datei auf jeden Fall), daß ein Template mehrfach gleichzeitig geöffnet werden soll. Dann einfach mal nachsehen, an welcher Stelle in der aufrufenden Datei die recent.php eingebunden wird. Am besten
nach dem
, damit das "aufrufende" Template vorher geschlossen wird:
Code: Alles auswählen
$template->pparse('body');
include('./recent.php'); (oder ähnlich)
Und es sollte dann ohne Fehler laufen...
Verfasst: 29.09.2003 22:05
von F@B
Jetzt bekomme ich immer
Template->loadfile(): No file specified for handle body
Muss ich das body noch durch was anderes ersetzen? oder wie fuinktioniert das? WIe bekomme ich raus welche Datei doppelt geöffnet wird? kann eigentlich nicht sein

Verfasst: 29.09.2003 22:32
von oxpus
Ersetze in der recent.php mal
Code: Alles auswählen
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX, $board_config['session_length']);
init_userprefs($userdata);
$page_title = $lang['latest_posts'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
mit
Code: Alles auswählen
/*
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
$userdata = session_pagestart($user_ip, PAGE_INDEX, $board_config['session_length']);
init_userprefs($userdata);
$page_title = $lang['latest_posts'];
include($phpbb_root_path . 'includes/page_header.'.$phpEx);
*/
oder lösche die Zeilen ganz. Dann wird nciht mehr versucht, ein Template mehr mehrfach zu öffnen (in diesem Falle die angegebenen Dateien in den include-Befehlen). Das kann man auch in der "aufrufenden" Datei machen, jedoch ist dann z.B. der "Kopf" des Boards nicht mehr da und einige Funktionen könnten nicht aufgerufen werden...
Verfasst: 30.09.2003 15:34
von F@B
Immernoch dasselbe!

Verfasst: 30.09.2003 17:23
von oxpus
Poste doch mal die Stelle, von der Du aus die recent.php aufrufen willst, oder besser gleich zur Datei einen Link (als .txt-File). Dann schaue ich mir das mal im Detail an. Und die recent.php natürlich gleich dazu...
Verfasst: 30.09.2003 20:33
von F@B
Also die recent.php funzt einwandfrei...
Ich denke das Problem ist, das er die recent läd und danach noch dieses template offen hat. Wenn nun mein Newsscript (Paranews) included wird, will dieses auch ein template öffnen...
Lösung: Vor den Paranews das alte Template wieder schliessen.
Frage: Wie bekomme ich den Namen raus? Oder wie schliesse ich alle templates die bis dahin geöffnet wurden?
Verfasst: 30.09.2003 21:17
von oxpus
Geöffnet wird ein Template mit $template->set_filenames('templatename'->'Dateiname.tpl');
Werte werden an das Template mit $template->assign_vars(array()); oder $template->assign_block_vars('...', array());
Geschlossen, bzw. "beendet" wird ein template mit $template->pparse('templatename');
Also nach dem Öffnen und Schliessen suchen und entsprechend handeln. Es kann auch eine Datei geöffnet oder per "include" eingebunden werden und mit einer eingebundenen Datei nochmal. Auch das kann zu Fehlern führen.
Vielleicht hilft das ja schon. Ist so allerdings mühselig zu beurteilen, wie man es machen muss, ohne die Scripte selber einzusehen...