Problem mit Navigation_Main

Gesperrt
zatec
Beiträge: 31
Registriert: Di 26. Jul 2011, 10:32
Kontaktdaten:

Problem mit Navigation_Main

Beitrag von zatec » Di 7. Feb 2012, 20:05

Hallo,

ich verwende die Navigation_Main, die beim Beispielmandanten mitgeliefert wird.

Diese blendet standardmäßig alle Unterseiten, also Seiten ab der zweiten Ebene, aus. Es wird nur die erste Ebene angezeigt. Unterseiten werden erst angezeigt, wenn man sich auf der entsprechenden übergeordneten Seite befindet.

Ich möchte aber, dass immer automatisch alle Unterseiten angezeigt werden, egal auf welcher Seite man ist.

Wie ist das möglich?

Danke im Voraus.

McHubi
Beiträge: 1209
Registriert: Do 18. Nov 2004, 23:06
Wohnort: Mettmann
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von McHubi » Di 7. Feb 2012, 21:56

Also wenn immer alle Kategoriebäume komplett aufgeblättert sein sollen, dann nutze statt der Navigation_Main doch einfach die Sitemap... :D
seamless-design.de
"Geht nicht!" wohnt in der "Will nicht!"-Strasse.

Das Handbuch zur Version 4.10: CONTENIDO für Einsteiger (4.10)

Das Handbuch zur Version 4.9: CONTENIDO für Einsteiger (4.9)

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von homtata » Mi 8. Feb 2012, 18:15

Dafür muss am Ende der Datei Contenido_NavMain_Util.class.php im Unterverzeichnis /cms/includes/Util/Modules eine Kleinigkeit verändert werden.

Hier die volle Datei in geändertert Form:

Code: Alles auswählen

<?php
/**
 * Project:
 * Contenido Content Management System
 *
 * Description:
 * Recursive loop over given category for building a frontend navigation
 *
 * Requirements:
 * @con_php_req 5.0
 *
 *
 * @version    1.0.0
 * @author     Rudi Bieller
 * @copyright  four for business AG <www.4fb.de>
 *
 * {@internal
 *   created 2009-01-15
 *
 *   $Id: Contenido_NavMain_Util.class.php 969 2009-01-19 12:32:13Z rudi.bieller $
 * }}
 *
 */

