geteilte Hauptnavigation 4.6.2 BETA !

OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

geteilte Hauptnavigation 4.6.2 BETA !

Beitrag von OSI » Mo 28. Nov 2005, 00:21

Hi.

ich habe versucht, die Hauptnavigation in der 4.6.2 zu zerstückeln, 1. Ebene immer normal anzeigen, 2. - 5. Ebene an anderer Stelle in anderen Container .

Es hat soweit funktioniert, ich kann allerdings keine Gewähr übernehmen, soweit ich heute getestet habe funktionierts, sogar noch mit dem ultimativen Alias-Patch von stese !

Was 100%ig zu Fehlern führen wird ist, wenn man die Module (wie in der funktionierenden 4.4.4er Version) falschrum aufruft, d.h., erst den Container mit den anderen Ebenenen mit HTML Code abarbeiten lässt.

Guckt doch mal drüber, und berichtet Fehler oder auch gerne Success-Stories ;-)

HauptNav1 - INPUT

Code: Alles auswählen


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

#Select tree
?>
<table cellspacing="0" cellpadding="0" cellpadding="4">
    <tr>
        <td class="text"><?php echo mi18n("Baum wählen");?>:</td>
        <td>
            <select name="CMS_VAR[0]">
            <option value="0">-- <?php echo mi18n("kein");?> --</option>
            <?php
                $sql = "SELECT
                            A.idcat,
                            C.name
                        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
                            C.idlang    = '".$lang."' AND
                            B.idclient  = '".$client."' AND
                            C.visible   = 1 AND
                            A.level     = '0'
                        ORDER BY
                            A.idtree";

                $db->query($sql);

                while ( $db->next_record() ) {
                    if ( "CMS_VALUE[0]" == $db->f("idcat") ) {
                        echo '<option selected="selected" value="'.$db->f("idcat").'">'.$db->f("name").'</option>';
                    } else {
                        echo '<option value="'.$db->f("idcat").'">'.$db->f("name").'</option>';
                    }
                }
            ?>
            </select>
        </td>
    </tr>
</table>
<?php

HauptNav1 - Output

hier habe ich gekürzt, und lasse nur die erste Ebene ausgeben.

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
* Modifier	:	Oliver Simon, simon-oliver.com
* Modified	:	27.11.2005
*********************************************************************/

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

#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');
}

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;
}

/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');

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


/* Template Instance */
$tpl = new Template;

/**
 * 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 ) {

           if ( $idcat != $start_cat ){

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

foreach ($navitems as $key => $data) {

    /* 1. Navigation level */
	if (checkCatPermission($data['idcatlang'],$data['public'])) {
	    $tpl->reset();
	    $tpl->set('d', 'NAME',  $data['name']);
	    $tpl->set('d', 'TARGET', $data['target']);
	    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));

	    $tpl->next();
	    if ($idcat == $data['idcat']) {
	        $tpl->generate('templates/navfirst_on.html');
		}elseif(is_array($data['sub'])){
	        $tpl->generate('templates/navfirst_open.html');
	    } else {
	        $tpl->generate('templates/navfirst_off.html');
	    }
	} // end if
} // end foreach

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
ob_end_clean();

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

HauptNav2 - INPUT

Code: Alles auswählen


so was von empty ... ;-)

HauptNav2 - OUTPUT

Code: Alles auswählen


<?php


/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');

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


/* Template Instance */
$tpl = new Template;

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

