Horizontale Navigation?!!

trigger_id
Beiträge: 21
Registriert: Do 30. Sep 2004, 09:04
Kontaktdaten:

NavigationsItems hinterlegen

Beitrag von trigger_id » Do 30. Sep 2004, 10:35

Hallo erstmal und danke für die Navigation ;-)
Fange auch gerade erst mit contenido an, hoffe, ihr könnt mir weiterhelfen! :oops:

Da das highlighten bei mir nicht funktioniert (habe die classes auch in meiner css, aber es wird nur die class für die nichtaktiven Punkte verwendet)
und die Unterkategorien zu vielfältig sind für die horizontale Navigation, lade ich das Modul 2mal (als Kopie) in der Site.
Die Hauptnavi horizontal und die dazugehörigen Unterkategorien seitlich vertikal.
Diese würde ich gerne mit einem Style versehen, sodass die Menüpunkte beim Mouseover die Hintergrundfarbe verändern.
Bekomme beim Output aber direkt nen roten bubble :cry:
Habe das so gemacht:

// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen

$sTmpStr = $sTmpStr . $strBEGIN . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor='#9BB6C7'" onmouseout="style.backgroundColor=''"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor='#9BB6C7'" onmouseout="style.backgroundColor=''"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
} // end if

} // end while

oder muss ich das gar nicht in den Output schreiben... bin nicht so die Programmierkönigin...
Freu mich, wenn mir jemand weiterhelfen kann!
Besten Dank
trigger_id

Contenido-Version 4.6.15

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Do 30. Sep 2004, 16:48

probier mal das hier:

// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen

$sTmpStr = $sTmpStr . $strBEGIN . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
} // end if

} // end while

du hattest nen klassiches programier fehler durch deine änderung hervorgerufen ;)

so long

stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

trigger_id
Beiträge: 21
Registriert: Do 30. Sep 2004, 09:04
Kontaktdaten:

Beitrag von trigger_id » Fr 1. Okt 2004, 10:41

na klar, wenn's einem jemand sagt...
hab vergessen die Anführungszeichen zu entwerten!

da hätte ich ja nun gar nicht dran gedacht... :D

1000 Dank
ira

trigger_id
Beiträge: 21
Registriert: Do 30. Sep 2004, 09:04
Kontaktdaten:

html Asugabe bricht nach Ausgabe der Navigation ab

Beitrag von trigger_id » Fr 1. Okt 2004, 11:39

Nun bin ich so froh, dass die Navi läuft, da wird auf einmal die html-Ausgabe nach der korrekten Ausgabe der Navigation abgebrochen.

:oops:

An welcher Stelle muss ich denn im Output suchen?

Hier der geänderte Output:

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2 = "";
$catStart = "";
$catPrev = "";
$sTmpStr = "";
$db2_sql = "";
$catIds = "";
$key = "";
$val = "";
$sql = "";

// ****************************************************************************************************

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;

/*
$eckkla_auf = '&nbsp;';
$eckkla_zu = '';
$eckkla_trenn = '&nbsp;';

$strBEGIN = '';
$strEND = '';
*/

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart = "CMS_VALUE[3200]";
$catPrev = "CMS_VALUE[3201]";
$eckkla_auf = "CMS_VALUE[3202]";
$eckkla_zu = "CMS_VALUE[3203]";
$eckkla_trenn = "CMS_VALUE[3204]";
$strBEGIN = "CMS_VALUE[3205]";
$strEND = "CMS_VALUE[3206]";
$cfg_chkchildid = "CMS_VALUE[3207]";
$cfg_css_link = "CMS_VALUE[3208]";
$cfg_css_linkhl = "CMS_VALUE[3209]";



// * get catPrec Category and output CatName as [ BackTo ] nav item


if ($catStart != "") {
$sTmpStr = "";

// Datenbankabfrage ( SQL QUERY ) aufbauen
$sql = " SELECT
CAT.idcat AS idcat,
name
FROM
".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["cat_lang"]." AS CATLANG

WHERE CAT.idcat = ".$catPrev."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";

// Datenbankabfrage durchführen
$db->query($sql);


// die einzelnen Recordsets der Datenbankabfrage durchgehen
while ( $db->next_record() ) {

// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen

$sTmpStr = $sTmpStr . $strBEGIN . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
} // end if

} // end while


