Home / Forum / Mehrteilige Navigation

Mehrteilige Navigation

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

Autor Nachricht

Carsten Hermann

Registriert seit: 28.07.2009

Beiträge: 3

Dienstag, 28. Juli 2009 08:45:26

Hallo @all,

ich bin neu und versuche an einem ganz konkreten Projekt mich mit ezPublish zu beschäftigen und die entsprechenden Anforderungen umzusetzen.
Jetzt ergeben sich folgende Anforderungen:

1. Wo kann ich die Navigationstiefe einstellen, sprich die Anzahl der Navigations-Ebenen? Derzeit werden mir nur 3 dargestellt.
2. Wie kann ich eine Navigation in mehrere Bereiche teilen? z.B. 1. Ebene - Regionen (Bayern, Sachsen, NRW), 2. Ebene Hauptthemen (News, Regionsspezifische Infos), 3. Ebene Unterthemen (unter News dann spezielle News wie Musicnews oder Kinonews)
3. Ich benötige eine Art Regionsswitch - d.h. ich wähle die Region (Bayern) - erhalte die Navigation zu Bayern und die entsprechenden Themen - gehe ich dann in der 1. Navigationsebene auf Nürnberg erhalte ich alle news, Veranstaltungen zu Nürnberg.
Wie könnte man sowas lösen? Vielleicht kann man die Regionen als Eigenschaft zur Seite hinzufügen und dann über eine Dropdownliste in den Eigenschaften der Seite wählen und diese dann abfragen?

Vielleicht haltet Ihr eine Lösung für mich bereit?

Danke und Beste Grüße,



Wer anderen eine Grube gräbt, der hat ein Grubengrabgerät.

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Dienstag, 28. Juli 2009 09:45:57

Das solltes du alles über dein Menütemplate hinbekommen. Schau dir einfach mal die Doku dazu an. Sie beschreibt das an sich ganz gut. Du findest es unter http://ez.no/doc/ez_publish/techn...ate_operators/miscellaneous/treemenu . Für dich dürfte 'depth_skip' und 'max_level' interessant sein.

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

Sebastian v. Roos

Registriert seit: 27.01.2006

Beiträge: 358

Dienstag, 28. Juli 2009 13:37:38

Ich bin mir auch nicht so ganz sicher, aber das left_menu.tpl vom eZ Webin zeigt wohl wirklich nur 3 Ebenen. Ich kann mich aber irren. Jedenfalls hab ich es auch schon vergeblich versucht.
Hier ist ein Thread, zu dem Thema:
http://ez.no/de/developer/forum/s...ebin_treemenu_limited_to_2_levels__4

Das left_menu.tpl, was sich in \extension\ezwebin\design\ezwebin\templates\menu befindet, scheint ja den treemenu operator gar nicht zu benutzen, soweit ich das mit meinen bescheidenen Kenntnissen überblicken kann.
Anders das, was in \design\base\templates\menu ist, Bei dem gibts keine Probleme mit den Ebenen.
Also mich interessiert Lösungsmöglichkeit auch, zumal ich mit dem Thread oben Vorgeschlagenem noch nicht erfolgreich war.
(Oder das dynamische vom admin, das kann man auch benutzen. )

bei deinen anderen Problemen, schnelleinschätzung, vielleicht einfach mit mehreren Menus arbeiten, kann man ja ohne weiteres einbinden, und diese dann so konfigurieren, dass sie die entsprechende Ordnerstruktur anzeigen.

_______________________

http://webdevelopment.artenic.de ARTENIC - Publishing mit allen Mitteln!

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Dienstag, 28. Juli 2009 16:42:48

Es ist an sich nicht wirklich notwendig mehrere Menüs zu verwenden. Sofern sich die Unterpunkte alle in einer Tiefe befinden, ist es problemlos mit einem einfachen Treemenü realisierbar. Man muß dem Menü nur die richtige Starttiefe angeben, dann geht das schon bereits. Wir nutzen auch oft das Topmenü für die Hauptebene und das linke Menü für die Unterebenen.

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

Carsten Hermann

Registriert seit: 28.07.2009

Beiträge: 3

Dienstag, 28. Juli 2009 17:13:14

