Beispiele zur Funktion printNavigation()

Allgemeine Diskussionen zu ConPresso 4. Handhabung, Möglichkeiten, Verständnisfragen.
Achtung: Bitte benutzt wenn möglich die themenspezifischen Foren!
Gast

Beitrag von Gast »

Die Anweisung steht hier:

Code: Alles auswählen

                               <div id="navigation3_lila">

                               <?php
                               include_once(CPO_BASEDIR.'_include/printnavigation.inc.php');
                               $aE = getActiveElements(getNavigation(), $cpoRubric['id']);
                               foreach ($aE as $k=>$v) {
                               if ($k=='X') continue; 
                               }
                               printNavigation('', 0, 99, 93, true);
                               ?>

                               </div>
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ich weiß auch gar nicht mehr, ab welcher ConPresso-Version das "active-Kennzeichnen" überhaupt eingeführt wurde... :wink:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Gast

Beitrag von Gast »

In Beispiel zwei gab 's sie wohl noch nicht.

Hilfst Du mir? Was kann ich jetzt tun?
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Da Du zweieinhalb Versionen hinterherhinkst, kann es sein, daß dies für das Fehlen der active-Angabe sorgt. Aktuell ist 4.0.3a

Ich versuche mal rauszukriegen, in welcher Version das eingeführt wurde...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Neee... war auch schon in 4.0.1 mit drin... :gruebel:
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Gast

Beitrag von Gast »

Hier ist meine Printnavigation.inc.php. Die class='active'-Anweisung ist dabei. Siehst Du mit Deinen professionellen Augen 'was, das ich nicht sehe?

Code: Alles auswählen

<?php /* _\|/_              vim: set et ts=4 sw=4 sts=4 nowrap fdm=marker:
*/
$navi = getNavigation();

// $navi = getNavigation();
// $activeRubric = $cpoRubric['id'];
function getActiveElements($navi, $activeRubric)
{
    $naviElements = array();
    $actElements  = array();
    $currLevels   = array();
    foreach ($navi as $k=>$v) {
        $currLevels[$v['level']] = $v['id'];

        $naviElements[$v['id']] = $v; 

        if ($v['rubric']['id']==$activeRubric) {
            $actElements = array_splice($currLevels, 0, $v['level']);
        }
    }
    // add an element at position 0, 
    // so that $actElements[Y] make Y equal the level
    array_unshift($actElements, 'X'); 

    return $actElements;
}

// $navi = getNavigation();
// $activeRubric = $cpoRubric['id'];
// $levels: how many levels to display
// $parent: which element to start with
// $activeOnly: do not print inactive sublevels
// function printNavigation($navi = '', $activeRubric = 0, $levels = 99, $parent = 0, $activeOnly = false)
function printNavigation($navi = '', $activeRubric = 0, $levels = 99, $parent = 0, $activeOnly = true)
{
    if ($navi=='') $navi = getNavigation();
    if (empty($navi)) return false;

    if ($activeRubric==0) $activeRubric = $GLOBALS['cpoRubric']['id'];

    $actLevels = getActiveElements($navi, $activeRubric);

    $level = 0;
    if ($parent==0) $level = 1; // start with first level

    $ulstart = '<ul>';
    $ulend  = '';
    foreach ($navi as $k=>$v) {
        if ($v['level']<$level) $level = 0;            // printed all childs of active parent => clear $level
        if ($v['id']==$parent) $level = $v['level']+1; // found active parent => save $level
        if ($v['level']!=$level) continue;             // not the active level => continue
        if ($v['rubric']['seclevel']==SECLEVEL_CLOSED) {
            if (empty($_SESSION['SID_user']['id'])) continue;
            $db = new DB;
            $db->query("SELECT COUNT(*) FROM ".CPO_RUBRIC_PERMISSION." "
                      ."WHERE rubric_id='".(int)$v['rubric']['id']."' "
                      ."AND usergroups_id='".(int)$_SESSION['SID_user']['usergroups_id']."'");
            $db->next_record();

            if ($db->v('COUNT(*)')<=0 && $_SESSION['SID_user']['admin']!=ROLE_ADMIN) continue;
        }

        echo $ulstart;
        $ulstart = '';
        $ulend = '</ul>';

        // build link
        $link = $v['navigation']['externalURL'];
        if (isset($v['rubric']['directory']))
            $link = BASE_URL.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);

[b]        // mark active list elements
        if ($actLevels[$level]==$v['id'])
           echo '<li class="active">';[/b]
           // echo $class;
           // echo '<li class='.$class.'>';
           // echo '<li>';

        else
           echo '<li>';

        // print caption
        // if (!empty($link)) echo '<a href="'.$link.'" '.$strclass.'>'.htmlspecialchars($v['caption']).'</a>';
        if (!empty($link)) echo '<a href="'.$link.'">'.htmlspecialchars($v['caption']).'</a>';
        else               echo htmlspecialchars($v['caption']);

        // RECURSION!
        if (
            (!$activeOnly || $actLevels[$level]==$v['id']) && // print only active sublevels
            $levels-1>0 // maximum number of levels to print
        ) printNavigation($navi, $activeRubric, $levels-1, $v['id'], $activeOnly);

        echo '</li>';
    }
    echo $ulend;
}
Gast