$db2_sql = " SELECT
*
FROM ". $cfg["tab"]["cat"] ." AS A

WHERE

A.parentid = ". $catStart . "

ORDER BY A.preid

";

// Abfrage ausführen
$db2->query($db2_sql);

// Ermittlung aller Kategorie IDs der ausgesuchten
// Navigationsebene und speicherug in einem Array
while ( $db2->next_record() ) {
// $catIds[] = $db2->f("idcat");
$test_1[$db2->f("preid")] = $db2->f("idcat");
}

/*
PREID => IDCAT ( $test_1 )
Array (
[0] => 50

[26] => 27
[27] => 28
[28] => 29
[29] => 30
[30] => 31
[31] => 32
[32] => 33
[33] => 38
[34] => 35
[35] => 36
[36] => 37
[38] => 34
[50] => 26
)
------------------------------------
*/

// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
$ires = $test_1[$lpre];
$test_3[] = $test_1[$lpre];
$lpre = $ires;
}


// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------

// Überprüfung ob $catIds wirklich ein Array ist
if ( is_array($catIds) ) {

// die einzelnen IDs durchgegen
foreach($catIds as $key=>$val) {


// Datenbankabfrage ( SQL QUERY ) aufbauen
$sql = " SELECT
CAT.idcat AS idcat,
name
FROM
".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["cat_lang"]." AS CATLANG

WHERE CAT.idcat = ".$val."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";

// Datenbankabfrage durchführen
$db->query($sql);


// die einzelnen Recordsets der Datenbankabfrage durchgehen
while ( $db->next_record() ) {

if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
{
// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $strBEGIN . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
} // end if
}
else
{
// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
if ( strlen($sTmpStr) == 0 ) {
// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
// und den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $strBEGIN . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' .
$eckkla_zu;
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor=\'#9BB6C7\'" onmouseout="style.backgroundColor=\'\'"><td class="text" valign="top" width="10"></td><td><a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>' . $eckkla_zu;
} // end if
}



} // end while

} // end foreach

// END Zeichen $strEND anfügen
$sTmpStr = $sTmpStr . $strEND;

// Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
echo $sTmpStr;
} // end if (is_array)


}

function sn_check_if_child ( $l_idcat, $l_paridcat )
{
$bResult = false;
$l_int = $l_idcat;

while ( $l_int != 0 && $l_int != $l_paridcat )
{
$l_int = get_parentid_from_idcat ( $l_int );

if ( $l_int == $l_paridcat )
{
$bResult = true;
} // end if
} // end while

return $bResult;
} // check_if_child

function get_parentid_from_idcat ( $l_idcat )
{
$ldb = new DB_Contenido;
$lsql= "SELECT *
FROM ".$cfg["tab"]["cat"]." AS CAT,
".$cfg["tab"]["cat_lang"]." AS CATLANG

WHERE CAT.idcat = ".$l_idcat."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";

$ldb->query($lsql);

while ( $ldb->next_record() )
{
$l_parid = $ldb->f("parentid");
}

return $l_parid;

} // end function get_parentid_from_idcat

?>


Die html Ausgabe hört dann leider so auf:

<tr valign="top">
<td>
<table cellpadding="0" cellspacing="0" border="0" height="100%" width="160">
<tr><td valign="top">
<table cellpadding="0" cellspacing="0" border="0" width="160">
<tr>
<td class="text" valign="top" width="10"></td>
<td height="25" colspan="2" class="white-title">Menu</td>
</tr>

<tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor='#9BB6C7'" onmouseout="style.backgroundColor=''"><td class="text" valign="top" width="10"></td><td><a class="menu" href="front_content.php?idcat=28">Organisation</a></td></tr>
<tr><td height="1" colspan="2"></td></tr><br><tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor='#9BB6C7'" onmouseout="style.backgroundColor=''"><td class="text" valign="top" width="10"></td><td><a class="menu" href="front_content.php?idcat=36">Forschung & Entwicklung</a></td></tr>
<tr><td height="1" colspan="2"></td></tr><br><tr bgcolor="#A5BAC7" onmouseover="style.backgroundColor='#9BB6C7'" onmouseout="style.backgroundColor=''"><td class="text" valign="top" width="10"></td><td><a class="menu" href="front_content.php?idcat=37">Zahlen & Fakten</a></td></tr>
<tr><td height="1" colspan="2"></td></tr>
Besten Dank
trigger_id

Contenido-Version 4.6.15

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Mo 4. Okt 2004, 09:35

kannst du mal pls noch dein layout posten, wo du die container definierst ?
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

trigger_id
Beiträge: 21
Registriert: Do 30. Sep 2004, 09:04
Kontaktdaten:

Beitrag von trigger_id » Mo 4. Okt 2004, 10:11

Hallo,

habe erstmal ein anderes Modul verwendet und modifiziert.
Könnte die Problematik in der 2maligen Verwendung des Navigationsmoduls liegen?
Hatte das Modul allerdings extra 2mal angelegt...
Der erste Aufruf klappt immer prima und nach Ausführen des 2.Navigationsmoduls, wird die html-Asugabe abgebrochen...

Danke nochmal für die Mühen!
Besten Dank
trigger_id

Contenido-Version 4.6.15

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 4. Okt 2004, 15:51

trigger_id hat geschrieben: Könnte die Problematik in der 2maligen Verwendung des Navigationsmoduls liegen?
Hatte das Modul allerdings extra 2mal angelegt...
Ich habe nicht den ganzen Thread gelesen, aber wenn du auf derselben Seite zweimal das gleiche Modul benutzt, dann laeuft's schief, weil Variablen doppelt belegt werden! Das wurde schon mal im Zusammenhang mit dem Navigationsmodul (vielleicht nicht bei der horizontalen, das weiss ich nicht mehr).

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Di 5. Okt 2004, 14:51

öhm .. daran könnte es liegen . mhh

naja, hab da so eine idee, wie ich sowas für die zukunft umgehen kann, dauert aber bissle das zu realisieren .. anonsten einfach alle variabeln im source für das zweite modul mit einer 2 oder so ergänzen ..


obwohl *amkopfkratz* die vars sind weniger das prob, eher die funktionen die im source mit drin stehen.

Schau mir den code die tage nochmal an, dürfte aber bissle dauern bis das so umgebaut ist das ein source mehrmals auf einer page verwendet werden kann .. sry
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

jenal
Beiträge: 10
Registriert: Di 19. Okt 2004, 08:35
Wohnort: Zürich
Kontaktdaten:

Modul scheint nicht zu funktionieren ...

Beitrag von jenal » Di 19. Okt 2004, 09:40

Nachdem ich voller Erwartung dein anscheinend sehr gelungenes Modul anlegen wollte, blieben leider beide Felder (input und output) rot und das Modul scheint nicht zu funktionieren bei mir. Was kann schief gehen?

Bin contenido newbie und php-unkenner :oops:

Für jegliche Hilfe bin ich dankbar.

Marcus

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Di 19. Okt 2004, 18:03

hast du die letzte offiziele vers im thread von mir genommen ? so wie sie drinsteht ?

ansonsten kann ich mir das nicht vorstellen was das prob ist.

Geh doch mal mit der Maus über die zwei roten Punkte und sag mir in welcher Zeile der Fehler ist und wie die Fehlermeldung ist bzw. schau mal ins Errorlog.


Gruß

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

jenal
Beiträge: 10
Registriert: Di 19. Okt 2004, 08:35
Wohnort: Zürich
Kontaktdaten:

Beitrag von jenal » Di 19. Okt 2004, 22:01

ich hab die version 0.4 alpha 1:1 gecopy-pasted, so wie du sie gepostet hast.

die fehler werden folgendermassen beschrieben:

"Fehler in Modul. Fehlerquelle: eval()'d code on line 6 <br />" bein Input, beim Output dasselbe "... on line 17".

In errorlog sind dieselben Einträge mehrfach drin:
[19-Oct-2004 15:32:29] PHP Parse error: parse error in /usr/www/www.cms3.irdium.ch/wwwroot/contenido/in ... d.php(155) : eval()'d code on line 6
[19-Oct-2004 15:32:29] PHP Parse error: parse error in /usr/www/www.cms3.irdium.ch/wwwroot/contenido/in ... d.php(155) : eval()'d code on line 17
Danke für deine Hilfe!

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Mi 20. Okt 2004, 13:20

mhh


komisch, wleche Contenido Version setzt du den ein ? Der Code funzt eigentlich einwandfrei, hab ihn in mehrere Systemen am laufen, so wie er geposted ist.


hast ne pn

gruß

stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Neue Modulversion ---> v0.5 alpha

Beitrag von SkyBlader » Do 21. Okt 2004, 14:39

guten morgen community ;)

hab mal wieder ein wenig an meinem Modul rumgepfusch und werde es euch nun hier als version 0.5 alpha präsentieren.

Aja, was mir grad so auffält, eigentlich passt das Modul ja nur noch zu 50% in den Thread, da es sich ja nicht mehr um eine reine Horizontale Navigation handelt.


Nun erstmal das ChangeLog und dann der Input/Output code as usual:

SN_NavMod v0.5 alpha - ChangeLog

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL
*
* Modulname    :	SN_NavMod
* Modulversion :	0.5 alpha 
* Author       :	Stefan Bürk
* Kontakt      :	Email: webmaster@skyblader.org
* Copyright    :	SkyBlader Networxx, Stefan Bürk
* C-Version    :	4.4
* Created      :	09-03-2004
* Modified     :	21-10-2004
*
* Beschreibung :
*
* Navigationsstruktur für Untermenüs mit 1 Navigationsebene,
* Ausgabe ist im Output Modul über Variabeln steuerbar.
* 
************************************************/

21.10.2004
==========

IN	Entfernen der Defaultwerte, da diese immer eingetragen wurden wenn 
	Feld leerwar und zur Konfiguration gesprungen wurde

	Bei Auswahl von "-- kein --" anderen Wert nehmen, da der Wert "0" 
	in der DB auch eine Kategorie bezeichnet ---> "0" => "--kein--"

	Hinzufügen von Beschriftungsvariabeln, um ein Umstellen auf das
	Modul-Sprachsteuerungsfeature von 4.5.x / 4.6  vorzubereiten.

OUT	Überprüfungen eingebaut, um bei angabe von "-- kein --" auch wirklich
	keine Ausgabe zu generieren.

	Mehrfachunterstützung durch anpassungen im Code hergestellt.

21.09.2004
==========

OUT	Implementierung von zwei Funktionen, um für den Highlight Teil die
	Überprüfung, ob ein Entry hervorgehoben werden darf, auch bei Kinder
	ebene innerhalb des Kategoriebaumes sicherzustellen.

	Desweiteren wurde die im Inputteil als Konfigurierbar bereitgestellten
	Variabeln für die CSS-Klassenauswahl für Link und LinkHervorgehoben
	in der Routine nun berücksichtig.

IN	Auswahlschalter für HighlightingsÜberprüfung unter Berücksichtigung 
	von CHILD-Ids implementiert => cfg_check_parequal

IN	Konfiguration zur Konfigurierung für die CSS-Klasse für NavLink und 
	NavLink Hervorgehoben (Aktuelle Category)




20.09.2004
==========

IN	Implementierung von weiteren Konfigurationsmöglichkeiten für

	- VorLink
	- NachLink
	- LinkTrennzeichen
	- Anfang
	- Ende

	bei einem Aufbau der Linksammlungen für das dynamische Menü im
	folgenden Format:

	ANFANG + [ VorLink + {LINK} + NachLink ] + LinkTrennzeichen + [ VorLink + {LINK} + NachLink ] ..... + Ende

OUT	Anpassen der Ausgabeerstellungsroutingen, um die neue Konfigurierbarkeit in den
	Routinen zu berücksichtigen.



17.09.2004
==========

OUT	Erweiterung um weitere Konfigurationsvariablen für die Ausgabensteuerung,
	um eine weitere modularisierung zu bewerkstelligen.

	Dazu wurden unter anderem auch drei kleine Bugs entfernt, die vorher nicht
	aufgefallen sind, und erst durch die modularisierung zum tragen kamen.

30.06.2004
==========


out	Manuelle sortierung der CatIds auf Grund der PREID, da dies durch
	eine SQL Anweisung nicht zu bewerkstelligen ist.
	
	--> siehe http://www.contenido.de/forum/viewtopic.php?t=4576
	
in	Font und Select auf BackEnd CSS Klassen vom umgestellt.


19.03.2004
==========

out	DB-Abfrage 2 ( $sql ) lesbar für Otto-Normal-Verbraucher formatiert

17.03.2004
==========

out	Securitychecks implementiert um Injections zu unterbinden
	-	lokale Modul-Variablen initalizieren um Injects zu unterbinden
	-	Parametervariabeln gegen SQL-Injection-Versuche untersuchen
