Seite 3 von 7

Verfasst: Mi 18. Jan 2006, 18:45
von mvf
ich muss wie immer blöd nachfrage :?

als erstes solltest du das modul ohne mr zum laufen bringen denke ich, also debugging from the top, hoffe hast backups, dann mal genau schildern was nicht läuft, errorlog ?

vorher vieleicht nicht nur browsercache sondern auch mal die tabelle con_code leeren(!) nicht löschen

und dann guckenwir mal weiter

Verfasst: Mi 18. Jan 2006, 18:52
von jdk
Liebster Mzf,

ich bezog mich auf das Posting bzgl. der für Mod_Rewrite angepaßten Navigation. Das normale Modul für die geteilte Navigation und Mod_Rewrite funktionieren wunderbar - nur eben die durch die im Thread beschriebenen Modifikationen wird nicht erreicht, dass der angegeben Pfad stimmt. Mit Mod_Rewrite geht die Navigation prinzipiell (wenn auch nicht mit den angegebenen Verbesserungen), ohne Mod_Rewrite findet er die jeweilige Seite nicht.

Dennis

PS: Ich spiele gleich die fehlerhaften Module nochmal ein, um dir die Fehlermeldung geben zu können...

Also...

Verfasst: Mi 18. Jan 2006, 18:57
von jdk
Hier alles ohne Mod_Rewrite, damits klarer wird.

Das normale Modul gibt beispielsweise einem Menüpunkt folgenden Link:
.../cms/front_content.php?idcat=75

Das für Mod_Rewrite enhanced Modul gibt folgenden Link:
.../cms/front_content.php?idcat=75&idart=117

Beim Klicken kommt "echo "No code was created for this art in this category."; ", was nicht weiter verwundert, hat der Startartikel in der Kategorie 75 doch die idart 104.

Jetzt klarer? (Achso: das ist 4.6.4)

Dennis

(Edited.)

Re: Also...

Verfasst: Mi 18. Jan 2006, 19:11
von mvf
jdk hat geschrieben:Hier alles ohne Mod_Rewrite, damits klarer wird.

Das normale Modul gibt beispielsweise einem Menüpunkt folgenden Link:
.../cms/front_content.php?idcat=75

Das für Mod_Rewrite enhanced Modul gibt folgenden Link:
.../cms/front_content.php?idcat=75&idart=117

Beim Klicken kommt "echo "No code was created for this art in this category."; ", was nicht weiter verwundert, hat der Startartikel in der Kategorie 75 doch die idart 104.

Jetzt klarer? (Achso: das ist 4.6.4)

Dennis

(Edited.)
jo klarer :) sehr viel klarer ! merci

als erstes dann bitte mal die cond_code tabelle leeren und browsercache, cookies eventuell auch um es ganz dicht zu machen die con_phplib_active_sessions auch LEEREN

Verfasst: Mi 18. Jan 2006, 20:56
von jdk
Jetzt wirds dubios... Es kommen zwar keine Fehlermeldungen mehr, aber er ruft die falschen Seiten auf oder wird auf die Startseite geworfen... Nach wie vor stimmen die "idcat"-Werte gar nicht.

Außerdem zeigt er den ersten HTML-Content auch im Frontend wie im Inlineediting an (aber ohne Möglichkeit zu speichern)?!

Dennis

Verfasst: Mi 18. Jan 2006, 22:26
von stese
so, das problem lliegt in folgender zeile (in allen 3 output modulen):

Code: Alles auswählen

"idart"      => $db->f("startidartlang"),
das ist natürlich so nicht richtig, da im folgenden die zeile gesetzt wird:

Code: Alles auswählen

$tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart']));
die idart ist nicht gleich der idartlang!

bei meinem mod rewrite bundle funktioniert es nur deshalb weil die interne path resolver url ab und an die richtige kategorie nimmt.

korrekt wäre es allerdings so:

Code: Alles auswählen

"idartlang"      => $db->f("startidartlang"),
und

Code: Alles auswählen

$tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'].'&idartlang='.$data['idartlang']));
das dies überhaupt funktioniert habe ich extra eingeführt, man sich also zeichen in der url spart und ganz wichtig für mich, dass ich meine module einfacher halten kann (weil halt die idartlang schon als startidartlang in der kateogrie tabelle enthalten ist.
nun kommt das große ABER:
contenido kann von haus aus in der front_content nix mit idartlang anfangen - nur mit idcatart.

sprich was wäre zu tun: wir müssen in einer kleinen extra funktion von der idartlang ausgehend die korrekt idart herausfinden.

das geht theoretisch mit folgender kleinen funktion (bitte an den anfang des output moduls stellen):

Code: Alles auswählen

if (!function_exists("getIdart") ) {
  function getIdart ( $idartlang ) {
     global $cfg;

     $db = new DB_Contenido;
     $sql = "SELECT idart FROM " . $cfg["tab"]["art_lang"] . " WHERE idartlang = '" . (int)$idartlang . "'";
     $db->query($sql);
     $db->next_record();

     return (int)$db->f("idart");
  }
}
und dann werden die beiden problemzeilen so abgewandelt:

Code: Alles auswählen

"idart"      => getIdart( $db->f("startidartlang") ),
und

Code: Alles auswählen

$tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'].'&idart='.$data['idart']));

Funktioniert Super!

Verfasst: Mo 20. Mär 2006, 09:25
von nabu-bonn.de
Hallo Osi!

Vielen Dank für deine geteilte Navigation. Ist genau das, was ich für mein neues Projekt suche!

Für die Anzeige der aktiven Kategorie in der 1. Ebene im zweiten Navigationsteil habe ich in der Hauptnavigation die Zeile

Code: Alles auswählen

$activeCategory = $data['name'];
hinzugefügt. Der innere IF-Block der ersten Navi-Ebene sieht dann so aus:

Code: Alles auswählen

if ($idcat == $data['idcat']) { 
           $tpl->generate('templates/navfirst_on.html'); $activeCategory = $data['name'];
      }elseif(is_array($data['sub'])){ 
           $tpl->generate('templates/navfirst_on.html');  $activeCategory = $data['name']; 
       } else { 
           $tpl->generate('templates/navfirst_off.html'); 
       }
Im zweiten Teil der Navi lasse ich die Variable dann einfach vor den Navi-Elementen ausgeben.

Ist vielleicht nicht die eleganteste Variante, aber war für mich am einfachsten "nachzuvollziehen" :wink:

Viele Grüße
Til

Geteilte horizontale Navigation

Verfasst: Di 28. Mär 2006, 14:28
von uwe-schmitt
Hallo ans Forum,

leider gelingt es mir nicht, die Navigation zum Laufen zu bekommen. Das geht schon da los, dass in der ersten Ebene alle Menüpunkte vertikal stehen; ich brauche sie aber horizontal (wo stellt man das ein?).
Des Weiteren bekomme ich im zweiten DIV-Container keine Ausgabe.

Module sind natürlich im Template zugewisesn.
Contenido-Version 4.6.8

Danke im Voraus.

Gruß
Uwe Schmitt

Verfasst: Di 28. Mär 2006, 14:41
von nabu-bonn.de
Hallo,

das ist eine Frage des Templates im Hintergrund.

Mein Template für die erste Ebene sieht wie folgt aus:
<!-- BEGIN:BLOCK -->
<tr>
<td height=25 width=13 style="border:0px; background-color:#c00000; border-right-width=1px; border-top-width:1px; border-style:solid; border-color:#FFFFFF;"></TD>
<td style="border: 0px; background-color: #8C96A5; border-top-width:1px; border-style:solid; border-color:#FFFFFF; padding-left:5px" align=left valign=middle>
<a class="main" href="{HREF}">{NAME}</a>
</td>
</tr>
<!-- END:BLOCK -->
Im Modul habe ich dann am Anfang noch den Table-Befehl eingefügt:
...
/* Start Output buffer */
ob_start();
echo '<table width=140 border=0 cellpadding=1 cellspacing=0>';
...
Am Ende des Moduls muß dann natürlich noch die Tabelle wieder beendet werden.
Dann hast du eine senkrechte Navigation.

Für die waagerechte Navi mußt du im Template die <TR>-Tags löschen. Die >Table>-Tags im Modul mußt du dann entsprechend um den <TR>-Tag erweitern.
Damit sollte das dann klappen, wie du es möchtest.

Gruß

Verfasst: Do 15. Jun 2006, 10:36
von EvilIce
Also irgendwie bekomme ich als absoluter noob das nicht hin. ich habe die beiden module eingebaut und bekomme auch erstmal so keinen fehler aber in der hauptnav1 werden mir jetzt die einträge aus der servicenav angezeigt und in der hauptnav2 garnichts. was mache ich da falsch ?

Verfasst: Do 22. Jun 2006, 08:06
von rene04
hallo,

also ich hab den thread nun 5 mal durchgelesen und krampfhaft versucht ihn zu verstehen. vielleicht isses ja noch zu früh am morgen, aber ich versteh es nicht :(

kann man hier vielleicht mal einen zusammenfassung dessen posten was man nun benötigt um statt: http://www.xxx.com/xxx/ http://www.xxx.com/xxx/xxx.html bekommt?

in der hilfsnavi funktioniert es ja scheinbar nur eben in der hauptnavi nicht die von contenido mitgeliefert wird.

gruesse

Verfasst: Do 22. Jun 2006, 08:08
von stese
http://contenido.org/forum/viewtopic.php?t=13105

du musst die module anpassen, dass die idart in der url korrekt übergeben wird. Der Beitrag (ein paar postings über dir) erklärt welche änderungen generell vorzunehmen sind

Verfasst: Do 22. Jun 2006, 08:36
von rene04

Code: Alles auswählen

if (!function_exists("getIdart") ) {
  function getIdart ( $idartlang ) {
     global $cfg;

     $db = new DB_Contenido;
     $sql = "SELECT idart FROM " . $cfg["tab"]["art_lang"] . " WHERE idartlang = '" . (int)$idartlang . "'";
     $db->query($sql);
     $db->next_record();

     return (int)$db->f("idart");
  }
}
das habe ich nun eingefügt in meine hauptnavi. aber ich finde die 2 problemzeilen nicht :(

das hier ist mein output modul der HAUPTnavi:

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

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

if (!function_exists("getIdart") ) {
  function getIdart ( $idartlang ) {
     global $cfg;

     $db = new DB_Contenido;
     $sql = "SELECT idart FROM " . $cfg["tab"]["art_lang"] . " WHERE idartlang = '" . (int)$idartlang . "'";
     $db->query($sql);
     $db->next_record();

     return (int)$db->f("idart");
  }
}

#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');
	    }
	
    	/* 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;
echo "<br>";
?>
gruesse rene

Verfasst: So 25. Jun 2006, 20:22
von EvilIce
Ich hab da nochmal ein etwas anderes Problem. Ich hab jetzt mit hilfe von mvf (nochmal danke an dieser stelle) eine geteilte navigation zum laufen gebracht.
so nun werden ja die farben der links in der format css mit a.klein usw bestimmt. ich möchte nun aber im einen teil der navigation andere farben verwenden als in dem anderen. also konkret ich hab oben eine blaue leiste in der die menüpunkte weiss sein sollen. folglich habe ich in der format.css auf weiss eingestellt. der rest meiner seite ist aber weiss. daher habe ich jetzt beim rest das problem das man weisse menüpunkte auf weissem grund nicht sieht. lange geschichte wenig sinn. was muss ich machen damit ich unterschiedliche farben nutzen kann ? am besten eine farbe für die leiste oben eine für das menü links und noch eine für alle anderen links.

€dit: Hat sich erledigt hab es hinbekommen.

Verfasst: Mo 26. Jun 2006, 15:23
von rene04
...und mir hats mit meiner alten navi jetzt so übel gestunken das ich mir die geteilte hauptnavi eingebaut habe. funzt toll.


gruesse