Seite 1 von 1

Listenelemente der Hauptnavigation mit IDs versehen

Verfasst: Do 30. Apr 2009, 14:54
von lomion
hallo liebe contenidogemeinde,

ich benötige für einen webauftritt die möglichkeit jeden listenpunkt der 1.ebene der navigation einzelnd mit css-anweisungen zu versehen.
auf der suche nach schon vorhandenen themen bin ich auf folgenden thread gestoßen: viewtopic.php?f=60&t=22999

leider werden die änderungen irgendwie nicht angenommen.
ich habe einige andere veränderungen getestet, aber anscheinend verhindert irgendein chache das die änderungen in kraft treten.
deshalb habe ich den browser- und den contenidochache gelöscht, aber ohne erfolg.

evt. könnt ihr mir ja weiterhelfen woran es scheitert.
mit freundlichen grüßen
Lomion

Re: Listenelemente der Hauptnavigation mit IDs versehen

Verfasst: Fr 1. Mai 2009, 11:37
von Oldperl
Hallo Lomion,

versuche deine gewünschten Änderunge doch zuerst mal in einer ganz einfachen HTML-Datei, am Besten ohne externe CSS zu machen. Wenn das geht, dann setze das Ganze schrittweise nach Contenido um.
Wenn du dann immer noch nicht weiter kommst, dann poste uns doch bitte hier auch was du wo geändert bzw. ergänzt hast (Quelltext wäre schon), so daß wir dein Vorgehen besser nachvollziehen können. Mit den von dir gemachten Angaben kann man leider nicht wirklich helfen.

Gruß aus Franken

Ortwin

Re: Listenelemente der Hauptnavigation mit IDs versehen

Verfasst: So 3. Mai 2009, 21:49
von lomion
hallo oldperl,
das es klappt mit css etc ist mir bewusst und für mich auch ganz einfach umzusetzen. die schwierigkeit liegt für mich gerade in der konfiguration der module von contenido. und zwar handelt es sich um das navigation_main-modul (php) und das entsprechende modul-template, naviagtion_main_item (html).
die zwei befinden sich im weiteren verlauf des posts.
bisher habe ich nur, wie in dem thread (siehe link oben) angedacht, eine variable hinzugefügt die sich bei jedem durchgang inkrementiert. diese variable wird dann dem html-template zugewiesen und dort müsste dann für jedes listenelement ein entsprechender eintrag auftauche wie z.b. ...navid="1"...
das tut es aber nicht deshalb bin ich am grübeln ob es evt an irgendeinem cache liegt oder ob ich etwas falsch gemacht habe beim einbinden der variablen in die template-übergabe.

navigation_main

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) {
            $i = 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"' : ''), '', 0);
                            }
                            $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, 0);
                    }
                    $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);
                }
                $i++;
                toTpl($tpl, $oContenidoCategory, ($bHasActiveSubCat === true || intval($idcat) == $oContenidoCategory->getIdCat() ? ' class="active"' : ''), $sSubcats, $i);
            }
            $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, $i) {
        $oTpl->set('d', 'css-class', $sActiveCssClass);
        if ($i!=0)
            $oTpl->set('d', 'css-id', ' id="nav_'.$i.'"');
        else
            $oTpl->set('d', 'css-id', '');
        $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();
    }
    ?>
navigation_main_item

Code: Alles auswählen

    <!-- BEGIN:BLOCK -->
                        <li{css-class}><a{css-id} href="{url}" title="{title}">{label}</a>{subcategories}</li>
    <!-- END:BLOCK -->
gruß lomion