SN_NavMod v0.5 alpha - INPUT

Code: Alles auswählen

/***********************************************
* INPUT
************************************************/

// selected category
$selected 		= "CMS_VALUE[3200]";
$selected_var		= "CMS_VAR[3200]";
$selected_desc		= "Wähle die Kategorie aus:";

$selected2		= "CMS_VALUE[3201]";
$selected2_var		= "CMS_VAR[3201]";
$selected2_desc		= "Wähle die Home-Kategorie aus:";

// cfg_prelink
$cfg_prelink		= "CMS_VALUE[3202]";
$cfg_prelink_var	= "CMS_VAR[3202]";
$cfg_prelink_desc	= "Füge vor jedem Link hinzu:";

$cfg_postlink		= "CMS_VALUE[3203]";
$cfg_postlink_var	= "CMS_VAR[3203]";
$cfg_postlink_desc	= "Füge nach jedem Link hinzu:";

$cfg_linkdiv		= "CMS_VALUE[3204]";
$cfg_linkdiv_var	= "CMS_VAR[3204]";
$cfg_linkdiv_desc	= "Verwende als Trennung folgendes:";

$cfg_pre_str		= "CMS_VALUE[3205]";
$cfg_pre_str_var	= "CMS_VAR[3205]";
$cfg_pre_str_desc	= "Füge einmal am Anfang der Navigationsausgabe an:";

$cfg_post_str		= "CMS_VALUE[3206]";
$cfg_post_str_var	= "CMS_VAR[3206]";
$cfg_post_str_desc	= "Füge einmal am Ende der Navigationsausgabe an:";

$cfg_check_parequal	= "CMS_VALUE[3207]";
$cfg_check_parequal_var = "CMS_VAR[3207]";
$cfg_check_parequal_desc= "Auf Kategoriehighlight prüfen:";

$cfg_css_link		= "CMS_VALUE[3208]";
$cfg_css_link_var	= "CMS_VAR[3208]";
$cfg_css_link_desc	= "CSS-Klasse für normalen Navigationslink:";

$cfg_css_linkhl		= "CMS_VALUE[3209]";
$cfg_css_linkhl_var	= "CMS_VAR[3209]";
$cfg_css_linkhl_desc	= "CSS-Klasse für hervorgehobenen Navigationslink:";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td class=\"text_medium\">".$selected_desc."</td>
          <td class=\"text_medium\">
            <select class=\"text_medium\" name=\"".$selected_var."\">";
            if($selected!="--kein--" && $selected!=""){
             echo"<option value=\"--kein--\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"--kein--\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			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 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";

echo "    </td>
        </tr>
        <tr valign=\"top\">        
          <td class=\"text_medium\">".$selected2_desc."</td>
          <td class=\"text_medium\">
	
            <select class=\"text_medium\" name=\"".$selected2_var."\">";
            if($selected2!="--kein--" && $selected2!=""){
             echo"<option value=\"--kein--\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"--kein--\">--- kein ---</option>";
            }

            // fetch all categorys
            $query = "	SELECT 
            			A.idcat, 
            			A.level, 
            			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 ORDER BY A.idtree";
                     		
            // execute query
            $db->query($query);

            // loop result and build the options
            while ($db->next_record()) {

              // indent spacer
              $spaces = "|";

              // how many levels
              $levels = $db->f("level");

              for ($i = 0; $i < $levels; $i ++) {
                // add 2 spaces for every level
                $spaces = $spaces . "--";

              } // end for
              
              $spaces .= ">";


              if ($selected2 == $db->f("idcat")) {
                // selected category
                echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } else {
                // category
                echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";

              } // end if

            } // end while

echo "      </select>";
echo "    </td>
        </tr>";

// *********************************************************************************************************
// *** cfg_prelink
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_prelink_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_prelink_var."\" value=\"".$cfg_prelink."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_prelink
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_postlink
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_postlink_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_postlink_var."\" value=\"".$cfg_postlink."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_postlink
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_linkdiv
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_linkdiv_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_linkdiv_var."\" value=\"".$cfg_linkdiv."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_linkdiv
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_pre_str
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_pre_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_pre_str_var."\" value=\"".$cfg_pre_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_pre_str
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_post_str
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_post_str_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" name=\"".$cfg_post_str_var."\" value=\"".$cfg_post_str."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_post_str
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_check_parequal
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_check_parequal_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"checkbox\" name=\"".$cfg_check_parequal_var."\" value=\"0\"";
if ( $cfg_check_parequal == 1 )
{
	echo " checked=checked";
}

echo ">";
echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_check_parequal
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_link
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_css_link_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_css_link_var."\" value=\"".$cfg_css_link."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_link
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
echo "  <tr valign=\"top\">        
          <td class=\"text_medium\">".$cfg_css_linkhl_desc."</td>
          <td class=\"text_medium\">";

echo "      <input class=\"text_medium\" type=\"text\" name=\"".$cfg_css_linkhl_var."\" value=\"".$cfg_css_linkhl."\">";

echo "    </td>
        </tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************

echo "</table>";
SN_NavMod v0.5 alpha - OUTPUT

Code: Alles auswählen

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2       = "";
$catStart  = "";
$catPrev   = "";
$sTmpStr   = "";
$db2_sql   = "";
$catIds    = "";
$key       = "";
$val       = "";
$sql       = "";

// ****************************************************************************************************

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;

/*
$eckkla_auf   = '::&nbsp;';
$eckkla_zu    = '';
$eckkla_trenn = '<br>';

$strBEGIN = '';
$strEND   = '';
*/

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart 	= "CMS_VALUE[3200]";
$catPrev  	= "CMS_VALUE[3201]";
$eckkla_auf   	= "CMS_VALUE[3202]";
$eckkla_zu    	= "CMS_VALUE[3203]";
$eckkla_trenn 	= "CMS_VALUE[3204]";
$strBEGIN 	= "CMS_VALUE[3205]";
$strEND   	= "CMS_VALUE[3206]";
$cfg_chkchildid = "CMS_VALUE[3207]";
$cfg_css_link   = "CMS_VALUE[3208]";
$cfg_css_linkhl = "CMS_VALUE[3209]";



// * get catPrec Category and output CatName as [ BackTo ]  nav item


if ($catStart != "" && $catStart != "--kein--" ) {
  $sTmpStr = "";

        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$catPrev."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";
                     
        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {

	   // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           if ( strlen($sTmpStr) == 0 ) {
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               // und den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           }
           else
           {
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               // den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           }  // end if

        } // end while
	
                        
	$db2_sql = "	SELECT
				*
			FROM ". $cfg["tab"]["cat"] ." AS A
		
			WHERE
			
			  A.parentid = ". $catStart . "

                                                ORDER BY A.preid

                                                 ";

	// Abfrage ausführen
	$db2->query($db2_sql);

  	// Ermittlung aller Kategorie IDs der ausgesuchten
  	// Navigationsebene und speicherug in einem Array
	while ( $db2->next_record() ) {
       		// $catIds[] = $db2->f("idcat");
		$test_1[$db2->f("preid")] = $db2->f("idcat");
	}
	
/*
PREID => IDCAT  ( $test_1 )
Array ( 
	[0] 	=> 50 

	[26] 	=> 27 
	[27] 	=> 28 
	[28] 	=> 29 
	[29] 	=> 30 
	[30] 	=> 31 
	[31] 	=> 32 
	[32] 	=> 33 
	[33] 	=> 38 
	[34] 	=> 35 
	[35] 	=> 36 
	[36] 	=> 37 
	[38] 	=> 34 
	[50] 	=> 26 
)
------------------------------------ 
*/

// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
	$ires  		= $test_1[$lpre];	
	$test_3[] 	= $test_1[$lpre];	
	$lpre  		= $ires;
}


// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------

  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {

    // die einzelnen IDs durchgegen
    foreach($catIds as $key=>$val) {

       
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = 	"	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$val."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";

        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
        
	if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	else
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	


        } // end while
	
    }  // end foreach

    // END Zeichen $strEND anfügen
    $sTmpStr = $sTmpStr . $strEND;

    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo $sTmpStr;
  } // end if (is_array)


}


