Home / Forum / Treemenu

Treemenu

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein

Autor Nachricht

M K

Registriert seit: 24.02.2009

Beiträge: 92

Donnerstag, 01. Oktober 2009 14:26:11

Hallo zusammen,

ich würde gerne mit Treemenu einen Fall ausschießen wenn die Kinder nicht sichbar sind. Geht das?

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Donnerstag, 01. Oktober 2009 14:32:51

Deine Frage ist leider schwer zu beantworten, wenn man nicht weiß, was du damit erreichen willst. Ein wenig mehr Details wären also hilfreich.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Donnerstag, 01. Oktober 2009 14:45:54

{def $docs=treemenu( $module_result.path, , array(folder, frontpage), 1, 4, 'node')}
{def $depth=1 $last=0 $lastlevel=0}
<ol>
{foreach $docs as $menu}
{if $menu.id|ne('164')}
{set $lastlevel=$last.level}
{while and($lastlevel|ne(0), $lastlevel|gt($menu.level))}

</ol>
</li>
{set $lastlevel=$lastlevel|sub(1)}
{/while}
{if and($last | ne(0), $last.level|lt($menu.level))}
<ol>
{/if}

<li{$menu.is_selected|choose('',' class="selected"')}>
<span><a {*selected*}href={$menu.url_alias|ezurl} {if $menu.is_selected}class="active"{/if}>{$menu.text|wash()}</a></span>

{if $menu.has_children}
-----------------------------------> ich will hier ein </li> wenn das untermenü nicht sichtbar ist <-----------------------------------
{else}
</li>
{/if}
{set $last=$menu}
{/if}
{/foreach}
{set $depth=$last.level}
{while $depth |gt(0)}
</li>
</ol>
</li>
{set $depth=$depth|sub(1)}
{/while}
</ol>

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Donnerstag, 01. Oktober 2009 14:59:55

Wenn ich mich nicht täusche, dann werden nur Objekte gefetcht die sichtbar sind und im class_filter eingetragen sind. Du dürftest im treemenu-Array also auch nie einen Eintrag finden der hidden ist.

Wenn du solche Fälle abbilden willst, auch wenn mir nicht wirklich klar ist welchen Sinn das macht, dann mußt du dir dein Menü mit einfachen Fetches selbst zusammenbauen. Anleitungen hierfür gibt es in diesem Forum zu genüge.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Freitag, 02. Oktober 2009 15:25:18

wie bildet man denn über fetch 2 ebenen ab?

ich finde hier nichts...

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Montag, 05. Oktober 2009 08:28:07

Pseudocode:

Ebene1 = Fetch(  Content , List [Rootnode] )
foreach ( Ebene1 as NodeEbene1 )
{
    Ausgabe NodeEbene1
    if ( NodeEbene1 selektiert )
    {
        Ebene2 = Fetch ( Content , List [ NodeEbene1 ] )
        foreach ( Ebene2 as NodeEbene2 )
        {
            Ausgabe NodeEbene2
        }
    }
}


Das ist mal ganz einfacher Pseudocode. Ist nur um dir das Grundprinzip zu verdeutlichen. Wenn du dir dass Grundmenü zusammengebaut hast, dann kannst du da dann auch deine Ausnahmefälle einbauen.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Montag, 05. Oktober 2009 10:04:51

is_selected gibts ja nur im treemenu oder liege ich da falsch?

wie muss denn die if abfrage ausehen? wenn ich nach {if $NodeEbene1.is_selected} frage komme ich zu keinem ergebnis.

M K

Registriert seit: 24.02.2009

Beiträge: 92

Montag, 05. Oktober 2009 13:39:51

funktioniert, was kann ich eurer meinung an dem code verbessern?

#code
<ol>
{def $navigation = fetch( 'content', 'list', hash( 'parent_node_id', 164,
'class_filter_type', include,
'class_filter_array', array( 'folder', 'frontpage' ),
'sort_by', array( 'priority', true() ) ) )
$item_class = array()
$current = 0
}
{foreach $navigation as $item}
{def $navigation1 = fetch( 'content', 'list', hash( 'parent_node_id', $item.node_id,
'class_filter_type', include,
'class_filter_array', array( 'folder', 'frontpage' ) ) ) }
{foreach $navigation1 as $item1}
{if or($item.node_id|eq($current_node_id), $item1.node_id|eq($current_node_id))}
{set $current = 1}
{/if}
{/foreach}
{if $item.node_id|eq($current_node_id)}
{set $item_class = $item_class|append("active"}
{/if}
<li><a {if $item_class} class="{$item_class|implode(" "}" {set $item_class = $item_class|remove("active"}{/if} href={$item.url_alias|ezurl()}><span>{$item.name|wash()}</span></a>
{if $current|eq(1)}
{set $current = 0}
<ol>
{foreach $navigation1 as $item1}
{if $item1.node_id|eq($current_node_id)}
{set $item_class = $item_class|append("active"}
{/if}
<li><a {if $item_class} class="{$item_class|implode(" "}" {set $item_class = $item_class|remove("active"}{/if} href={$item1.url_alias|ezurl()}><span>{$item1.name|wash()}</span></a></li>
{/foreach}
</ol>
{/if}
</li>
{/foreach}

{undef $item_class, $navigation, $navigation1, $current}

</ol>
#code

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Montag, 05. Oktober 2009 14:25:04

{def $navigation = fetch( 'content', 'list', hash( 'parent_node_id' , 164,
                                                   'class_filter_type' , include,
                                                   'class_filter_array' , array( 'folder', 'frontpage' ),
                                                   'sort_by' , array( 'priority', true() ) ) )
     $startlevel = 2
     $level = 1
}

{if is_set($navigation.0)}
  <ol>
    {foreach $navigation as $item}
      <li>
        <a {if $item.node_id|eq( $module_result.path[ $level|sum($startlevel) ].node_id ) } class="selected"{/if} href={$item.url_alias|ezurl()}>
          <span>{$item.name|wash()}</span>
        </a>
        {if $item.node_id|eq( $module_result.path[ $level|sum($startlevel) ].node_id ) }
          {def $navigation1 = fetch( 'content', 'list', hash( 'parent_node_id', $item.node_id,
                                                              'class_filter_type', include,
                                                              'class_filter_array', array( 'folder', 'frontpage' ),
                                                              'sort_by' , array( 'priority', true() ) ) )
          {if is_set($navigation1.0)
            {set $level|inc() }
            <ol>
              {foreach $navigation1 as $item1}
                <li>
                  <a {if $item.node_id|eq( $module_result.path[ $level|sum($startlevel) ].node_id ) } class="selected"{/if} href={$item1.url_alias|ezurl()}>
                    <span>{$item1.name|wash()}</span>
                  </a>
                </li>
              {/foreach}
            </ol>
            {set $level|dec() }
          {/if}
          {undef $navigation1}
        {/if}
      </li>
    {/foreach}
  </ol>
{/if}
{undef $navigation, $startlevel , $level}



So sollte das in etwa gehen. Hab es aber nicht getestet. Kann also sein, dass noch Fehler drin sind.

Für Startlevel mußt du die Tiefe setzen in der du startest.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein