| View previous topic :: View next topic |
| Author |
Message |
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 11:25 am Post subject: |
|
|
ach nee ich kann ja auch direkt smarty nutzen ...
das müsste dann {foreach from=$current item=aktuelle_id} ausgabe: {$aktuelle_id}<br />{/foreach} sein oder??
wie gesagt sry starte grade bei null .... |
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 11:35 am Post subject: |
|
|
| {$meinvar|print_r} am einfachsten |
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 11:40 am Post subject: |
|
|
ok danke das hat geklappt ... dirket mal notieren ^^
also auf der hauptebene kommt bei allen einträgen als ausgabe 1
bei einer ebene drunter kommt
| Code: | | Array ( [196] => Array ( [tree] => 196 [data] => Array ( [id] => 196 [has_childs] => 0 [parent_id] => 187 [parent_id_ebene_0] => 1 [parent_id_ebene_1] => 187 [name] => Asynchron-Motoren Normen/Vorschriften [menu_name] => Asynchron-Motoren Normen/Vorschriften [URL] => http://jobs.birkenbeul.de//de/asynchron-motoren-normen-vorschriften_196.html [URL_de] => http://jobs.birkenbeul.de//de/asynchron-motoren-normen-vorschriften_196.html [URL_en] => http://jobs.birkenbeul.de//en/asynchron-motoren-normen-vorschriften_196.html [selected] => 1 ) ) [197] => Array ( [tree] => 197 [data] => Array ( [id] => 197 [has_childs] => 0 [parent_id] => 187 [parent_id_ebene_0] => 1 [parent_id_ebene_1] => 187 [name] => Bauformen nach EN 60034-7 [menu_name] => Bauformen nach EN 60034-7 [URL] => http://jobs.birkenbeul.de//de/bauformen-nach-en-60034-7_197.html [URL_de] => http://jobs.birkenbeul.de//de/bauformen-nach-en-60034-7_197.html [URL_en] => http://jobs.birkenbeul.de//en/bauformen-nach-en-60034-7_197.html [selected] => 0 ) ) [198] => Array ( [tree] => 198 [data] => Array ( [id] => 198 [has_childs] => 0 [parent_id] => 187 [parent_id_ebene_0] => 1 [parent_id_ebene_1] => 187 [name] => Schutzarten nach EN 60529 [menu_name] => Schutzarten nach EN 60529 [URL] => http://jobs.birkenbeul.de//de/schutzarten-nach-en-60529_198.html [URL_de] => http://jobs.birkenbeul.de//de/schutzarten-nach-en-60529_198.html [URL_en] => http://jobs.birkenbeul.de//en/schutzarten-nach-en-60529_198.html [selected] => 0 ) ) [199] => Array ( [tree] => 199 [data] => Array ( [id] => 199 [has_childs] => 0 [parent_id] => 187 [parent_id_ebene_0] => 1 [parent_id_ebene_1] => 187 [name] => Spannungen und Frequenzen [menu_name] => Spannungen und Frequenzen [URL] => http://jobs.birkenbeul.de//de/spannungen-und-frequenzen_199.html [URL_de] => http://jobs.birkenbeul.de//de/spannungen-und-frequenzen_199.html [URL_en] => http://jobs.birkenbeul.de//en/spannungen-und-frequenzen_199.html [selected] => 0 ) ) [200] => Array ( [tree] => 200 [data] => Array ( [id] => 200 [has_childs] => 0 [parent_id] => 187 [parent_id_ebene_0] => 1 [parent_id_ebene_1] => 187 [name] => Erwärmung [menu_name] => Erwärmung [URL] => http://jobs.birkenbeul.de//de/erwaermung_200.html [URL_de] => http://jobs.birkenbeul.de//de/erwaermung_200.html [URL_en] => http://jobs.birkenbeul.de//en/erwaermung_200.html [selected] => 0 ) ) [201] => Array ( [tree] => 201 [data] => Array ( [id] => 201 [has_childs] => 0 [parent_id] => 187 [parent_id_ebene_0] => 1 [parent_id_ebene_1] => 187 [name] => Bremsen [menu_name] => Bremsen [URL] => http://jobs.birkenbeul.de//de/bremsen_201.html [URL_de] => http://jobs.birkenbeul.de//de/bremsen_201.html [URL_en] => http://jobs.birkenbeul.de//en/bremsen_201.html [selected] => 0 ) ) ) Array ( [id] => 187 [has_childs] => 1 [parent_id] => 1 [parent_id_ebene_0] => 1 [name] => SERVICE [menu_name] => SERVICE [URL] => http://jobs.birkenbeul.de//de/service_187.html [URL_de] => http://jobs.birkenbeul.de//de/service_187.html [URL_en] => http://jobs.birkenbeul.de//en/service_187.html [selected] => 0 ) Array |
|
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 11:51 am Post subject: |
|
|
Dann ist die Zuweisung falsch.
Poste mal dein Leertemplate.
Hast du auch mal deine template_c gelöscht ? |
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 12:04 pm Post subject: |
|
|
den template_c ordner habe ich gelöscht brachte keinen erfolg,
was meinst du mit leertemplate?
meine page.tpl ?
also mein grundgerüst? |
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 12:08 pm Post subject: |
|
|
| Dein Menütemplate ohne Ausgabe |
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 12:13 pm Post subject: |
|
|
das müsste hier das sein
| Code: | ### Navigation
function get_tree_data($tid, $parent_ids, $tree){
global $glob_default_lang, $glob_domain, $glob_http_base_dir, $glob_languages, $glob_language, $glob_mainmenu_parent_id;
$query = "SELECT t_parent_id, tl_text_menu, t_id FROM tree LEFT JOIN tree_language ON tl_t_id = t_id LEFT JOIN content_to_tree ON ctt_t_id = t_id LEFT JOIN content ON ctt_c_id = c_id WHERE tl_lang = '".$glob_language."' and t_id = '".$tid."'";
$tree_data = db_get_assoc_row($query);
if (trim(strip_tags($tree_data['tl_text_menu'] == ""))){
### nur inhalte mit der passenden sprache anzeigen
return;
#### ende
$query = "SELECT t_parent_id, tl_text_menu, t_id FROM tree LEFT JOIN tree_language ON tl_t_id = t_id LEFT JOIN content_to_tree ON ctt_t_id = t_id LEFT JOIN content ON ctt_c_id = c_id WHERE tl_lang = '".$glob_default_lang."' and t_id = '".$tid."'";
$tree_data = db_get_assoc_row($query);
}
$data['id'] = $tree_data['t_id'];
if (is_array($tree)){
$data['has_childs'] = 1;
}else{
$data['has_childs'] = 0;
}
$data['parent_id'] = $tree_data['t_parent_id'];
if (is_array($parent_ids)){
foreach ($parent_ids as $key => $val){
$data['parent_id_ebene_' . $key] = $val;
}
}
$data['name'] = mkhtml($tree_data['tl_text_menu']);
$data['menu_name'] = mkhtml($tree_data['tl_text_menu']);
$data['URL'] = $glob_domain.$glob_http_base_dir.get_rewrite_name($tid,$tree_data['tl_text_menu']);
foreach ($glob_languages as $key => $val){
$query = "SELECT tl_text_menu FROM tree_language WHERE tl_t_id = '".$tid."' and tl_lang = '".$key."'";
$lang_row = db_get_assoc_row($query);
if ($lang_row['tl_text_menu']){
$lang_menu_text = $lang_row['tl_text_menu'];
}else{
$lang_menu_text = $tree_data['tl_text_menu'];
}
$data['URL_'.$key] = $glob_domain.$glob_http_base_dir.get_rewrite_name($tid,$lang_menu_text,$key);
}
/*
$data['name'] = $tree_data['t_state'];
$data['name'] = $tree_data['tl_text_menu'];
*/
return $data;
}
function get_childs($parent_id = 1, $ebene = -1, $parent_ids = array()){
global $sel_content, $id;
$query = "SELECT t_id, t_parent_id FROM tree WHERE t_parent_id = '".$parent_id."' and t_state = 1 ORDER BY t_pos";
$tree = db_get_assoc($query);
$ebene++;
foreach ($tree as $key => $val){
$query = "SELECT t_id, t_parent_id FROM tree WHERE t_parent_id = '".$val['t_id']."' and t_state = 1 ORDER BY t_pos";
$subtree = db_get_assoc($query);
if (!check_access($val['t_id'])){
continue;
}
if ($parent_id == 0){
$parent_ids = array();
}
$parent_ids[$ebene] = $parent_id;
if (sizeof($subtree) < 1){
if($val['t_id'] == $id){
$selected = 1;
}else{
$selected = 0;
}
### nur inhalte mit der passenden sprache anzeigen
$tree_data = get_tree_data($val['t_id'], $parent_ids, $ebenen[$val['t_id']]['tree']);
if (!is_array($tree_data)){
continue;
}
##### ende
$ebenen[$val['t_id']]['tree'] = $val['t_id'];
$ebenen[$val['t_id']]['data'] = $tree_data;
$ebenen[$val['t_id']]['data']['selected'] = $selected;
if($val['t_id'] == $id){
$sel_content = $ebenen[$val['t_id']];
}
}else{
if($val['t_id'] == $id){
$selected = 1;
}else{
$selected = 0;
}
$ebenen[$val['t_id']]['tree'] = get_childs($val['t_id'], $ebene, $parent_ids);
$ebenen[$val['t_id']]['data'] = get_tree_data($val['t_id'], $parent_ids, $ebenen[$val['t_id']]['tree']);
$ebenen[$val['t_id']]['data']['selected'] = $selected;
if($val['t_id'] == $id){
$sel_content = $ebenen[$val['t_id']];
}
}
}
return $ebenen;
}
|
hoffe ich ... |
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 12:18 pm Post subject: |
|
|
| Das ist nicht das Template sondern die PHP Funktion, welche die Menüdaten aubereitet. |
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 12:27 pm Post subject: |
|
|
da ich mich in dieses ganze einarbeiten muss und ich das ganze bisher nur genutzt habe blick ich bei dem ganzen nicht so durch ...
denke aber langsam kommt es ...
es gibt hier keine menü.tpl datei ...
ich denke es ist dieser aufruf hier
| Code: | {counter start=0 assign=numentry}
{foreach from=$navigation item=entry}
<div class="menu_leiste_schrift{if $entry.data.selected == 1 || $current == $ebene}selected{/if}">
<a class="mainmenu" href="{$entry.data.URL}"><img src="{$www_template_dir}images/pfeil_nav.gif" />{$entry.data.name}</a>
</div>
{counter}
{/foreach}
<!--<div class="imp">
<a href="http://jobs.birkenbeul.de//de/impressum_165.html">Impressum</a>
</div>-->
</div>
</div>
</div>
<div class="hauptteil">
<div class="links_menu">
{foreach from=$navigation item=ebene}
{if $sel_content.data.parent_id_ebene_1 == $ebene.data.id || $sel_content.data.id == $ebene.data.id}
<div class="navigation">
<div class="navigation_body">
<div class="navigation_liste">
{assign var="head_on" value="1"}
{if $content.c_type == "news"}{include file="$template_dir/contents/box_news_default.tpl"}{/if}
{/if}
{/foreach}
{foreach from=$navigation item=ebene}
{if $ebene.data.has_childs == 1}
{foreach from=$ebene.tree item=ebene1}
{if $sel_content.data.parent_id_ebene_1 == $ebene.data.id || $sel_content.data.id == $ebene.data.id}
{if $sel_content.data.parent_id_ebene_2 == $ebene1.data.id || $sel_content.data.id == $ebene1.data.id}
{assign var="selected1" value="selected"}{assign var="current" value=$ebene}
{else}
{assign var="selected1" value=""}
{/if}
<div class="menuentry1{$selected1}">
<a href="{$ebene1.data.URL}">{$ebene1.data.name}<img src="{$www_template_dir}images/pfeil_sub.gif" /></a>
{if $content.c_type == "news" && $selected1 == "selected"}{include file="$template_dir/contents/box_news_default.tpl"}{/if}
</div>
{if $selected1 != ""}
{if $ebene1.data.has_childs == 1}
<div class="menuentrys2">
{foreach from=$ebene1.tree item=ebene2}
{if $sel_content.data.parent_id_ebene_3 == $ebene2.data.id || $sel_content.data.id == $ebene2.data.id}
{assign var="selected2" value="selected"}{assign var="current" value=$ebene}
{else}
{assign var="selected2" value=""}
{/if}
<div class="menuentry2{$selected2}">
<a href="{$ebene2.data.URL}" >- {$ebene2.data.name}<img src="{$www_template_dir}images/pfeil_sub.gif" /></a>
{if $content.c_type == "news" && $selected2 == "selected" }{include file="$template_dir/contents/box_news_default.tpl"}{/if}
</div>
<!-- {if $selected2 != ""}
{if $ebene2.data.has_childs == 1}
<div class="menuentrys3">
{foreach from=$ebene2.tree item=ebene3}
{if $sel_content.data.parent_id_ebene_4 == $ebene3.data.id || $sel_content.data.id == $ebene3.data.id}
{assign var="selected3" value="selected"}
{else}
{assign var="selected3" value=""}
{/if}
<div class="menuentry3{$selected3}">
<a href="{$ebene3.data.URL}">- {$ebene3.data.name}<img src="{$www_template_dir}images/pfeil_sub.gif" /></a>
{if $content.c_type == "news" && $selected3 == "selected"}{include file="$template_dir/contents/box_news_default.tpl"}{/if}
</div>
{/foreach}
</div>
{/if}
{/if} -->
{/foreach}
</div>
{/if}{/if}
{/if}
{/foreach}
{/if}
{/foreach}
{if $head_on == 1}
</div>
</div>
</div>
{/if} |
oder ist das wieder die ausgabe? |
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 12:43 pm Post subject: |
|
|
| oder meinst du aus dem templates_c die dateien wo das ganze umgewandelt wird in reines php? |
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 1:27 pm Post subject: |
|
|
Also grundsätzlich bei Smarty muss eine Smartyvar bekannt sein bevor man sie verwendet.
Blindschuss da ich nicht probieren kann und um das Verfahren abzukürzen:
| Code: |
{assign name="current" value=-1}
{foreach from=$navigation item=ebene}
{if $ebene.data.has_childs == 1}
{foreach from=$ebene.tree item=ebene1}
{if $sel_content.data.parent_id_ebene_1 == $ebene.data.id || $sel_content.data.id == $ebene.data.id}
{if $sel_content.data.parent_id_ebene_2 == $ebene1.data.id || $sel_content.data.id == $ebene1.data.id}
{assign var="selected1" value="selected"}
{assign name="current" value=$ebene}
{else}
{assign var="selected1" value=""}
{/if}
{if $selected1 != ""}
{if $ebene1.data.has_childs == 1}
{foreach from=$ebene1.tree item=ebene2}
{if $sel_content.data.parent_id_ebene_3 == $ebene2.data.id || $sel_content.data.id == $ebene2.data.id}
{assign var="selected2" value="selected"}
{assign name="current" value=$ebene}
{else}
{assign var="selected2" value=""}
{/if}
{/foreach}
{/if}{/if}
{/if}
{/foreach}
{/if}
{/foreach}
{* Hier geht es weiter *}
{counter start=0 assign=numentry}
{foreach from=$navigation item=entry}
<div class="menu_leiste_schrift{if $entry.data.selected == 1 || $current == $ebene}selected{/if}">
<a class="mainmenu" href="{$entry.data.URL}"><img src="{$www_template_dir}images/pfeil_nav.gif" />{$entry.data.name}</a>
</div>
{counter}
{/foreach}
<!--<div class="imp">
<a href="http://jobs.birkenbeul.de//de/impressum_165.html">Impressum</a>
</div>-->
</div>
</div>
</div>
<div class="hauptteil">
<div class="links_menu">
{foreach from=$navigation item=ebene}
{if $sel_content.data.parent_id_ebene_1 == $ebene.data.id || $sel_content.data.id == $ebene.data.id}
<div class="navigation">
<div class="navigation_body">
<div class="navigation_liste">
{assign var="head_on" value="1"}
{if $content.c_type == "news"}{include file="$template_dir/contents/box_news_default.tpl"}{/if}
{/if}
{/foreach}
{foreach from=$navigation item=ebene}
{if $ebene.data.has_childs == 1}
{foreach from=$ebene.tree item=ebene1}
{if $sel_content.data.parent_id_ebene_1 == $ebene.data.id || $sel_content.data.id == $ebene.data.id}
{if $sel_content.data.parent_id_ebene_2 == $ebene1.data.id || $sel_content.data.id == $ebene1.data.id}
{assign var="selected1" value="selected"}
{else}
{assign var="selected1" value=""}
{/if}
<div class="menuentry1{$selected1}">
<a href="{$ebene1.data.URL}">{$ebene1.data.name}<img src="{$www_template_dir}images/pfeil_sub.gif" /></a>
{if $content.c_type == "news" && $selected1 == "selected"}{include file="$template_dir/contents/box_news_default.tpl"}{/if}
</div>
{if $selected1 != ""}
{if $ebene1.data.has_childs == 1}
<div class="menuentrys2">
{foreach from=$ebene1.tree item=ebene2}
{if $sel_content.data.parent_id_ebene_3 == $ebene2.data.id || $sel_content.data.id == $ebene2.data.id}
{assign var="selected2" value="selected"}
{else}
{assign var="selected2" value=""}
{/if}
<div class="menuentry2{$selected2}">
<a href="{$ebene2.data.URL}" >- {$ebene2.data.name}<img src="{$www_template_dir}images/pfeil_sub.gif" /></a>
{if $content.c_type == "news" && $selected2 == "selected" }{include file="$template_dir/contents/box_news_default.tpl"}{/if}
</div>
<!-- {if $selected2 != ""}
{if $ebene2.data.has_childs == 1}
<div class="menuentrys3">
{foreach from=$ebene2.tree item=ebene3}
{if $sel_content.data.parent_id_ebene_4 == $ebene3.data.id || $sel_content.data.id == $ebene3.data.id}
{assign var="selected3" value="selected"}
{else}
{assign var="selected3" value=""}
{/if}
<div class="menuentry3{$selected3}">
<a href="{$ebene3.data.URL}">- {$ebene3.data.name}<img src="{$www_template_dir}images/pfeil_sub.gif" /></a>
{if $content.c_type == "news" && $selected3 == "selected"}{include file="$template_dir/contents/box_news_default.tpl"}{/if}
</div>
{/foreach}
</div>
{/if}
{/if} -->
{/foreach}
</div>
{/if}{/if}
{/if}
{/foreach}
{/if}
{/foreach}
{if $head_on == 1}
</div>
</div>
</div>
{/if}
|
|
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 1:39 pm Post subject: |
|
|
ah okay, auch wieder ein guter punkt zu wissen!
also hab jetzt den abschnitt vor dem aufruf eingefügt
| Code: | {assign name="current" value=-1}
{foreach from=$navigation item=ebene}
{if $ebene.data.has_childs == 1}
{foreach from=$ebene.tree item=ebene1}
{if $sel_content.data.parent_id_ebene_1 == $ebene.data.id || $sel_content.data.id == $ebene.data.id}
{if $sel_content.data.parent_id_ebene_2 == $ebene1.data.id || $sel_content.data.id == $ebene1.data.id}
{assign var="selected1" value="selected"}
{assign name="current" value=$ebene}
{else}
{assign var="selected1" value=""}
{/if}
{if $selected1 != ""}
{if $ebene1.data.has_childs == 1}
{foreach from=$ebene1.tree item=ebene2}
{if $sel_content.data.parent_id_ebene_3 == $ebene2.data.id || $sel_content.data.id == $ebene2.data.id}
{assign var="selected2" value="selected"}
{assign name="current" value=$ebene}
{else}
{assign var="selected2" value=""}
{/if}
{/foreach}
{/if}{/if}
{/if}
{/foreach}
{/if}
{/foreach} |
allerdings zeigt es keine reaktion,
es klappt zwar wieder die normale aktiv anzeige, aber diese wird nicht für die child elemente übernommen
$current gibt jetzt auf jeder seite den wert 1 aus. |
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 2:02 pm Post subject: |
|
|
Also current kann keine 1 ausgeben, da current immer ein array ist.
Nur der erste Teil nützt nur bedingt da bei dir im zweiten Teil {assign var="current" value=$ebene} enthalten ist.
template_c ist der Ordner in dem die compilierten Templates abgelegt sind.
Je nach Einstellung von Smarty werden Templates neu compiliert bei Änderung oder es wird nicht geprüft, dann muss man die Dateien manuell löschen. |
|
| Back to top |
|
KidNoob Smarty Rookie
Joined: 18 Jul 2011 Posts: 21
|
Posted: Tue Jul 19, 2011 2:07 pm Post subject: |
|
|
ich hab die deklaration im zweiten teil rausgenommen,
hat sich aber nichts geändert. er bleibt dabei das er bei den kind elementen das selected vergisst
habe wie eben {$current|print_r} gemacht und er gab mir nur eine 1 aus ...
jep schon festgestellt, er compiliert jedesmal neu
hat er da selber einen begrenzung drinnen nachdem er die alten daten löscht oder sollte man nach vielen änderungen den ordner manuell leeren? |
|
| Back to top |
|
jacz Smarty Pro

Joined: 13 Nov 2010 Posts: 249
|
Posted: Tue Jul 19, 2011 2:14 pm Post subject: |
|
|
Dann setz mal vor den Stellen
{assign name="current" value=$ebene}
ein
{$ebene|print_r}
Smarty checkt offenbar bei dir den Änderungszustand der Templates, keine Maßnahmen erforderlich.
Probier mal gleich an erster Stelle also vor dem Menüteil
{$navigation|var_export}
Wenn es da eine Ausgabe gibt mal posten. |
|
| Back to top |
|
|