if ( $sn_navmod != "multiuse" ) {
$sn_navmod = "multiuse";


function sn_check_if_child ( $l_idcat, $l_paridcat )
{
	$bResult = false;
	$l_int   = $l_idcat;

	while ( $l_int != 0 && $l_int != $l_paridcat )
	{
		$l_int = get_parentid_from_idcat ( $l_int );

		if ( $l_int == $l_paridcat )
		{
			$bResult = true;
		} // end if
	} // end while
	
	return $bResult;
} // check_if_child

function get_parentid_from_idcat ( $l_idcat )
{
	$ldb = new DB_Contenido;
	$lsql= "SELECT * 
		FROM 	".$cfg["tab"]["cat"]." AS CAT,
              		".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                WHERE	CAT.idcat = ".$l_idcat."
                     	AND CAT.idcat = CATLANG.idcat
                     	AND CATLANG.idlang = '$lang'
                     	AND CATLANG.visible = '1'";

	$ldb->query($lsql);

	while ( $ldb->next_record() )
	{
		$l_parid = $ldb->f("parentid");
	}

	return $l_parid;

} // end function get_parentid_from_idcat

} // end MULTIUSE Funktions
?> 
So, das wärs erstmal.

Im prinzip sind nur 2/3 kleine Schönheitsfehler beseitigt worden.

So, nun noch eine Ankündigung:

Ich werde dieses Modul in der Form nicht weiterentwickeln. Hier im Thread werd ich nur bei Fehler helfen bzw. ggf. Bugfixing zu dieser letzten Version bereitstellen, eine Neue Version wird es nicht mehr geben.

Keine Sorge, hört sich wohl schlimmer an als es ist. Ich habe mich dazu entschlossen, da ich .........

..... was mein Navigationsmodul anbelangt von grundauf neu beginne. Dieses Modul hier entstand im Prinzip ja nur mal so kurz zwischendurch, und war keine geplante Entwicklung, und das gefällt mir nciht so.

Mein neues Modul, sobald es in der ersten Version fertig ist, werde ich hier im Forum in einem eigenen Thread unter dem Namen "SN_MultiNav" releasen.

Genauere Infos dann im dem Thread. Ich sag nur soviel ... auf Grund der geplanten Features wird ein Neuanfang leider nötig.

Aja .. ob ich davon aber einen 4.4.4 Port mache weiß ich noch nciht, geplant ist zunächst nur eine 4.5.x Version.

So, ich denke das reicht. Viel Spaß beim Einsatz der Navigation und happy bastling

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

SkyBlader
Beiträge: 303
Registriert: Do 18. Mär 2004, 16:23
Wohnort: Ratingen / NRW
Kontaktdaten:

Beitrag von SkyBlader » Do 21. Okt 2004, 21:05

argx, nehtm als output bitte das hier:

Code: Alles auswählen

<?php

/***********************************************
* OUTPUT
************************************************/

include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");

// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************

// SQL-Injection Überprüfungen und Work-Arounds

// lokale Variabeln initialisieren um Injections zu unterbinden
$db2       = "";
$catStart  = "";
$catPrev   = "";
$sTmpStr   = "";
$db2_sql   = "";
$catIds    = "";
$key       = "";
$val       = "";
$sql       = "";

// ****************************************************************************************************

// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;

/*
$eckkla_auf   = '::&nbsp;';
$eckkla_zu    = '';
$eckkla_trenn = '<br>';

$strBEGIN = '';
$strEND   = '';
*/

// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart 	= "CMS_VALUE[3200]";
$catPrev  	= "CMS_VALUE[3201]";
$eckkla_auf   	= "CMS_VALUE[3202]";
$eckkla_zu    	= "CMS_VALUE[3203]";
$eckkla_trenn 	= "CMS_VALUE[3204]";
$strBEGIN 	= "CMS_VALUE[3205]";
$strEND   	= "CMS_VALUE[3206]";
$cfg_chkchildid = "CMS_VALUE[3207]";
$cfg_css_link   = "CMS_VALUE[3208]";
$cfg_css_linkhl = "CMS_VALUE[3209]";



// * get catPrec Category and output CatName as [ BackTo ]  nav item


