Seite 1 von 1

Kategorie ohne Startartikel ausblenden?

Verfasst: Di 21. Apr 2009, 07:53
von notaus
Hallo zusammen,

ich habe eine Drop-Down Navigation auf der Basis der "navigation_main" geschrieben. Habe dort aber das Problem, dass auch Kategorien ohne Startartikel bzw mit offline-Startartikeln ausgegeben werden. Ich habe keinen Schimmer wo ich das abfangen / prüfen kann. Weiss wer Rat?

Viele Grüße
CHristian

Code: Alles auswählen

<?php


// 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();


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

$tpl->reset();
$tpl2->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);
   $navpos=0;
    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 ($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;


                    if ($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;
                            }
                        }
}
                                                


                    $sSubcats2 = '';
                    
                    if ($bHasActiveSubCat === false && intval($idcat) == $oSubCategory->getIdCat()) {
                        $bHasActiveSubCat = true;
                    }
                    $sPos="";
                    toTpl($tpl2, $oSubCategory, 
                            (intval($idcat) == $oSubCategory->getIdCat() || $bHasActiveSubSubCat === true ? ' class="innenh"' : 'class="innen"'),$sSubcats2,$sPos);
                }
                                $sSubcats = $tpl2->generate('templates/navigation_sub_item.html', true, false);
                $tpl2->reset();
                $tpl2->set('s', 'items', $sSubcats);
                         
            }
            $navpos++;
            $sPos=' class="aussen'.$navpos.'"';
            toTpl($tpl, $oContenidoCategory, ($bHasActiveSubCat === true || intval($idcat) == $oContenidoCategory->getIdCat() ? ' class="menutagh"' : 'class="menutag"'), $sSubcats, $sPos);
        }
        $sCats = $tpl->generate('templates/navigation_main_item.html', true, false);
        $tpl->reset();
        $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,$sPos) {
    $oTpl->set('d', 'css-class', $sActiveCssClass);
    $oTpl->set('d', 'css-pos', $sPos);
    $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();
}
?>

Re: Kategorie ohne Startartikel ausblenden?

Verfasst: Di 21. Apr 2009, 08:21
von notaus
ach herrje,
könnte das ein Admin nach "Module 4.8.x" verschieben? Danke!

Re: Kategorie ohne Startartikel ausblenden?

Verfasst: Di 21. Apr 2009, 09:36
von Dodger77
notaus hat geschrieben:könnte das ein Admin nach "Module 4.8.x" verschieben? Danke!
Gerne. Erledigt.