class Contenido_NavMain_Util {
    /**
     * Recursive Loop over all (sub)categories.
     * Each level will be assigned a css class navmainStandardLevel_x
     *
     * @param Contenido_Category $oCategory
     * @param Contenido_FrontendNavigation $oFrontendNavigation
     * @param Template $oTpl
     * @param string $sUrlStyle
     * @param array $aCfg
     * @param int $iLang
     * @param array $aLevelInfo Information for marking active cat per levels
     * @param array $aDepthInfo Info on level depth / where to stop. Format: array(iCurrentLoopCount, iMaxLoopCount)
     * @return void
     */
    public static function loopCats(Contenido_Category $oCategory, Contenido_FrontendNavigation $oFrontendNavigation, Template $oTpl, array $aCfg, $iLang, array $aLevelInfo, $iCurrentPageIdcat, array $aDepthInfo = array()) {
    	$aDepthInfo[0] = isset($aDepthInfo[0]) ? $aDepthInfo[0] + 1 : 1;
    	$aDepthInfo[1] = isset($aDepthInfo[1]) ? $aDepthInfo[1] : 1;
        // display current item
    	$iItemLevel = $oFrontendNavigation->getLevel($oCategory->getIdCat());
    	if (!isset($aLevelInfo[$oCategory->getIdCat()])) {
    		$aLevelInfo[$oCategory->getIdCat()] = array();
    	}
    	$oCurrentSubcategories = $oFrontendNavigation->getSubCategories($oCategory->getIdCat());
    	$aLevelInfo[$oCategory->getIdCat()]['has_children'] = $oCurrentSubcategories->count() > 0;
    	$aLevelInfo[$oCategory->getIdCat()]['first_child_item'] = -1;
    	$aLevelInfo[$oCategory->getIdCat()]['last_child_item'] = -1;
        $bMarkActive = $oCategory->getIdCat() == $iCurrentPageIdcat || $oFrontendNavigation->isInPathToRoot($oCategory->getIdCat(), $iCurrentPageIdcat);
    	if ($oCurrentSubcategories->count() > 0) {
    		$aLevelInfo[$oCategory->getIdCat()]['first_child_item'] = $oCurrentSubcategories[0]->getIdCat();
    		$aLevelInfo[$oCategory->getIdCat()]['last_child_item'] = $oCurrentSubcategories[$oCurrentSubcategories->count()-1]->getIdCat();
    	}
    	// this is just for sample client - modify to your needs!
    	if ($aCfg['url_builder']['name'] == 'front_content' || $aCfg['url_builder']['name'] == 'MR') {
    	    $aParams = array('lang' => $iLang, 'idcat' => $oCategory->getIdCat());
    	} else {
        	$aParams = array('a' => $oCategory->getIdCat(), 
        					'idcat' => $oCategory->getIdCat(), // needed to build category path
        					'lang' => $iLang, // needed to build category path
        					'level' => 1); // needed to build category path
    	}
    	// fill template with values
    	$oTpl->set('d', 'name', $oCategory->getCategoryLanguage()->getName());
    	$oTpl->set('d', 'css_level', $iItemLevel);
    	$oTpl->set('d', 'css_first_item', ($aLevelInfo[$oCategory->getIdParent()]['first_child_item'] == $oCategory->getIdCat() ? ' first' : ''));
    	$oTpl->set('d', 'css_last_item', ($aLevelInfo[$oCategory->getIdParent()]['last_child_item'] == $oCategory->getIdCat() ? ' last' : ''));
    	$oTpl->set('d', 'css_active_item', ($bMarkActive === true ? ' active' : ''));
    	try {
    	   $oTpl->set('d', 'url', Contenido_Url::getInstance()->build($aParams));
    	} catch (InvalidArgumentException $e) {
    	    $oTpl->set('d', 'url', '#');
    	}
    	$oTpl->next();
    	// continue until max level depth
    	if ($aDepthInfo[1] > $aDepthInfo[0]) {
        	// check if current item has sub-items to be displayed
    		$oSubCategories = $oFrontendNavigation->getSubCategories($oCategory->getIdCat());
        	if ($oSubCategories->count() > 0) {
        		foreach ($oSubCategories as $oSubCategory) {
        			self::loopCats($oSubCategory, $oFrontendNavigation, $oTpl, $aCfg, $iLang, $aLevelInfo, $iCurrentPageIdcat, $aDepthInfo);
        		}
        	}
    	}
    }
}
?>

sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von sarronsarron » Di 13. Mär 2012, 15:17

Hallo homtata,

ganau das brauche ich auch.

Jetz hab ich aber noch ein Problem vielleicht kannst du mir dabei helfen.

Ich mochte die Unternavigation bei Mouseover per CSS einblenden dabei muss aber die Unternavigation mit einem <ul> im <li> des Hauptpunktes stehen.
Bei Contenido ist die neue Navigation aber immer nur noch mt <li> gelöst.

Gibts da eine Möglichkeit da zu ändern?

Dank im VOraus
sarronsarrron

prepress89
Beiträge: 91
Registriert: Mi 8. Jul 2009, 09:18
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von prepress89 » Mi 28. Mär 2012, 10:07

sarronsarron hat geschrieben:Hallo homtata,

ganau das brauche ich auch.

Jetz hab ich aber noch ein Problem vielleicht kannst du mir dabei helfen.

Ich mochte die Unternavigation bei Mouseover per CSS einblenden dabei muss aber die Unternavigation mit einem <ul> im <li> des Hauptpunktes stehen.
Bei Contenido ist die neue Navigation aber immer nur noch mt <li> gelöst.

Gibts da eine Möglichkeit da zu ändern?

Dank im VOraus
sarronsarrron
Dem schließe ich mich an.. auf der onlinegeschaltenen Contenido Demoseite ist dies auch richtig programmiert. Gibts da schon ein Navigationsmodul, dass dies richtig codet?

Aktuelle "Navigation_Main":

Code: Alles auswählen

<ul>
  <li class="nav1"></li>
  <li class="nav2"></li>
  <li class="nav1"></li>
  <li class="nav2"></li>
</ul>
Und so wäre es richtig:

Code: Alles auswählen

<ul>
  <li class="nav1"></li>
  <ul>
    <li class="nav2"></li>
  </ul>
  <li class="nav1"></li>
  <ul>
    <li class="nav2"></li>
  </ul>
