Navigation Main 4.8.10

Gesperrt
Rodney McKay
Beiträge: 20
Registriert: Di 5. Feb 2008, 18:32
Kontaktdaten:

Navigation Main 4.8.10

Beitrag von Rodney McKay » Mo 23. Feb 2009, 11:18

Olla Leutz!

Leider werden bei einem Projekt von mir mit Contenido 4.8.10 in der navigation_main keine Subkategorien ausgegeben. So wie ich den Quellcode verstehe checkt dieser aber, ob Subkategorien vorhanden sind. Was ich damit machen will (was eigentlich ja auch Standard ist), ist folgendes:

Menüpunkt Ebene 1
Menüpunkt Ebene 2
Menüpunkt Ebene 3

Ausgegeben wird aber nur Ebene 1.

Ich habe bereits lange im Forum gesucht, auch einen ähnlichen Thread gefunden der mir aber nicht hilft, weil der Code anders ist.
http://forum.contenido.org/viewtopic.ph ... .8#p127445

Hier mein Code der navigation_main (orig. 4.8.10)

Code: Alles auswählen

<?php
/**
* $RCSfile$
*
* Description: Navigation, left side.
*
* @version 1.0.0
* @author Rudi Bieller
* @copyright four for business AG <www.4fb.de>
*
* {@internal
* created 2008-04-07
* }}
*
* $Id$
*/

// include Contenido_FrontendNavigation class
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation.class.php');
cInclude('classes', 'Contenido_FrontendNavigation/Contenido_FrontendNavigation_Breadcrumb.class.php');

// get start idcat
$iIdcatStart = getEffectiveSetting('navigation', 'idcat-home', 1);

// instantiate 2nd + 3rd template object, reset all
$tpl2 = new Template();
$tpl3 = new Template();

if (!isset($tpl) || !is_object($tpl)) {
    $tpl = new Template();
}

$tpl->reset();
$tpl2->reset();
$tpl3->reset();