foreach ($navitems as $key => $data) {

	if (checkCatPermission($data['idcatlang'],$data['public'])) {

    	/* 2. Navigation level */
	    if (is_array($data['sub'])) {
	        foreach ($data['sub'] as $key => $data) {
				if (checkCatPermission($data['idcatlang'],$data['public'])) {
		            $tpl->reset();
		            $tpl->set('d', 'NAME',  $data['name']);
		            $tpl->set('d', 'TARGET', $data['target']);
		            $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
		            $tpl->next();
		            if ($idcat == $data['idcat']) {
		                $tpl->generate('templates/navsecond_on.html');
					}elseif(is_array($data['sub'])){
				        $tpl->generate('templates/navsecond_open.html');
		            } else {
		                $tpl->generate('templates/navsecond_off.html');
		            }

		    /* 3. Navigation level */
		            if (is_array($data['sub'])) {
		                foreach ($data['sub'] as $key => $data) {
							if (checkCatPermission($data['idcatlang'],$data['public'])) {
			                    $tpl->reset();
			                    $tpl->set('d', 'NAME',  $data['name']);
			                    $tpl->set('d', 'TARGET', $data['target']);
			                    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
			                    $tpl->next();
			
			                    if ($idcat == $data['idcat']) {
			                        $tpl->generate('templates/navthird_on.html');
								}elseif(is_array($data['sub'])){
							        $tpl->generate('templates/navthird_open.html');
			                    } else {
			                        $tpl->generate('templates/navthird_off.html');
			                    }

			                    /* 4. Navigation level */
					            if (is_array($data['sub'])) {
					                foreach ($data['sub'] as $key => $data) {
										if (checkCatPermission($data['idcatlang'],$data['public'])) {
						                    $tpl->reset();
						                    $tpl->set('d', 'NAME',  $data['name']);
						                    $tpl->set('d', 'TARGET', $data['target']);
						                    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
						                    $tpl->next();
						                    if ($idcat == $data['idcat']) {
						                        $tpl->generate('templates/navfourth_on.html');
											}elseif(is_array($data['sub'])){
										        $tpl->generate('templates/navfourth_open.html');
						                    } else {
						                        $tpl->generate('templates/navfourth_off.html');
						                    }

						                    /* 5. Navigation level */
								            if (is_array($data['sub'])) {
								                foreach ($data['sub'] as $key => $data) {
													if (checkCatPermission($data['idcatlang'],$data['public'])) {
									                    $tpl->reset();
									                    $tpl->set('d', 'NAME',  $data['name']);
									                    $tpl->set('d', 'TARGET', $data['target']);
									                    $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));
									                    $tpl->next();
									                    if ($idcat == $data['idcat']) {
									                        $tpl->generate('templates/navfifth_on.html');
									                    } else {
									                        $tpl->generate('templates/navfifth_off.html');
									                    }
										            } // end if
								                } // end foreach
								            } // end if
							            } // end if
					                } // end foreach
					            } // end if
				            } // end if
		                } // end foreach
		            } // end if
	            } // end if
	        } // end foreach
          } // end if
    } // end if
} // end foreach

/* Read out buffer */
$html = ob_get_contents();

/* Clean buffer */
ob_end_clean();

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

Wie geschrieben, keine Garantie für funktionieren, und schon gar nicht für sauberen Code !

Gruß, Oliver
-- "will code html for food" (cit)

bertiger
Beiträge: 30
Registriert: Fr 11. Nov 2005, 11:20
Kontaktdaten:

Beitrag von bertiger » Mo 28. Nov 2005, 09:06

Ich nutze die unter http://contenido.de/forum/viewtopic.php ... 4d5ef98045
bereitgestellt Navi in der 4.6, bis jetzt ohne Probleme. Bin Dir aber für eine Anpassung an die aktuelle version dankbar u. werde das Modul testen!

Nachtrag:
So hab Sie jetzt eingebaut u. läuft soweit ohne Probleme! :D
Danke für den Code.

bitstream
Beiträge: 1
Registriert: Fr 18. Nov 2005, 09:31
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von bitstream » Di 29. Nov 2005, 10:39

Hi,

bei mir läuft das Modul einwandfrei!!! Super Sache!!!

Vielen Dank...alleine hätte ich das wohl nicht hin bekommen :cry:

MyAccount
Beiträge: 383
Registriert: Do 17. Jul 2003, 10:21

Beitrag von MyAccount » Di 29. Nov 2005, 11:10

