Haumis wbb hilfe (http://haumis-wbb-hilfe.de/wbb2/index.php)
- WBB2 (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=3)
-- Es klappt nicht (http://haumis-wbb-hilfe.de/wbb2/board.php?boardid=48)
--- Erstellung einer Seite mit Navigationstemplate (http://haumis-wbb-hilfe.de/wbb2/thread.php?threadid=2163)


Geschrieben von Listiger_Falke am 24.06.2012 um 02:23:

  Erstellung einer Seite mit Navigationstemplate

So, mal eine Frage wie man eine Seite mit Untertemplates hinbekommt

php:
1:
2:
3:
4:
5:
6:
7:
<?php
$filename="fische.php";
require("./global.php");
if(!$wbbuserdata['userid']) access_error();
eval("\$tpl->output("".$tpl->get("fische_index")."");");
?>



Das wäre ja die Ansteuerung für eine normale Seite. Ich würde beim Aufruf der "fische.php" das Template "fische_index.tpl" aufrufen.

Nun möchte ich gerne diese Index mit einer Tabelle füllen, die 2 Spalten hat. In der linken Spalte würde ich gerne eine Navigation einbauen, und diese als separates Template
Nennen wir es mal fische_navi.tpl
Das ganze separat, weil im laufe der Zeit immer weitere Punkte in die Navigation kommen, und ich dann nur das Template fische_navi ändern muß, und natürlich die action-Aufrufe in der PHP,aber nicht jede Unterseite der Fische, die ich da baue.


Die Navigation sollte so aufgebaut sein, das ich Punkte nehme, z.B.

<a href="fische.php?action=salmler">Salmler</a>
<a href="fische.php?action=welse">Welse</a>

Nun würde ich in die Rechte Spalte der Tabelle gerne ein entsprechendes Template laden, also bei fische.php?action=welse gleich ein Template fische_welse.tpl


Wie kann man das realisieren? Die Templates selber ist kein Problem, aber der php-Code der Seite fische.php und die Ansteuerung der Navigation und der wechselnden Inhalte (als Varialblen)

LG
Listiger_Falke



Geschrieben von haumi am 24.06.2012 um 07:57:

 

Spontan würde ich das mit 2 Frames aufbauen.
Im linken Frame die Navigation und im rechten dann eben das, was per Navigation aufgerufen wird.
Ich schau mir das heute im Laufe des Tages mal an und hoffe doch
zu einem Ergebnis zu kommen.
Man kann die Frames randlos machen, so das es aussieht als wäre es nur eine Seite.

LG
haumi



Geschrieben von Listiger_Falke am 24.06.2012 um 12:21:

 

Hallo Haumi,
es braucht eigentlich nicht mal ein Frameset sein, weil Frames den Nachteil eines Scrollbalkens haben. Ich habe mir weitergehende Gedanken gemacht, wenn man nur eine Variable definiert, die die Navigation aufruft, und in der PHP verschiedene Templates mit Aufruf definiert wäre das schon ausreichend.

Also Grundaufruf fische_php ruft Template fische_index.tpl auf, dieses Index enthält links die Navigation (als Template eingebunden) und rechts in der Spalte dann einen Inhalt.
Beim Klick auf den ersten Navigationspunkt <a href="fische.php?action=salmler">Salmler</a> findet ja eine Aktion statt, nun müßte über den Aufruf action=salmler einfach die Seite neu laden, aber diesmal mit den Template fische_salmler, das wieder eine Tabelle enthält mit 2 Spalten, links Navigation, rechts Inhalt.
Die Grundseite(tpl) kann man sich ja leer speichern, dann brauche ich bei neuen Unterseiten ja immer nur ein neues TPL erstellen mit dem rechten Inhalt, und müßte dann nur in der Navigations (im TPL) einen neuen Link eintragen und in der php den neuen Aufruf eintragen.

Gedacht ist es eigentlich dazu eine HP in das Forum mit zu integrieren, nur will ich nicht für 15 Seiten Fische auch 15 php mit einbinden, sondern eben nur eine, die verschiedene TPL´s ansteuert.

LG
Listiger_Falke



Geschrieben von haumi am 24.06.2012 um 17:40:

 

Wenn ich das richtig verstehe, dann ist es doch nichts anderes als ein wbb-Board.
Statt der Top-Buttons im Header sieht man diese auf der linken Seite als Navigation
ala festes Slidemenü, oder interpretiere ich das jetzt doch falsch??

Da kann man die Navigation des normalen HM-Portals nehmen , was ich
sonst immer wieder ausbaue.

Ich baue sie nachher hiermal wieder ein, was aber noch etwas dauern wird.
Ich habe noch Besuch und danach mache ich es mal und gebe in der Shoutbox kurz Bescheid.

LG
hannes



Geschrieben von Listiger_Falke am 24.06.2012 um 18:04:

 

Das Grundgerüst ist ein normales wbb2 Board, und auch in den einzelnen Seiten kommt ja $header und $footer.

Allerdings will ich das ganze wie eine Homepage umbauen, und dazu für einzelne Punkte Menüs mit Unterpunkten haben.

Also Hauptseite Fische ........ Unterseiten Salmler, Welse, Barben etc. Die Navigation der Unterpunkte soll in der Hauptseite des Punktes stattfinden, also eben im Template fische_indextpl, aber auch in jeder Unterseite auftauchen, um schnell zwischen den einzelnen Punkten wechseln zu können.

Im Prinzip brauche ich nur den Code um
1. Die Variable $fischnavi zu definieren, um diese Variable als eigenes Template überall dort zu plazieren wo ich sie auf den Fischseiten brauche
2. den Code um eine Aktion aufzurufen, also quasi if action fisch_salmler then Template fisch_salmler.tpl (Natürlich wieder als volle Seite aufgerufen)

Ich könnte zwar in der Global.php die Variable definieren
eval("\$fischnavi = \"".$tpl->get(fischnavi")."\";");

und unter eval("\$header = \"".$tpl->get("header")."\";"); einfügen, aber bei den geplanten Kategorien werden das sehr viele Variablen in der Global.php, deswegen wäre es mir lieber die Variable direkt in der Hauptseite des Punktes zu definieren.



Geschrieben von haumi am 24.06.2012 um 18:53:

 

ich habe vor einigen Monaten mal etwas ähnliches für mich gemacht,
und zwar eine Anzeige der Boarddaten der Boards, wo ich aushelfe.
Es befindet sich ALLES IN EINER PHP-DATEII.

Beim Aufruf erscheint eine Tabelle der Boards.
Ein Klick auf die Überschrift und es öffnet sich ein neues Formular zur Dateneingabe.
Ein klick auf den URL und es öffnet sich ein Formular zum ändern und Löschen des Datensatzes.
In diesen Formularen kann man wiederum Links anklicken und Aktionen ausführen.
etc.

Und das ist alles in einer einzigen php-Datei.
Für dich muss ich das aber umbauen.

Bei dir sähe das so aus, dass du Links hast und jeder Link ein anderes Formular aufruft.
Ich bastel da mal etwas zusammen - erst mal im kleinen und wenn es passt kann man es ja beliebig erweitern.
Ich versuche auch, das auf Basis von Templates aufzubauen.
Heute wird das aber noch nichts, ich hoffe aber doch morgen Abend etwas fertig zu haben.

LG
hannes



Geschrieben von Listiger_Falke am 24.06.2012 um 19:43:

 

So, ich habe mal etwas rumgetestet, und habe schon mal ein paar Sachen zusammenbekommen (Siehe Bildanhang)


Bisher habe ich eine fische.php mit folgenden Inhalt:

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
<?php
$filename="fische.php";
require("global.php");
$fischnavi="";
eval("\$fishnavi = "".$tpl->get("fischnavi")."";");
eval("\$tpl->output("".$tpl->get("fische_index")."");");  
                                                       
?> 


Dazu das Haupttemplate fische_index.tpl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
<head>
<title>$master_board_name | {$lang->items['LANG_USERCP_TITLE']}</title>
$headinclude
</head>
<body>
$header
$headernavi
<table cellpadding=0 cellspacing=0 border=0 style="width:{$style['tableinwidth']}" align="center">
  <tr>
    <td><img src="{$style['imagefolder']}/rahmen/OL.png"></td>
    <td background="{$style['imagefolder']}/rahmen/OM.png" width="100%" height="6px"></td>
    <td><img src="{$style['imagefolder']}/rahmen/OR.png"></td>
  </tr>
  <tr>
    <td valign="top" background="{$style['imagefolder']}/rahmen/LM.png" width="7px"></td>
    <td>
 <table cellpadding="{$style['tableincellpadding']}" cellspacing="{$style['tableincellspacing']}" border="{$style['tableinborder']}" style="width:100%" class="tableinborder">
 <tr>
  <td class="tablea"><table cellpadding="0" cellspacing="0" border="0" style="width:100%">
   <tr class="tablea_fc">
    <td align="left"><span class="smallfont"><b><a href="index.php{$SID_ARG_1ST}">$master_board_name</a> &raquo; Fische</b></span></td>
    <td align="right"><span class="smallfont"><b>$usercbar</b></span></td>
   </tr>
  </table></td>
 </tr>
</table>
</td>
    <td valign="top" background="{$style['imagefolder']}/rahmen/RM.png" width="7px"></td>
  </tr>
  <tr>
    <td><img src="{$style['imagefolder']}/rahmen/UL.png"></td>
    <td background="{$style['imagefolder']}/rahmen/UM.png" width="100%" height="6px"></td>
    <td><img src="{$style['imagefolder']}/rahmen/UR.png"></td>
  </tr>
</table>
<br />
<table cellpadding="0" cellspacing="0" border="{$style['tableinborder']}" style="width:{$style['tableinwidth']}">
 <tr align="center">
  <td style="width:200px" valign="top">$fishnavi
   </td>
  <td style="width:20px" valign="top"><img src="{$style['imagefolder']}/20x20.gif" width="20px" height="20px">
   </td>
  <td valign="top" style="width:940px">
  <table cellpadding=0 cellspacing=0 border=0 style="width:100%" align="center">
  <tr>
    <td><img src="{$style['imagefolder']}/rahmen/OL.png"></td>
    <td background="{$style['imagefolder']}/rahmen/OM.png" width="100%" height="6px"></td>
    <td><img src="{$style['imagefolder']}/rahmen/OR.png"></td>
  </tr>
  <tr>
    <td valign="top" background="{$style['imagefolder']}/rahmen/LM.png" width="7px"></td>
    <td>
    
    

<table cellpadding=0 cellspacing=0 border=0 style="width:100%" align="center">
<tr>
  <td class="tabletitle" align="center"><span class="normalfont"><b>Fische</b></span></td>
 </tr>
 <tr>
  <td class="tablea" align="center"><span class="normalfont"><br /><b>Testinhalt</b><br /><br /></span></td>
 </tr>
</table>




</td>
    <td valign="top" background="{$style['imagefolder']}/rahmen/RM.png" width="7px"></td>
  </tr>
  <tr>
    <td><img src="{$style['imagefolder']}/rahmen/UL.png"></td>
    <td background="{$style['imagefolder']}/rahmen/UM.png" width="100%" height="6px"></td>
    <td><img src="{$style['imagefolder']}/rahmen/UR.png"></td>
  </tr>
</table>
   </td>
 </tr>
</table>
$footer
</body>
</html>



und eine passende Navigation mit dem Template

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
<table cellpadding=0 cellspacing=0 border=0 style="width:200px" align="center">
  <tr>
    <td><img src="{$style['imagefolder']}/rahmen/OL.png"></td>
    <td background="{$style['imagefolder']}/rahmen/OM.png" width="100%" height="6px"></td>
    <td><img src="{$style['imagefolder']}/rahmen/OR.png"></td>
  </tr>
  <tr>
    <td valign="top" background="{$style['imagefolder']}/rahmen/LM.png" width="7px"></td>
    <td>
<table cellpadding=0 cellspacing=0 border=0 style="width:100%">
<tr>
<td>
<a href="fische.php{$SID_ARG_1ST}"><img src="{$style['imagefolder']}/navi2/z001a.png" border ="0" alt="" onmouseover=
"src='{$style['imagefolder']}/navi2/z001b.png'" onmouseout="src='{$style['imagefolder']}/navi2/z001a.png'" /></a>
</td>
</tr>
<tr>
<td>
<a href="fische.php?action=biologie$SID_ARG_1ST}"><img src="{$style['imagefolder']}/navi2/z001c.png" border ="0" alt="" onmouseover=
"src='{$style['imagefolder']}/navi2/z001d.png'" onmouseout="src='{$style['imagefolder']}/navi2/z001c.png'" /></a>
</td>
</tr>
<tr>
<td>
<a href="fische.php?action=systematik{$SID_ARG_1ST}"><img src="{$style['imagefolder']}/navi2/z001e.png" border ="0" alt="" onmouseover=
"src='{$style['imagefolder']}/navi2/z001f.png'" onmouseout="src='{$style['imagefolder']}/navi2/z001e.png'" /></a>
</td>
</tr>
<tr>
<td>
<a href="lex.php{$SID_ARG_1ST}"><img src="{$style['imagefolder']}/navi2/z001g.png" border ="0" alt="" onmouseover=
"src='{$style['imagefolder']}/navi2/z001h.png'" onmouseout="src='{$style['imagefolder']}/navi2/z001g.png'" /></a>
</td>
</tr>
</table>
</td>
    <td valign="top" background="{$style['imagefolder']}/rahmen/RM.png" width="7px"></td>
  </tr>
  <tr>
    <td><img src="{$style['imagefolder']}/rahmen/UL.png"></td>
    <td background="{$style['imagefolder']}/rahmen/UM.png" width="100%" height="6px"></td>
    <td><img src="{$style['imagefolder']}/rahmen/UR.png"></td>
  </tr>
</table>

<script language="JavaScript" type="text/javascript">
//<![CDATA[
<!-- hide from none JavaScript Browsers

Image1 = new Image(186,28)
Image1.src = "{$style['imagefolder']}/navi2/z001b.png"
Image2 = new Image(186,28)
Image2.src = "{$style['imagefolder']}/navi2/z001d.png"
Image3 = new Image(186,28)
Image3.src = "{$style['imagefolder']}/navi2/z001f.png"
Image3 = new Image(186,28)
Image3.src = "{$style['imagefolder']}/navi2/z001h.png"

// End Hiding -->
//]]>
</script>



Soweit funktioniert das bisher.


Nun die Fragen dazu....... ich verlinke in den Links nun eine Aktion

<a href="fische.php?action=biologie{$SID_ARG_1ST}"><img src="{$style['imagefolder']}/navi2/z001c.png" border ="0" alt="" onmouseover=
"src='{$style['imagefolder']}/navi2/z001d.png'" onmouseout="src='{$style['imagefolder']}/navi2/z001c.png'" /></a>

Was muß ich nun in die PHP eintragen, damit die PHP mit einem neuen Template fische_biologie.tpl aufgerufen wird.
Und worüber ich grade gestolpert bin ..... muß es im Link {$SID_ARG_1ST} oder weil es ein actionaufruf ist {$SID_ARG_2ND} heißen?



Geschrieben von haumi am 24.06.2012 um 20:32:

 

Ich hab mir das nun mal durchgesehen und hoffe etwas helfen zu können.

erweitere die php-Datei mal um den Code:


code:
1:
2:
3:
$action = $_GET['action'];
if($action =="systematik") 
eval("\$system = "".$tpl->get("systematik)."";");


etwa so:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
<?php
$filename="fische.php";
require("global.php");
$fishnavi="";

$action = $_GET['action'];
if($action =="systematik") 
eval("\$system = "".$tpl->get("systematik)."";");

eval("\$fishnavi = "".$tpl->get("fischnavi")."";");
eval("\$tpl->output("".$tpl->get("fische_index")."");");  
                                                       
?> 


Das setzt aber voraus das die fische.php aufgerufen wird mit der Übergabe des action-Parameters (<a href="fische.php?action=systematik{$SID_ARG_1ST}">systematik</a>)

Ich hoffe das hilft dir erst mal weiter.

Sollten es viele Aufrufe sein dann bietet sich auch die switch/case Variante an.

LG
haumi



Geschrieben von Listiger_Falke am 24.06.2012 um 21:46:

 

Also egal wie ich es anwende, es kommt immer nur das Template fische_index

Ich habe verschiedene Versuche gestartet, auch lädt die Seite neu, aber die Templates werden nicht geändert.



Geschrieben von haumi am 24.06.2012 um 21:54:

 

Versuche es mal hiermit:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
<?php
$filename="fische.php";
require("global.php");
$fishnavi="";

switch ($action) {
    case "systematik":
        eval("\$tpl->output("".$tpl->get("systematik")."");"); 
        break;
    case "template3":
        eval("\$tpl->output("".$tpl->get("template2")."");"); 
        break;
    case "template3":
        eval("\$tpl->output("".$tpl->get("template3")."");"); 
        break;
default:
eval("\$fishnavi = "".$tpl->get("fischnavi")."";");
eval("\$tpl->output("".$tpl->get("fische_index")."");");  
}                                            
?> 


statt template 2 oder template3 das Template deiner Wahl eintragen.
hinter case kommt jeweils der actionaufruf.
bei mir klappt es so.

LG
haumi



Geschrieben von Listiger_Falke am 24.06.2012 um 22:24:

 

Also auch so ändert sich bei mir nichts. Ich habe zwar oben veränderte Adressen, also
http://www.aquaristik.ws/cms/fische.php?action=biologie und http://www.aquaristik.ws/cms/fische.php?action=systematik, aber die Templates ändern sich nicht, es wird nur das Haupttemplate fische_index aufgerufen



Geschrieben von Listiger_Falke am 24.06.2012 um 23:45:

 

php:
1:
2:
3:
4:
5:
6:
7:
8:
<?php
$filename="fische.php";
require("global.php");
$fischnavi="";
eval("\$fishnavi = "".$tpl->get("fischnavi")."";");
eval("\$tpl->output("".$tpl->get("fische_index")."");");
?>



Das war der Grundcode ja erst mal

Dann hatte ich es so geändert




php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

<?php
$filename="fische.php";
require("global.php");
$fishnavi="";

switch ($action) {
    case "systematik":
        eval("\$tpl->output("".$tpl->get("fische_systematik")."");"); 
        break;
    case "biologie":
        eval("\$tpl->output("".$tpl->get("fische_biologie")."");"); 
        break;
default:
eval("\$fishnavi = "".$tpl->get("fischnavi")."";");
eval("\$tpl->output("".$tpl->get("fische_index")."");");  
}                                            
?> 


Ich hatte erst mal nur 2 Templates plus die Navigation eingebunden



Geschrieben von Listiger_Falke am 25.06.2012 um 00:49:

 

So, nach langen rumprobieren und suchen hab ichs jetzt hinbekommen st1

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

<?php
$filename="fische.php";
require("global.php");
$fishnavi="";
eval("\$fishnavi = "".$tpl->get("fischnavi")."";");

if(isset($_REQUEST['action'])) $action=$_REQUEST['action'];
else $action="index";

if($action=="index") {
    eval("\$tpl->output("".$tpl->get("fische_index")."");");
}

if($action=="biologie") {
    eval("\$tpl->output("".$tpl->get("fische_biologie")."");");
}

if($action=="systematik") {
    eval("\$tpl->output("".$tpl->get("fische_systematik")."");");
}
?>



Geschrieben von haumi am 25.06.2012 um 09:55:

 

Na fein,
Es freut einen doch immer, wenn man selbst die Lösung findet.

st12 st12 st12 st12 st12

LG
haumi



Geschrieben von nobody am 25.06.2012 um 11:52:

 

Gut gemacht.
Schöne Seite.
Weiter So.


nobody


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH