hi,
ich bin vor kurzem auf Smarty gestoßen und bin gerade dabei mein CMS darauf umzustellen...Bis jetzt klappt auch alles ganz gut...Aber bei der Navigation habe ich ein problem
Mein bisheriger Code sag wie folgt aus:
[php]$mvNavDb=$mcDB->mfQuery("SELECT * FROM ".mTblNavCat." WHERE navcat_status='1' ORDER by navcat_order ASC");
while($mvNav=$mcDB->mfFetchArray($mvNavDb)){
if($mvNav['navcat_align']==1){
$mvSiteNavClassBody = 'navLeftBody';
$mvSiteNavClassTable = 'navLeftTable';
unset($mvSiteNavLeftHead);
unset($mvSiteNavLeftBody);
if($mvNav['navcat_box']!=""){
include("navigation/".$mvNav['navcat_box']);
$mvSiteNavLeftHead=$mvNav['navcat_title'];
eval ("$mvSiteNavLeftBody .= "".mfGetTemplate($mvNavTemplate)."";");
eval ("$mvSiteNavLeftBox .= "".mfGetTemplate("navigation_left_box")."";");
}
else{
$mvNavLinkDb=$mcDB->mfQuery("SELECT * FROM ".mTblNav." WHERE nav_cat='".$mvNav['navcat_id']."' ORDER by nav_order ASC");
while($mvNavLink=$mcDB->mfFetchArray($mvNavLinkDb)){
$mvSiteNavClassBody = "navLeftBody";
$mvSiteNavClassTable = 'navLeftTable';
eval ("$mvSiteNavLeftBody .= "".mfGetTemplate("navigation_link")."";");
}
$mvSiteNavLeftHead=$mvNav['navcat_title'];
eval ("$mvSiteNavLeftBox .= "".mfGetTemplate("navigation_left_link_box")."";");
}
}
elseif($mvNav['navcat_align']==2){
$mvSiteNavClassBody = 'navRightBody';
$mvSiteNavClassTable = 'navRightTable';
unset($mvSiteNavRightHead);
unset($mvSiteNavRightBody);
if($mvNav['navcat_box']!=""){
include("navigation/".$mvNav['navcat_box']);
$mvSiteNavRightHead=$mvNav['navcat_title'];
eval ("$mvSiteNavRightBody .= "".mfGetTemplate($mvNavTemplate)."";");
eval ("$mvSiteNavRightBox .= "".mfGetTemplate("navigation_right_box")."";");
}
else{
$mvNavLinkDb=$mcDB->mfQuery("SELECT * FROM ".mTblNav." WHERE nav_cat='".$mvNav['navcat_id']."' ORDER by nav_order ASC");
while($mvNavLink=$mcDB->mfFetchArray($mvNavLinkDb)){
$mvSiteNavClassBody = "navRightBody";
$mvSiteNavClassTable = 'navRightTable';
eval ("$mvSiteNavRightBody .= "".mfGetTemplate("navigation_link")."";");
}
$mvSiteNavRightHead=$nav['navcat_title'];
eval ("$mvSiteNavRightBox .= "".mfGetTemplate("navigation_right_link_box")."";");
}
}
elseif($mvNav['navcat_align']==3){
$mvSiteNavClassBody = 'navTopBody';
$mvSiteNavClassTable = 'navTopTable';
unset($mvSiteNavTopHead);
unset($mvSiteNavTopBody);
if($mvNav['navcat_box']!=""){
include("navigation/".$mvNav['navcat_box']);
$mvSiteNavTopHead=$mvNav['navcat_title'];
eval ("$mvSiteNavTopBody .= "".mfGetTemplate($mvNavTemplate)."";");
eval ("$mvSiteNavTopBox .= "".mfGetTemplate("navigation_top_box")."";");
}
else{
$mvNavLinkDb=$mcDB->mfQuery("SELECT * FROM ".mTblNav." WHERE nav_cat='".$mvNav['navcat_id']."' ORDER by nav_order ASC");
while($mvNavLink=$mcDB->mfFetchArray($mvNavLinkDb)){
$mvSiteNavClassBody = "navTopBody";
$mvSiteNavClassTable = 'navTopTable';
eval ("$mvSiteNavTopBody .= "".mfGetTemplate("navigation_link")."";");
}
$mvSiteNavTopHead=$mvNav['navcat_title'];
eval ("$mvSiteNavTopBox .= "".mfGetTemplate("navigation_top_link_box")."";");
}
}
elseif($mvNav['navcat_align']==4){
$mvSiteNavClassBody = 'navBottomBody';
$mvSiteNavClassTable = 'navBottomTable';
unset($mvSiteNavBottomHead);
unset($mvSiteNavBottomBody);
if($mvNav['navcat_box']!=""){
include("navigation/".$mvNav['navcat_box']);
$mvSiteNavBottomHead=$mvNav['navcat_title'];
eval ("$mvSiteNavBottomBody .= "".mfGetTemplate($mvNavTemplate)."";");
eval ("$mvSiteNavBottomBox .= "".mfGetTemplate("navigation_bottom_box")."";");
}
else{
$mvNavLinkDb=$mcDB->mfQuery("SELECT * FROM ".mTblNav." WHERE nav_cat='".$mvNav['navcat_id']."' ORDER by nav_order ASC");
while($mvNavLink=$mcDB->mfFetchArray($mvNavLinkDb)){
$mvSiteNavClassBody = "navBottomBody";
$mvSiteNavClassTable = 'navBottomTable';
eval ("$mvSiteNavBottomBody .= "".mfGetTemplate("navigation_link")."";");
}
$mvSiteNavBottomHead=$mvNav['navcat_title'];
eval ("$mvSiteNavBottomBox .= "".mfGetTemplate("navigation_bottom_link_box")."";");
}
}
}
eval ("$mvSiteNavBottom .= "".mfGetTemplate("navigation_bottom")."";");
eval ("$mvSiteNavTop .= "".mfGetTemplate("navigation_top")."";");
eval ("$mvSiteNavRight .= "".mfGetTemplate("navigation_right")."";");
eval ("$mvSiteNavLeft .= "".mfGetTemplate("navigation_left")."";");[/php]
Die Templates dazu (nur für navigation_left, da sich die anderen ziemlich gleichen):
navigation_left.tpl
[html]$mvSiteNavLeftBox[/html]
navigation_left_box.tpl
[html]<table width="100%" class="navLeftTable" border="0" cellspacing="1" cellpadding="2">
<tr>
<td class="navLeftHead" align="center">
$mvSiteNavLeftHead
</td>
</tr>
<tr>
<td class="navLeftBody">
$mvSiteNavLeftBody
</td>
</tr>
</table>
<img src="http://www.traum-projekt.com/forum/images/blank.gif" height="5" />[/html]
navigation_left_link_box.tpl
[html]<table width="100%" class="navLeftTable" border="0" cellspacing="1" cellpadding="2">
<tr>
<td class="navLeftHead" align="center">
$mvSiteNavLeftHead
</td>
</tr>
$mvSiteNavLeftBody
</table>
<img src="http://www.traum-projekt.com/forum/images/blank.gif" height="5" />[/html]
navigation_lin.tpl
[html] <tr>
<td class="$mvSiteNavClassBody">
<a href="$mvNavLink[nav_link]">$mvNavLink[nav_title]</a>
</td>
</tr>[/html]
Als ich es umgestellt habe, habe ich die ganzen eval Funktionen durch Smarty Funktionen ersetzt
[php]// z.B.
eval ("$mvSiteNavLeft .= "".mfGetTemplate("navigation_left")."";");
// in
$mcTpl->assign("mSiteNavLeft", $mcTpl->fetch('navigation_left.tpl'));[/php]
und die Variablen in den Templates in {} eingeschlossen. Aber es funktioniert nicht.
Kann mir vielleicht jemand sagen wie ich das machen muss, damit es klappt?
Smarty ist ziemlich genial...jedoch auch ziemlich schwer sich einzuarbeiten, weils doch sehr umfangreich ist
Würde mich über jede Antwort freue, die mir helfen könnte das Problem zu lösen.
Danke...=)