Schon das hier gesehen? http://contenido.org/forum/viewtopic.ph ... highlight=

Läuft bei mir einwandfrei.

OSI
Beiträge: 111
Registriert: So 25. Jul 2004, 14:06
Wohnort: Hannover
Kontaktdaten:

jau, habe ich gesehen ...

Beitrag von OSI » Di 29. Nov 2005, 11:16

aber ich war schneller ... :P :wink: nee, quatsch ...

Nee, ich denke, ich hätte mir die Arbeit nicht gemacht, wenn ich schon funktionierenden Code gefunden hätte. Aber da ich das migelieferte Hauptmodul zerpflückt habe, sollten (hoffe ich) die Template Dinge gleich bleiben, stese´s Alias Patch weiter funktionieren, und auch die Übersetzungssachen gleich bleiben....

Aber das ist Philosphie Sache, ich dachte, ich stelle meinen Code zur Verfügung, wer ihn nutzen will, viel Spass ...

Gruß, Oliver
-- "will code html for food" (cit)

MyAccount
Beiträge: 383
Registriert: Do 17. Jul 2003, 10:21

Beitrag von MyAccount » Di 29. Nov 2005, 12:26

;-) So war das auch nicht gemeint. Jedes Modul hat seine Daseins-Berechtigung.

Schau mal hier. http://contenido.org/forum/viewtopic.ph ... highlight=

Da will ich mein altes Modul auch unbedingt einsetzten und fahr damit an die Wand. Ne Idee?

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » Sa 3. Dez 2005, 19:44

OSI, my hero

da habe ich lange dran rumgefrickelt aber mangels skill keinen erfolg gehabt
das sollte unbedingt in den thread
http://contenido.org/forum/viewtopic.php?t=10231
aufgenommen werden, läuft out-of-the-box, selbst bei mir :lol:

MyAccount hat geschrieben:Schon das hier gesehen? http://contenido.org/forum/viewtopic.ph ... highlight=

Läuft bei mir einwandfrei.
Für OSI's Variante gibt es wahrhaft eine daseinsberechtigung, denn im vergleich zur kummerschen variante (MyAccunts link), wird hier weiterhin die template logic verwendet und ich kann wunderbar eine horizontale erste ebene designtechnisch von den vertikalen untereben trennen, ohne den 'passive' 'active' 'open' status für die horizontale erste eben zu verlieren.

grandios!

nochmals besten dank an OSI

edit:
wobei ich dir recht geben muss, das generell jedes modul sien daseinsberechtigung hat und die kummer-schmiede natürlich auch mit lob bedacht werden muss
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe » Mi 7. Dez 2005, 21:12

Klasse, Oliver! Funktioniert auf Anhieb und genauso wie ich es will. Ich hatte das Splitten zwar auch versucht, aber muß dabei einen Fehler gemacht haben.

Vielen Dank nochmal!

MyAccount
Beiträge: 383
Registriert: Do 17. Jul 2003, 10:21

Beitrag von MyAccount » Do 8. Dez 2005, 22:10

Um nochmal darauf zurückzukommen. Ich finde beide Module gut.
mvf hat geschrieben:Für OSI's Variante gibt es wahrhaft eine daseinsberechtigung, denn im vergleich zur kummerschen variante (MyAccunts link), wird hier weiterhin die template logic verwendet und ich kann wunderbar eine horizontale erste ebene designtechnisch von den vertikalen untereben trennen, ohne den 'passive' 'active' 'open' status für die horizontale erste eben zu verlieren.
Ich finde Kummers before()- und after()-Funktionen schick.

