Webboard

Pełna wersja: Dodanie nowej podstrony - problem z wgraniem dwóch szablonów
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
wersja skryptu MyBB: 1.6.2
adres forum: http://podziemieopowiadan.pl/forum
na czym polega problem (screen, opis, komunikaty):
Zrobiłem podstronę według poradnika na MyBBsite. Wszystko było dobrze, kiedy wczytywałem zaledwie zawartość szablonu do pliku, jednakże, jako, że w szablonach nie można używać php, a jest mi on potrzebny, podzieliłem szablon na dwie części, dając w pliku funkcję echo pomiędzy nimi, ale, jak mozna zobaczyć na http://podziemieopowiadan.pl/forum/quiz.php efekt nie jest taki jak oczekiwałem.

Tutaj zawartość quiz.php:
Kod PHP:
<?php
define
('IN_MYBB'1); 
require 
"./global.php"
 
add_breadcrumb("Quiz z okazji Światowego Dnia książki""quiz.php");
 
eval(
"\$podstr = \"".$templates->get("Quiz1")."\";");
echo 
"Hello World!";
eval(
"\$podstr = \"".$templates->get("Quiz2")."\";");
output_page($podstr); 
?>
Obydwa szablony są dostępne.


Już poprawiłem. Domyśliłem się, że za wyświetlanie odpowiada funkcja output_page. (Ech, ta moja znajomość php :P)
Kod PHP:
<?php
define
('IN_MYBB'1); 
require 
"./global.php"
 
add_breadcrumb("Quiz z okazji Światowego Dnia książki""quiz.php");
 
eval(
"\$podstr1 = \"".$templates->get("Quiz1")."\";");
eval(
"\$podstr2 = \"".$templates->get("Quiz2")."\";");
output_page($podstr1); 
echo 
"Hello World!";
output_page($podstr2); 
?>

Mimo wszystko prosiłbym o pozostawienie topicu dla potomnych.
Błąd polega na tym, że nie możesz używać echo przed puszczeniem nagłówków (a funkcja output_page jak widać to w MyBB realizuje [to i wiele innych rzeczy]).
Moim zdaniem wywołanie jej 2 razy to również błąd, lepiej byłoby tak:

Kod PHP:
<?php
define
('IN_MYBB'1); 
require 
"./global.php"
 
add_breadcrumb("Quiz z okazji Światowego Dnia książki""quiz.php");
 
eval(
"\$podstr1 = \"".$templates->get("Quiz1")."\";");
eval(
"\$podstr2 = \"".$templates->get("Quiz2")."\";");
eval(
"\$page= \"".$templates->get("quiz_calosc")."\";");

output_page($page); 
?>

Czyli dodajesz dodatkowy szablon, który łączy w sobie te mniejsze. Właśnie w ten sposób sami twórcy MyBB organizują poszczególne "sekcje" generowanych podstron na forum, warto więc brać z nich przykład.
Tyle, że w templates nie działa kod php, co utrudnia pracę ;]
No to elementy tego formularza wrzucasz do zmiennych używanych w szablonie - twórcy MyBB zrobili tak cały silnik forum z ogromem formularzy :)
Spróbuję, gdy będę ponownie potrzebował podstrony, gdyż poprzednia już została użyta i nie jest potrzebna, bo event się skończył ;)

Ale w teorii, jeśli zdefiniowałbym jakiekolwiek zmienne w pliku php i wywołał je w szablonie, to powinno śmigać, mam rację?
Tak, powinno śmigać w właśnie o to chodzi w użyciu szablonów.