// build navigation
try {
	$oFeNav = new Contenido_FrontendNavigation($db, $cfg, $client, $lang, $cfgClient);
	$oBreadcrumb = new Contenido_FrontendNavigation_Breadcrumb($db, $cfg, $client, $lang, $cfgClient);
	$aBreadcrumb = $oBreadcrumb->getAsArray($idcat, 1); // this nav starts at level 1
	$oFeNav->setAuth($auth); // to make sure user sees what he's allowed to see
	$oContenidoCategories = $oFeNav->getSubCategories($iIdcatStart, true);
    if ($oContenidoCategories->count() > 0) {
        foreach ($oContenidoCategories as $oContenidoCategory) {
		    $sSubcats = '';
		    $tpl2->reset();
		    $bHasActiveSubCat = false;
		    // check if we need to load subcategories
            $oSubCatsLevel2 = $oFeNav->getSubCategories($oContenidoCategory->getIdCat(), true);
            $aSubCatsLevel2 = $oFeNav->getSubCategories($oContenidoCategory->getIdCat(), false);
            $bShowSubcatLevel2 = (intval($idcat) == $oContenidoCategory->getIdCat() || in_array(intval($idcat), $aSubCatsLevel2) 
                                || (isset($aBreadcrumb[2]) && intval($idcat) == $aBreadcrumb[2] && in_array($aBreadcrumb[1], $aSubCatsLevel2)))
                                ? true : false;
            if ($bShowSubcatLevel2 === true && $oSubCatsLevel2->count() > 0) {
                foreach ($oFeNav->getSubCategories($oContenidoCategory->getIdCat(), true) as $oSubCategory) {
                    $bHasActiveSubSubCat = false;
                    // check if we need to load subsubcategories
		            $oSubCatsLevel3 = $oFeNav->getSubCategories($oSubCategory->getIdCat(), true);
		            $aSubCatsLevel3 = $oFeNav->getSubCategories($oSubCategory->getIdCat(), false);
		            $bShowSubcatLevel3 = (intval($idcat) == $oSubCategory->getIdCat() || 
		                                    in_array(intval($idcat), $aSubCatsLevel3))
		                                    ? true : false;
                    $sSubcats2 = '';
                    if ($bShowSubcatLevel3 === true && $oSubCatsLevel3->count() > 0) {
                        foreach ($oSubCatsLevel3 as $oSubSubCategories) {
                            if ($bHasActiveSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
		                        $bHasActiveSubCat = true;
		                    }
                            if ($bHasActiveSubSubCat === false && intval($idcat) == $oSubSubCategories->getIdCat()) {
		                        $bHasActiveSubSubCat = true;
		                    }
                            toTpl($tpl3, $oSubSubCategories, (intval($idcat) == $oSubSubCategories->getIdCat() ? ' class="active"' : ''), '');
                        }
                        $sSubcats2 = $tpl3->generate('templates/navigation_main_item.html', true, false);
		                $tpl3->reset();
		                $tpl3->set('s', 'items', $sSubcats2);
		                $tpl3->set('s', 'css-class', ' class="subSubNavigation"');
		                $sSubcats2 = $tpl3->generate('templates/navigation_main_container.html', true, false);
                    }
                    if ($bHasActiveSubCat === false && intval($idcat) == $oSubCategory->getIdCat()) {
                        $bHasActiveSubCat = true;
                    }
                    toTpl($tpl2, $oSubCategory, 
                            (intval($idcat) == $oSubCategory->getIdCat() || $bHasActiveSubSubCat === true ? ' class="active"' : ''), 
                            $sSubcats2);
                }
                $sSubcats = $tpl2->generate('templates/navigation_main_item.html', true, false);
                $tpl2->reset();
                $tpl2->set('s', 'items', $sSubcats);
                $tpl2->set('s', 'css-class', ' class="subNavigation"');
                $sSubcats = $tpl2->generate('templates/navigation_main_container.html', true, false);
            }
            toTpl($tpl, $oContenidoCategory, ($bHasActiveSubCat === true || intval($idcat) == $oContenidoCategory->getIdCat() ? ' class="active"' : ''), $sSubcats);
		}
		$sCats = $tpl->generate('templates/navigation_main_item.html', true, false);
		$tpl->reset();
		$tpl->set('s', 'css-class', '');
		$tpl->set('s', 'items', $sCats);
		$tpl->generate('templates/navigation_main_container.html');
    }
} catch (Exception $e) {
	echo 'Some error occured: ' . $e->getMessage() . ': ' . $e->getFile() . ' at line '.$e->getLine() . ' ('.$e->getTraceAsString().')';
}

/**
 * Helper to push values to Template object
 * @param Template $oTpl
 * @param Contenido_Category $oCat
 * @param string $sActiveCssClass must bei either empty string or " class="classname"
 * @param string $sSubcats String with subcategories of current category
 */
function toTpl(&$oTpl, Contenido_Category $oCat, $sActiveCssClass, $sSubcats) {
	$oTpl->set('d', 'css-class', $sActiveCssClass);
	$oTpl->set('d', 'url', 'front_content.php?idcat='.$oCat->getIdCat());
	$oTpl->set('d', 'title', $oCat->getCategoryLanguage()->getName());
	$oTpl->set('d', 'label', $oCat->getCategoryLanguage()->getName());
	$oTpl->set('d', 'subcategories', $sSubcats); // followup level
	$oTpl->next();
}
?>
Besten Dank schon mal!!!
Wer morgens zerknittert aufsteht, hat den ganzen Tag über Entfaltungsmöglichkeiten...

emergence
Beiträge: 10641
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Navigation Main 4.8.10

Beitrag von emergence » Sa 7. Mär 2009, 11:48

also wenn ich mir den modul code so ansehe, denke ich mir, ist auch ne variante es zu machen...
gott sei dank muss man es nicht so machen...

ich würde ein anderes navigationsmodul aus dem forum nehmen...

oder hast du schon ne lösung für dein problem ?
*** make your own tools (wishlist :: thx)

Gesperrt