Code: Alles auswählen

      /** 
       * Ausgabe vor der Navigation 
       * @param String  Ausgabe vor der Navigation. 
       */ 
      function before($text) { 
         $this->before = $text; 
      } 
       
      /** 
       * Ausgabe vor jedem Eintrag 
       * @param String  Ausgabe vor jedem Eintrag. 
       */ 
      function beforeEach($text) { 
         $this->beforeEach = $text; 
      } 
       
      /** 
       * Ausgabe vor jedem selektierten Menueintrag 
       * @param String  Ausgabe vor jedem selektierten Menueintrag. 
       */ 
      function beforeSelected($text) { 
         $this->beforeSelected = $text; 
      } 
       
      /** 
       * Ausgabe zwischen zwei Hauptmenupunkten 
       * @param String  Ausgabe zwischen zwei Hauptmenupunkten. 
       */ 
      function between($text) { 
         $this->between = $text; 
      } 
       
      /** 
       * Ausgabe nach der Navigation 
       * @param String  Ausgabe nach der Navigation. 
       */ 
      function after($text) { 
         $this->after = $text; 
      } 
       
 
Bei mir sieht das ohne dem nämlich immer so aus:

Home | Impressum | Kontakt |

Soll heißen. dass er hinter Kontakt immer ein Trennzeichen "|" setzt.[/quote]

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

css

Beitrag von #ayshe » Fr 9. Dez 2005, 00:27

Also, ich muß gleich vorweg sagen, dass ich mir diese before- und after-Geschichte nicht angesehen habe. Aber ich setze meine Menüs grundsätzlich per CSS um, da bin ich sowieso nicht auf extra-Code angewiesen ;-)

Gruß,
Ayshe

timgroth
Beiträge: 42
Registriert: Do 6. Okt 2005, 15:28
Kontaktdaten:

Beitrag von timgroth » Fr 9. Dez 2005, 13:17

Erst einmal vielen Dank für das Modul OSI!

Es klappt nach ein paar Anpassungen wunderbar bei mir.
Nun würde ich allerdings in der HauptNav2 über den Unterpunkten
gerne noch den aktuell in der HauptNav1 ausgewählten Menüpunkt anzeigen.

Leider bekomme ich es einfach nicht hin, dort auch noch einmal
den Namen des ausgewählten Hauptpunktes anzuzeigen.

Mit dem Snipplet von strese klappt es leider auch nicht :-/

Code: Alles auswählen

<?php

// aktueller kateoriename:
print getCatnamesById ( $idcat, $lang );

// oberste kategorie ausgeben
$cat = $idcat;
while ( $cat > 0 ) {
  $temp_cat = strNextBackwards($cat);
  if ($temp_cat == 0) break;
  $cat = $temp_cat;
}
print getCatnamesById ( $cat, $lang );


function getCatnamesById ( $idcat = 0, $idlang = 0 ) {
   global $cfg;

   $sql = "SELECT name FROM " . $cfg["tab"]["cat_lang"] . " WHERE idcat = " . $idcat . " AND idlang = " . $idlang;

   $db = new DB_Contenido();
   $db->query($sql);
   $db->next_record();

   return urldecode($db->f("name"));
}

?>

Es soll quasi so aussehen:


PUNKT 1 | PUNKT 2 | PUNKT 3 | PUNKT 4 | PUNKT 5


PUNKT 2
UNTERPUNKT VON 2
UNTERPUNKT VON 2
UNTERPUNKT VON 2


Vielen Dank schon einmal für Eure Hilfe!

mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf » So 11. Dez 2005, 22:22

das ist geanu das was du suchts, all credits bitte an stese

BESCHREIBUNG:

Code: Alles auswählen

Erzeugt die Ausgabe eines Linkes mit dem Namen der obersten Kategorie des Baumes mit der aktuellen Kategorie.

Kategoriebene kann im 2. Parameter im Funktionsaufruf von get_top_category() angegeben werden

Autor: Stefan Seifarth <info@polycoder.de>
Version: 0.1
OUTPUT

Code: Alles auswählen

<?php


if ( !function_exists("getCatnamesById") ) {
   
function getCatnamesById ( $idcat = 0, $idlang = 0 ) {
   global $cfg;

   $sql = "SELECT name FROM " . $cfg["tab"]["cat_lang"] . " WHERE idcat = " . $idcat . " AND idlang = " . $idlang;

   $db = new DB_Contenido();
   $db->query($sql);
   $db->next_record();

   return urldecode($db->f("name"));
}

}