</ul>
Habe schon versucht die HTML-Templates anzupassen, ist hiermit aber wohl nicht getan.

sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von sarronsarron » Mi 28. Mär 2012, 10:22

Hallo prepress89,

da must du das Modul Navigation_Main aus der Version 4.8.10 verwenden dann funktioniert es wunderbar.
Falls du es nicht hast poste deine Emailadresse und ich schicke es dir.

gruß sarronsarron

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Problem mit Navigation_Main

Beitrag von Spider IT » Mi 28. Mär 2012, 12:26

prepress89 hat geschrieben:Und so wäre es richtig:

Code: Alles auswählen

<ul>
  <li class="nav1"></li>
  <ul>
    <li class="nav2"></li>
  </ul>
  <li class="nav1"></li>
  <ul>
    <li class="nav2"></li>
  </ul>
</ul>
Stimmt nicht, ein ul darf nicht direkt in ein ul liegen.
Richtig wäre deshalb:

Code: Alles auswählen

<ul>
  <li class="nav1">
    <ul>
      <li class="nav2"></li>
    </ul>
  </li>
  <li class="nav1">
    <ul>
      <li class="nav2"></li>
    </ul>
  </li>
</ul>
Gruß
René

sarronsarron
Beiträge: 251
Registriert: Do 10. Mär 2011, 17:02
Wohnort: Erlangen
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von sarronsarron » Mi 28. Mär 2012, 12:44

Da hast du natürlich Recht. Das Modul aus 4.8.10 macht es auch so

gruß sarronsarron

prepress89
Beiträge: 91
Registriert: Mi 8. Jul 2009, 09:18
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von prepress89 » Do 29. Mär 2012, 14:38

Spider IT hat geschrieben:
prepress89 hat geschrieben:Und so wäre es richtig:

Code: Alles auswählen

<ul>
  <li class="nav1"></li>
  <ul>
    <li class="nav2"></li>
  </ul>
  <li class="nav1"></li>
  <ul>
    <li class="nav2"></li>
  </ul>
</ul>
Stimmt nicht, ein ul darf nicht direkt in ein ul liegen.
Richtig wäre deshalb:

Code: Alles auswählen

<ul>
  <li class="nav1">
    <ul>
      <li class="nav2"></li>
    </ul>
  </li>
  <li class="nav1">
    <ul>
      <li class="nav2"></li>
    </ul>
  </li>
</ul>
Gruß
René
Sorry, mein Fehler. Du hast natürlich recht. Habe ich zu schnell runtergeschrieben.. :)

Ich benutze die 4.8.15 und dort scheint es noch nicht mal zu funktionieren!? Ich habe es gerade mit der NavigationUniversell probiert.. da scheint dies zu gehen, aber die MainNavigation ist von der Formatierung in CSS irgendwie komfortabler..

homtata
Beiträge: 1142
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: Problem mit Navigation_Main

Beitrag von homtata » Do 29. Mär 2012, 17:37

Also eigentlich braucht man dieses zusätzliche ul-gedöns doch nur bei der horizontalen navigation... ansonsten geht die zusätzliche einfassung mit ul in den unterebenen doch meist nur um die frage, wie man z.b. den ganzen block des untermenüs besser vom hauptmenü absetzen kann. dafür ist das zusätzliche ul aber nicht nötig.
ich helfe mir so, indem ich das modultemplate für die standardnavigation wie folgt anpasse (demo, stimmt vielleicht nicht 100%):

Code: Alles auswählen

<ul>
    <!-- BEGIN:BLOCK -->
    <li class="navmainStandardLevel_{css_level} {css_first_item}{css_last_item} {css_active_item}">
        <a href="{url}" title="{name}" class="{css_first_item}{css_last_item} {css_active_item}" target="{target}">{name}</a>
    </li>
    <!-- END:BLOCK -->
</ul>
sprich: ich dopple die css-klasse des a-tags in den umgebenden li-tag. damit weiß ich immer, a) in welchem level der navigation ich mich befinde, kann also jedes element identisch einrücken, b) welches das erste element ist, kann es also von oben gesehen absetzen, c) welches das letzte element ist, kann also nach unten platz schaffen....
hilft dieses vorgehen?

lg

Gesperrt