Beitrag von Gast »

class="active" war auskommentiert. Jetzt ist die klasse vorhanden, doch es geht noch immer nicht.
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Ist doch blau... bzw. lila...
Dateianhänge
blau.gif
blau.gif (5.48 KiB) 22026 mal betrachtet
lila.gif
lila.gif (4.81 KiB) 22023 mal betrachtet
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Claudia

Beitrag von Claudia »

vielen dank und gute nacht.

claudia :)
joki

krümelpfad

Beitrag von joki »

Hallo,
eine weitere frage zur navigation.
die anwendung und darstellung der navigation mit printnavigation() klappt ganz gut.
zusätzlich dazu soll jetzt aber so eine art krümelpfad mit auf jeder seite oben erscheinen, so dass bei einer ziemlichen verschachtelung (3./4. ebene) ich immer sofort wieder auf die vorhergehende seite ohne returntaste oder eben auf davorliegende zwischenseiten komme bzw. ich sehe, wo ich genau bin. Ich habe versucht, mir die id und namen der seiten/rubriken ausgeben zu lassen, klappt aber nur für die aktuelle, nicht die seite/n davor. Vielleicht gibt es ja schon irgendwo einen ansatz zum probieren?
besten dank im voraus
johannes
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Die Funktion getActiveElements() in der _inlude/printnavigation.php wird dir helfen die Elternelemente zu finden. Außerdem wird diese Funktion schon von der Funkton printnavigation() aufgerufen:

Code: Alles auswählen

$actLevels = getActiveElements($navi, $activeRubric);
Es ist sinnvoll die Variabel $activeOnly etwas zu erweitern, dass sie bei einer 1 so funktioniert wie wenn sie vorher "true" war und bei einer 2 nur den aktuellen Pfad ausgibt.

Dann musst du einstellen, dass nur ein Link ausgegeben wird, wenn sonst die li's ein class="active" haben. Außerdem ist es sinnvoll, wenn für den Fall $activeOnly==2 keine ul's oder li's ausgegeben werden. Statt dessen ist ein Trenntext (wie z.B. :: oder >) zwischen den Links sinnvoll.

Das sollte als Anregung reichen, damit du dir so etwas programmieren kannst.

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
joki

krümelpfad

Beitrag von joki »

erstmal danke - komme jetzt soweit, dass die ausgabe level, rubrik klappt, komme aber nicht weiter beim auslesen des zugehörenden namens und links :-(
ist es dabei auch möglich, in diesem pfad auch den artikelnamen mit als link auszugeben?
mit besten dank
johannes
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Re: krümelpfad

Beitrag von Matthias V »

joki hat geschrieben:ist es dabei auch möglich, in diesem pfad auch den artikelnamen mit als link auszugeben?
Den Artikelnamen als Link auszugeben macht keinen Sinn, da man sich ja dann schon an dieser Stelle befindet und keinen Link benötigt.
Den Artikelnamen müsste man aus der Datenbank auslesen.
Ich benutze das folgende Datenbankabfrage, um einige Daten des Artikels für meta-Tags zu benutzen. Dabei kannst du den Artikeltitel über echo $meta['titel']; ausgeben.
Hier die Datenbankabfrage dazu:

Code: Alles auswählen

if ($_GET['nr']) {

$query = "SELECT titel, keywords, commentary, pub_datum FROM ".CPO_NEWS." WHERE nr=".$_GET['nr'];

DEBUG(1, $query, __FILE__, __LINE__);
$db = new DB;
$db->query($query);
$db->next_record();
$meta = array(
	'titel'=>$db->v('titel'),
	'keywords'=>$db->v('keywords'),
	'commentary'=>$db->v('commentary'),
	'pub_datum'=>$db->v('pub_datum'),
);

}
Gruß Matthias V
Zuletzt geändert von Matthias V am 13.09.2006 11:19, insgesamt 2-mal geändert.
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Hallo Johannes,

einen "Krümelpfad" (oder Breadcrumb, oder Clickstream) findest du hier: http://community.conpresso.de/viewtopic.php?p=16316
Es wird auch der Artikel-Titel als letzte Navigationsebene benutzt.

Gruß Matthias V
Zuletzt geändert von Matthias V am 02.08.2006 11:58, insgesamt 1-mal geändert.
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
alterego
ConPresso-User
Beiträge: 36
Registriert: 10.05.2006 09:38

Re: Beispiel 6: Ein Kessel buntes + Hover-Effekt

Beitrag von alterego »

balu hat geschrieben: Bild
Wenn die aktive Ebene farblich verändert erscheinen soll, wie lasst sich das mit CSS realisieren?
Antworten