Hallo @all,

danke für Eure Antworten, das hilft mir in jedem Fall weiter.
Die Anforderungen sind leider etwas abstrakt, ich versuche mal zu schildern, vielleicht könnt Ihr mir eine Lösung vorschlagen?

Ich brauche im im Oberen Bereich eine Auswahl :
Stadt 1 | Stadt 2 | Stadt 3

Wählt man eine Stadt aus wird die entsprechende Top-Navigationsstruktur dargestellt im oberen Bereich der Seite z.B. NEWS | LOCATIONS | BILDER | EVENTS usw. Klickt man auf einen Navigationspunkt in dieser Ebene, dann öffnet sich eine 2. Ebene unterhalb der 1. Ebene - sozusagen eine 2 zeilige Topnavigation.

Das heisst ich habe an dieser Stelle schon 3 Ebenen (1. Stadt, 2. Hauptkategorien, 3. Unterkategorien).

in einem Separaten Menü (links) sollen dann event. noch weitere Spezifische Menüpunkte angezeigt werden.

Über eine Lösungsvorschlag wäre ich dankbar.

Gruss,

Carsten

Wer anderen eine Grube gräbt, der hat ein Grubengrabgerät.

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Dienstag, 28. Juli 2009 17:31:41

Es gibt da viele Lösungen

1. mehrer Menüs mit Treemenüoperator (wenn Menü über mehrere Ebenen geht)
2. mehrere Menüs mit einfachen List-Fetch (geht immer, wenn pro Menü nur eine Ebene benötigt wird)
3. Kombination aus 1. und 2.

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

scrieler _

Registriert seit: 26.03.2007

Beiträge: 284

Mittwoch, 29. Juli 2009 09:14:57

heya, hier einen Lösungsansatz für euch:

{def $mainMenu=treemenu( $module_result.path, ,
                                    array(1, 9, 17, 22), 0, 4)}
{def $depth=1 $last=0 $lastlevel=0}
<ul id="treemenu">
{foreach $mainMenu as $menu}
    {set $lastlevel=$last.level}
    {while and($lastlevel|ne(0), $lastlevel|gt($menu.level))}
        </ul></li>
        {set $lastlevel=$lastlevel|sub(1)}
    {/while}
 
    {if and($last | ne(0), $last.level|lt($menu.level))}
        <li><ul>
    {/if}
 
    <li {$menu.is_selected|choose('',' class="selected"')}>
    <a href={$menu.url_alias|ezurl} {$menu.is_selected|choose('',' class="selected"')}>{$menu.text}</a>
    </li>
 
    {set $last=$menu}
{/foreach}
 
{set $depth=$last.level}
{while $depth |gt(0)}
    </ul></li>
    {set $depth=$depth|sub(1)}
{/while}
</ul>

Sebastian v. Roos

Registriert seit: 27.01.2006

Beiträge: 358

Donnerstag, 10. September 2009 00:36:22

hab auch in diesem andern left_menu.tpl eine 3. Ebene zum laufen gekriegt.
ob da jetzt Fehler drin sind, weiß ich nix, jedenfalls gehts erstmal.

<div class="border-box">
<div class="border-tl"><div class="border-tr"><div class="border-tc"></div></div></div>
<div class="border-ml"><div class="border-mr"><div class="border-mc">



{def $left_menu_depth = $pagedata.current_menu|eq('LeftOnly')|choose( 1, 0 )
     $left_menu_root_url = cond( $pagedata.path_array[ $left_menu_depth ].url_alias, $pagedata.path_array[ $left_menu_depth ].url_alias, $requested_uri_string )}

    <h4><a href={if eq( $ui_context, 'browse' )}{concat("content/browse/", $pagedata.path_array[ $left_menu_depth ].node_id)|ezurl}{else}{$left_menu_root_url|ezurl}{/if}>{$pagedata.path_array[ $left_menu_depth ].text}</a></h4>