if ( !function_exists("get_top_category")) {
   
   function get_top_category( $int_current_idcat = 0, $int_target_level = 0 ) {
      global $client, $cfg;
     
      $db = new DB_Contenido();
      $tmp_idcat = $int_current_idcat;
     
      $sql = "SELECT level FROM " . $cfg["tab"]["cat_tree"] . " WHERE idcat = '" . $int_current_idcat . "'";
      $db->query($sql);

      if ($db->num_rows()> 0) {

         
         $db->next_record();
         $int_current_level = $db->f("level");
     
         while ( $int_current_level != $int_target_level ) {
           
            $sql = "SELECT c.parentid, ct.level FROM " . $cfg["tab"]["cat_tree"] . " ct LEFT JOIN " . $cfg["tab"]["cat"] . " c ON ct.idcat = c.parentid WHERE c.idcat = '" . $tmp_idcat . "'";
            $db->query($sql);

            if ( $db->num_rows() > 0) {
               $db->next_record();
               $int_current_level = $db->f("level");
               $tmp_idcat = $db->f("parentid");
            } else {
               break;
            }
         }
     
      }
     
      return $tmp_idcat;
   }
}


// kateoriename in bestimmten level bestimmen:
// (2. wert = level - 0 = hauptbaum, 1 = erste unterkategorie, ...
$oberste_kategorie = get_top_category ( $idcat, 0);


print '<a href="' .
    $sess->url("front_content.php?idcat=" .
       $oberste_kategorie .
       "&changelang=" . $lang .
       "&client=" . $client

     ) . '">' . getCatnamesById ( $oberste_kategorie, $lang ) . '</a>';





?>
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams

timgroth
Beiträge: 42
Registriert: Do 6. Okt 2005, 15:28
Kontaktdaten:

Beitrag von timgroth » Mo 12. Dez 2005, 14:53

Super, vielen Dank und weihnachtliche Grüße!

der_allgaeuer
Beiträge: 94
Registriert: Mo 3. Jan 2005, 20:59
Kontaktdaten:

Beitrag von der_allgaeuer » Di 13. Dez 2005, 18:08

Hallo OSI,

mit Deinem neuen geteilten Menü war ich zunächst "geteilter Meinung" :? ,
denn es hat nicht funktioniert - es folgte eine Fehlermeldung.
Nach studieren der Fehlermeldung war schnell klar, dass im meinem Mandantenverzeichnis der Ordner 'includes' mit der functions.navigation.php nicht da war. Das kommt davon, dass ich immer die frontend-dateien aus dem external-Verzeichnis bei einem neuen Mandanten verwenden und da ist kein Verzeichnis 'includes' dabei.

Jetzt funktionierts aber super. Dank Dank

*sichmitaufrechtemrespectverneigendrückwärtsentfernend*

mfG hubert

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Beitrag von effex » Mi 14. Dez 2005, 11:13

Hallo zusammen!

Ich habe die anfangs gepostete Version von OSI in der Contenido Version 4.6.2 im Einsatz gehabt und sie funktioniert prima. Danke OSI!

Nach dem update auf 4.6.4 erhielt ich dann folgende Fehlermeldung:
Fatal error: Call to undefined function: checkcatpermission() in /www/htdocs/name/cms/front_content.php(771) : eval()'d code on line 136

Darauf habe ich im output des zweiten Modulteiles am Anfang folgenden Code ergänzt:

Code: Alles auswählen

#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');
}

if ( !is_object($db2) ) {
    $db2 = new DB_Contenido;
}
Jetzt errhalte ich zwar keine Fehlermeldung mehr, aber es werden auch keine Navigationsebenen unterhalb der ersten mehr angezeigt!?

Woran kann das liegen?

Gesperrt