if ($catStart != "" && $catStart != "--kein--" ) {
  $sTmpStr = "";
	if ( $catPrev != "--kein--" ) {
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$catPrev."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";
                     
        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {

	   // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           if ( strlen($sTmpStr) == 0 ) {
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               // und den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           }
           else
           {
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               // den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           }  // end if

        } // end while
	}
                        
	$db2_sql = "	SELECT
				*
			FROM ". $cfg["tab"]["cat"] ." AS A
		
			WHERE
			
			  A.parentid = ". $catStart . "

                                                ORDER BY A.preid

                                                 ";

	// Abfrage ausführen
	$db2->query($db2_sql);

  	// Ermittlung aller Kategorie IDs der ausgesuchten
  	// Navigationsebene und speicherug in einem Array
	while ( $db2->next_record() ) {
       		// $catIds[] = $db2->f("idcat");
		$test_1[$db2->f("preid")] = $db2->f("idcat");
	}
	
/*
PREID => IDCAT  ( $test_1 )
Array ( 
	[0] 	=> 50 

	[26] 	=> 27 
	[27] 	=> 28 
	[28] 	=> 29 
	[29] 	=> 30 
	[30] 	=> 31 
	[31] 	=> 32 
	[32] 	=> 33 
	[33] 	=> 38 
	[34] 	=> 35 
	[35] 	=> 36 
	[36] 	=> 37 
	[38] 	=> 34 
	[50] 	=> 26 
)
------------------------------------ 
*/

// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";

for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
	$ires  		= $test_1[$lpre];	
	$test_3[] 	= $test_1[$lpre];	
	$lpre  		= $ires;
}


// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------

  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {

    // die einzelnen IDs durchgegen
    foreach($catIds as $key=>$val) {

       
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = 	"	SELECT
              			CAT.idcat AS idcat,
              			name
           			FROM
              			".$cfg["tab"]["cat"]." AS CAT,
              			".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                  	WHERE	CAT.idcat = ".$val."
                     		AND CAT.idcat = CATLANG.idcat
                     		AND CATLANG.idlang = '$lang'
                     		AND CATLANG.visible = '1'";

        // Datenbankabfrage durchführen
        $db->query($sql);


        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
        
	if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_linkhl.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	else
	{ 
        	// überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           	if ( strlen($sTmpStr) == 0 ) {
               		// ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               		// und den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           	}
           	else
           	{
               		// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               		// den Eintrag der Ausgabevariabel hinzufügen
               		$sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="'.$cfg_css_link.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;          
           	}  // end if
	}
	


        } // end while
	
    }  // end foreach

    // END Zeichen $strEND anfügen
    $sTmpStr = $sTmpStr . $strEND;

    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo $sTmpStr;
  } // end if (is_array)


}


if ( $sn_navmod != "multiuse" ) {
$sn_navmod = "multiuse";


function sn_check_if_child ( $l_idcat, $l_paridcat )
{
	$bResult = false;
	$l_int   = $l_idcat;

	while ( $l_int != 0 && $l_int != $l_paridcat )
	{
		$l_int = get_parentid_from_idcat ( $l_int );

		if ( $l_int == $l_paridcat )
		{
			$bResult = true;
		} // end if
	} // end while
	
	return $bResult;
} // check_if_child

function get_parentid_from_idcat ( $l_idcat )
{
	$ldb = new DB_Contenido;
	$lsql= "SELECT * 
		FROM 	".$cfg["tab"]["cat"]." AS CAT,
              		".$cfg["tab"]["cat_lang"]." AS CATLANG
              
                WHERE	CAT.idcat = ".$l_idcat."
                     	AND CAT.idcat = CATLANG.idcat
                     	AND CATLANG.idlang = '$lang'
                     	AND CATLANG.visible = '1'";

	$ldb->query($lsql);

	while ( $ldb->next_record() )
	{
		$l_parid = $ldb->f("parentid");
	}

	return $l_parid;

} // end function get_parentid_from_idcat

} // end MULTIUSE Funktions
?> 
Im Post vorher war noch ein kleiner Denkfehler drin.

Gruß

Stefan
Contenido 4.4.4/4.4.5 - Contenido 4.5.x

Module:sn_multinav für 4.5.x

i-fekt
Beiträge: 1520
Registriert: Mo 3. Jan 2005, 02:15
Wohnort: Chemnitz
Kontaktdaten:

Beitrag von i-fekt » Sa 8. Jan 2005, 21:12

Es fehlt nur noch eine Sache, dann ist dieses Modul perfekt.

Und zwar, dass nach einer bestimmten Anzahl an Einträgen ein bestimmtes Zeichen kommen soll?

Dadurch ließe sich eine Navi basteln, die das Alphabet immer mit jeweils 5 Buchstaben darstellt und dann in der nächsten Reihe die nächsten 5.

Das wäre so super genial, weil das Modul bis jetzt genau das ist was ich suche nur diese kleine Erweiterung fehlt noch.

Gesperrt