{if ne( $pagedata.class_identifier, 'documentation_page' )}
    {def $root_node=fetch( 'content', 'node', hash( 'node_id', $pagedata.path_array[$left_menu_depth].node_id ) )
         $left_menu_items = fetch( 'content', 'list', hash( 'parent_node_id', $root_node.node_id,
                                                            'sort_by', $root_node.sort_array,
                                                            'data_map_load', false(),
                                                            'class_filter_type', 'include',
                                                            'class_filter_type', 'include',
                                                            'class_filter_array', ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini' ) ) )
         $left_menu_items_count = $left_menu_items|count()
         $li_class = array()
         $a_class = array()
         $current_node_in_path_2 = first_set( $pagedata.path_array[$left_menu_depth|inc].node_id,  0 )
         $current_node_in_path_3 = first_set( $pagedata.path_array[$left_menu_depth|sum(2)].node_id,  0 )
         $current_node_in_path_4 = first_set( $pagedata.path_array[$left_menu_depth|sum(3)].node_id,  0 ) {* für zusätzliche Ebene *}


     {if $left_menu_items_count}
        <ul class="menu-list">
        {foreach $left_menu_items as $key => $item}
            {set $a_class = cond($current_node_in_path_2|eq($item.node_id), array("selected", array())
                 $li_class = cond( $key|eq(0), array("firstli", array() )}

            {if $left_menu_items_count|eq( $key|inc )}
                {set $li_class = $li_class|append("lastli"}
            {/if}
            {if $item.node_id|eq( $current_node_id )}
                {set $a_class = $a_class|append("current"}
            {/if}
            {if eq( $item.class_identifier, 'link')}
                <li{if $li_class} class="{$li_class|implode(" "}"{/if}><div class="second_level_menu"><a {if eq( $ui_context, 'browse' )}href={concat("content/browse/", $item.node_id)|ezurl}{else}href={$item.data_map.location.content|ezurl} target="_blank"{/if}{if $a_class} class="{$a_class|implode(" "}"{/if} title="{$item.data_map.location.data_text|wash}">{$item.name|wash()}</a></div>
            {else}
                <li{if $li_class} class="{$li_class|implode(" "}"{/if}><div class="second_level_menu"><a href={if eq( $ui_context, 'browse' )}{concat("content/browse/", $item.node_id)|ezurl}{else}{$item.url_alias|ezurl}{/if}{if $a_class} class="{$a_class|implode(" "}"{/if}>{$item.name|wash()}</a></div>
            {/if}

     	{if eq( $current_node_in_path_2, $item.node_id )} {* Anzeige der Subitems *}
                {def $sub_menu_items = fetch( 'content', 'list', hash( 'parent_node_id', $item.node_id,
                                                            'sort_by', $item.sort_array,
                                                            'data_map_load', false(),
                                                            'class_filter_type', 'include',
                                                            'class_filter_array', ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini'
) ) )
                $sub_menu_items_count = $sub_menu_items|count}
                {if $sub_menu_items_count}
                <ul class="submenu-list">
                    {foreach $sub_menu_items as $subkey => $subitem} {* 2. foreach-Schleife *}
                       {set $a_class = cond($current_node_in_path_3|eq($subitem.node_id), array("selected", array())
                         $li_class = cond( $subkey|eq(0), array("firstli", array() )}

                    {if $sub_menu_items_count|eq( $subkey|inc )}
                        {set $li_class = $li_class|append("lastli"}
                    {/if}
                    {if $subitem.node_id|eq( $current_node_id )}
                        {set $a_class = $a_class|append("current"}
                    {/if}
                    {if eq( $subitem.class_identifier, 'link')}
                        <li{if $li_class} class="{$li_class|implode(" "}"{/if}><div class="third_level_menu"><a {if eq( $ui_context, 'browse' )}href={concat("content/browse/", $subitem.node_id)|ezurl}{else}href={$subitem.data_map.location.content|ezurl} target="_blank"{/if}{if $a_class} class="{$a_class|implode(" "}"{/if} title="{$subitem.data_map.location.data_text|wash}">{$subitem.name|wash()}</a></div></li>
                    {else}
                        <li{if $li_class} class="{$li_class|implode(" "}"{/if}><div class="third_level_menu"><a href={if eq( $ui_context, 'browse' )}{concat("content/browse/", $subitem.node_id)|ezurl}{else}{$subitem.url_alias|ezurl}{/if}{if $a_class} class="{$a_class|implode(" "}"{/if}>{$subitem.name|wash()}</a></div></li>
                    {/if}


{* zusätzlicher Menulevel *}
	  	{if eq( $current_node_in_path_3, $subitem.node_id )}
                {def $sub3_menu_items = fetch( 'content', 'list', hash( 'parent_node_id', $subitem.node_id,
                                                            'sort_by', $item.sort_array,
                                                            'data_map_load', false(),
                                                            'class_filter_type', 'include',
                                                            'class_filter_array', ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini' ) ) )
				$sub3_menu_items_count = $sub3_menu_items|count}
                {if $sub3_menu_items_count}
                <ul class="sub3menu-list">
                    {foreach $sub3_menu_items as $subkey => $subitem}  {* 3. foreach-Schleife der zusätzlichen Ebene *}
                       {set $a_class = cond($current_node_in_path_4|eq($subitem.node_id), array("selected", array())
                         $li_class = cond( $subkey|eq(0), array("firstli", array() )}

                    {if $sub3_menu_items_count|eq( $subkey|inc )}
                        {set $li_class = $li_class|append("lastli"}
                    {/if}
                    {if $subitem.node_id|eq( $current_node_id )}
                        {set $a_class = $a_class|append("current"}
                    {/if}
                    {if eq( $subitem.class_identifier, 'link')}
                        <li{if $li_class} class="{$li_class|implode(" "}"{/if}><div class="four_level_menu"><a {if eq( $ui_context, 'browse' )}href={concat("content/browse/", $subitem.node_id)|ezurl}{else}href={$subitem.data_map.location.content|ezurl} target="_blank"{/if}{if $a_class} class="{$a_class|implode(" "}"{/if} title="{$subitem.data_map.location.data_text|wash}">{$subitem.name|wash()}</a></div></li>
                    {else}
                        <li{if $li_class} class="{$li_class|implode(" "}"{/if}><div class="four_level_menu"><a href={if eq( $ui_context, 'browse' )}{concat("content/browse/", $subitem.node_id)|ezurl}{else}{$subitem.url_alias|ezurl}{/if}{if $a_class} class="{$a_class|implode(" "}"{/if}>{$subitem.name|wash()}</a></div></li>
                    {/if}
                    {/foreach}
                </ul>
        {/if}
         {undef $sub_menu_items $sub_menu_items_count $sub3_menu_items }
        {/if}
        {/foreach}
                </ul>
                {/if}
            {/if}
       </li>
        {/foreach}
        </ul>
    {/if}
    {undef $root_node $left_menu_items $left_menu_items_count $a_class $li_class $current_node_in_path_2 $current_node_in_path_3}
{else}

    <div class="contentstructure">
    {def $current_node         = fetch( content, node, hash( node_id, $current_node_id ) )
         $chapter_container    = fetch( content, node, hash( node_id, $current_node.path_array[$left_menu_depth|inc] ) )
         $class_filter         = ezini( 'TreeMenu', 'ShowClasses', 'contentstructuremenu.ini' )
         $depth                = is_set( $current_node.path_array[$left_menu_depth|sum(2)] )|choose( $left_menu_depth|sum(3), 0 )
         $node_to_unfold       = is_set( $current_node.path_array[$left_menu_depth|sum(2)] )|choose(0 , current_node.path_array[$left_menu_depth|sum(2)] )
         $contentStructureTree = content_structure_tree( $chapter_container.node_id, $class_filter, $depth, 0, 'false', false(), $node_to_unfold )}

    {include uri='design:simplified_treemenu/show_simplified_menu.tpl' contentStructureTree=$contentStructureTree is_root_node=true() skip_self_node=true() current_node_id=$current_node_id unfold_node=$node_to_unfold chapter_level=0}

    {undef $current_node $chapter_container $class_filter $depth $node_to_unfold $contentStructureTree}
    </div>
{/if}

{undef $left_menu_root_url $left_menu_depth}

</div></div></div>
<div class="border-bl"><div class="border-br"><div class="border-bc"></div></div></div>
</div>

_______________________

http://webdevelopment.artenic.de ARTENIC - Publishing mit allen Mitteln!

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