Sortierung Standard Hauptnavigation

Gesperrt
franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Sortierung Standard Hauptnavigation

Beitrag von franky »

Habe in der Suche nichts gefunden, obwohl es eigentlich so einen Thread schon geben müsste. Meine Frage:
Wie kann ich die Hauptnavigation (Standardmodul in Contenido) sortieren? In der Kategorienübersicht klappt das ganze, nur in der Frontend-Nav. übernimmt er die Sortierung nicht. In dem DB-Model, kann ich irgendwie auch kein Sortierungsfeld ausmachen. Vieleicht liegt es an meiner "Blindheit" oder dass ich schon lange nichts mehr mit Contenido umgesetzt habe ;).. Vielleicht mag mir trotzdem wer schnell helfen..
nomore
Beiträge: 130
Registriert: Sa 15. Mai 2004, 19:38
Kontaktdaten:

Beitrag von nomore »

Das Sortieren der Katagorien wird unter Content/Kategorie vorgenommen. Dort kannste über das entsprechende Symbol die Kategorien sortieren.

Bild
Irgendwann läuft alles, fragt sich nur wann,
und wohin! :-)
ConTemplates.de
franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky »

Jaja, das ist mir schon klar. Hab ja geschrieben, im Backend läuft es nur im Frontend wird es in der zweiten Ebene nicht richtig sortiert ausgegeben :(. Hat wer einen Lösungsvorschlag? Den Code habe ich mal hinten dran gehangen

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname  :      Hauptnavigation
* Author(s)   :     Jan Lengowski, Andreas Lindner, 4fb
* Copyright   :     Contenido - four for business, Andreas Lindner
* Created     :     12.08.2005
************************************************/

#System properties in use:
#Type: navigation, Name: idcat_homepage
#Contains idcat of tree to be displayed in main navigation

$reorder = true;

#Includes
cInclude("frontend", "includes/functions.navigation.php");

#If no tree is selected, use client setting
$start_cat = "CMS_VALUE[0]";
if ($start_cat=='') {
    $cApiClient = new cApiClient($client);
	$start_cat = $cApiClient->getProperty('navigation','idcat_homepage');
}
else {
	$sql = "SELECT
            C.name
        FROM
            ".$cfg["tab"]["cat_tree"]." AS A,
            ".$cfg["tab"]["cat"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C
        WHERE
            A.idcat     = '$start_cat' AND
            B.idclient  = '$client' AND
            C.idlang    = '$lang'   AND
            C.visible   = '1'";
	$db->query($sql);
	$db->next_record();
	$start_cat_name = $db->f("name");
}

if ( !is_object($db2) ) {
    $db2 = new DB_Contenido;
}

/**
 * Check if a category is child
 * of another category
 *
 * @return boolean true/false
 * @author Jan Lengowski <Jan.Lengowski@4fb.de>
 * @copyright four for business AG 2003
 */
function catIsChildOf($id, $idparent) {

    global $cfg, $client, $lang;

    $db = new DB_Contenido;

    $parent = $id;

    while ( $parent != 0 ) {

        $sql = "SELECT
                    a.parentid
                FROM
                    ".$cfg["tab"]["cat"]." AS a,
                    ".$cfg["tab"]["cat_lang"]." AS b
                WHERE
                    a.idclient  = '".$client."' AND
                    b.idlang    = '".$lang."' AND
                    a.idcat     = b.idcat AND
                    a.idcat   = '".$parent."'";

        $db->query($sql);
        $db->next_record();

        $parent = $db->f("parentid");

        if ($parent == $idparent) {
            return true;
        }

    }

    return false;

}

if ( catIsChildOf($idcat, $start_cat) ) {
    $sel_idcat = $idcat;
} else {
    $sel_idcat = $start_cat;
}

/**
 * Array storing alle the
 * navigation data
 */
$navitems = array();

/**
 * Recursive function for creating
 * the navigation array
 * @param Int $idcat Category id
 */
function nav($idcat) {

        global $navitems, $client, $lang, $cfg, $start_cat;

        $db  = new DB_Contenido;
        $db2 = new DB_Contenido;

        $sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";

        $db->query($sql);
        $db->next_record();

        $parentid = $db->f("parentid");

        if ( $parentid == 0 ) {

                $navitems = array();
              
                $sql = "SELECT
                            A.idcat,
                            C.name,
                            C.public,
                            C.idcatlang
                        FROM
                            ".$cfg["tab"]["cat_tree"]." AS A,
                            ".$cfg["tab"]["cat"]." AS B,
                            ".$cfg["tab"]["cat_lang"]." AS C
                        WHERE
                            A.idcat     = B.idcat   AND
                            B.idcat     = C.idcat   AND
                            B.idclient  = '$client' AND
                            C.idlang    = '$lang'   AND
                            C.visible   = '1'       AND
                            B.parentid  = '".$start_cat."'
                        ORDER
                            BY A.idtree";

                      $db->query($sql);

                      while ($db->next_record()) {

                            /* Check for external redirects... */
                            $sql = "SELECT
                                        a.external_redirect AS ext,
                                        a.idartlang AS idartlang
                                    FROM
                                        ".$cfg["tab"]["art_lang"]." AS a,
                                        ".$cfg["tab"]["cat_art"]." AS b,
                                        ".$cfg["tab"]["cat"]." AS c
                                    WHERE
                                        b.idcat     = '".$db->f("idcat")."' AND
                                        c.idclient  = '".$client."' AND
                                        c.idcat     = b.idcat AND
                                        a.idart     = b.idart AND
                                        a.idlang    = '".$lang."'";

                            $db2->query($sql);
                            $flag = false;
							while ($db2->next_record()&&!$flag) {
	                            if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
	                            {
									$flag = true;
	                                $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
	
	                                $navitems[$db->f("idcat")] = array("idcat"      => $db->f("idcat"),
	                                                                    "name"      => $db->f("name"),
	                                                                    "target"    => $target,
						                        	                    "public" => $db->f("public"),
		            					            	                "idcatlang" => $db->f("idcatlang"));
	                            }
							}
                      }
                                
           return true;
        }

        $sql = "SELECT
                    A.idcat,
                    C.name,
		            C.public,
       			    C.idcatlang
                FROM
                    ".$cfg["tab"]["cat_tree"]." AS A,
                    ".$cfg["tab"]["cat"]." AS B,
                    ".$cfg["tab"]["cat_lang"]." AS C
                WHERE
                    A.idcat     = B.idcat   AND
                    B.idcat     = C.idcat   AND
                    B.idclient  = '$client' AND
                    C.idlang    = '$lang'   AND
                    C.visible   = '1'       AND
                    B.parentid  = '$parentid'
                ORDER BY
                    A.idtree";

        $db->query($sql);

        while ($db->next_record()) {

                /* Check for external redirects... */
                $sql = "SELECT
                            a.external_redirect AS ext,
                            a.idartlang AS idartlang
                        FROM
                            ".$cfg["tab"]["art_lang"]." AS a,
                            ".$cfg["tab"]["cat_art"]." AS b,
                            ".$cfg["tab"]["cat"]." AS c
                        WHERE
                            b.idcat     = '".$db->f("idcat")."' AND
                            c.idclient  = '".$client."' AND
                            c.idcat     = b.idcat AND
                            a.idart     = b.idart AND
                            a.idlang    = '".$lang."'";

                $db2->query($sql);
				$flag = false;
                while ($db2->next_record() && !$flag) {
	                if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
	                {
						$flag = true;
	                    $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
	                    
	                    $tmp_nav[$db->f("idcat")] = array("idcat"   => $db->f("idcat"),
	                                                      "name"    => $db->f("name"),
	   	                        	                      "public" => $db->f("public"),
		            					            	  "idcatlang" => $db->f("idcatlang"),
	                                                      "target"  => $target);
	                }
				}
        }

        $tmp_nav[$idcat]["sub"] = $navitems;
        $navitems = $tmp_nav;

        /* Function call */
        nav($parentid);

}  // end function

$sql = "SELECT
            A.idcat,
            C.name,
		    C.public,
       		C.idcatlang
        FROM
            ".$cfg["tab"]["cat_tree"]." AS A,
            ".$cfg["tab"]["cat"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C
        WHERE
            A.idcat     = B.idcat   AND
            B.idcat     = C.idcat   AND
            B.idclient  = '$client' AND
            C.idlang    = '$lang'   AND
            C.visible   = '1'       AND
            B.parentid  = '$sel_idcat'
        ORDER BY
            A.idtree";

$db->query($sql);

while ( $db->next_record() ) {

        /* Check for external redirects... */
        $sql = "SELECT
                    a.external_redirect AS ext,
                    a.idartlang AS idartlang
                FROM
                    ".$cfg["tab"]["art_lang"]." AS a,
                    ".$cfg["tab"]["cat_art"]." AS b,
                    ".$cfg["tab"]["cat"]." AS c
                WHERE
                    b.idcat     = '".$db->f("idcat")."' AND
                    c.idclient  = '".$client."' AND
                    c.idcat     = b.idcat AND
                    a.idart     = b.idart AND
                    a.idlang    = '".$lang."'";

        $db2->query($sql);
        #$db2->next_record();
		$flag = false;
		while ($db2->next_record()&&!$flag) {
	        if (isStartArticle($db2->f("idartlang"), $db->f("idcat"), $lang))
	        {
				$flag = true;
	            $target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
	    
	            $navitems[$db->f("idcat")] = array("idcat"  => $db->f("idcat"),
	                                               "name"   => $db->f("name"),
	  	                        	               "public" => $db->f("public"),
		            					           "idcatlang" => $db->f("idcatlang"),
	                                               "target" => $target);
	        }
		}
}

/* Create Navigation Array */
if(($sel_idcat=='')||($sel_idcat=='0')){
    $cApiClient = new cApiClient($client);
    $sel_idcat = $cApiClient->getProperty('navigation', 'idcat_homepage');
}

nav($sel_idcat);

/* Start Output buffer */
ob_start();

if($reorder == true)
	rsort($navitems);

foreach ($navitems as $key => $data) {
    /* 1. Navigation level */
	if (checkCatPermission($data['idcatlang'],$data['public'])) {
	$html .= '<ul>';
	    $html .=  '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'">'.$data['name'].'</a></li>';
    	/* 2. Navigation level */
	    if (is_array($data['sub'])) {
	    	$html .=  '<ul>';
	        foreach ($data['sub'] as $key => $data) {
				if (checkCatPermission($data['idcatlang'],$data['public'])) {
		            $html .=  '<li><a href="'.$sess->url('front_content.php?idcat='.$data['idcat']).'">'.$data['name'].'</a></li>';
	            } // end if
	        } // end foreach
	        $html .=  '</ul>';
	    } // end if
	    $html .=  '</ul>';
    } // end if
} // end foreach

/* Output buffer-contents */
echo $html;
?>
wosch

Beitrag von wosch »

Definier mal was du unter:
"nicht richtig sortiert ausgegeben" verstehst.
Am Besten mit einem Screenshot wie es in der Kategorienübersicht und im Frontend aussieht.
franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky »

hmm wie soll man das groß beschreiben..
So sieht es im Backend aus:
MainCat
- Cat3
- Cat2
- Cat4
- Cat1
und im Frontend sollte es genauso aussehen. Es sieht aber folgendermaßen aus:
MainCat
- Cat1
- Cat2
- Cat3
- Cat4
Ich hoffe das reicht so :)
franky
Beiträge: 68
Registriert: Mi 31. Aug 2005, 08:55
Kontaktdaten:

Beitrag von franky »

Danke für eure Hilfe, aber es war meine Dummheit.. Hatte einen Fehler in meinem Stylesheet ;)
Gesperrt