Horizontale Navigation?!!
-
- Beiträge: 21
- Registriert: Do 30. Sep 2004, 09:04
- Kontaktdaten:
NavigationsItems hinterlegen
Hallo erstmal und danke für die Navigation
Fange auch gerade erst mit contenido an, hoffe, ihr könnt mir weiterhelfen!
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
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!
Fange auch gerade erst mit contenido an, hoffe, ihr könnt mir weiterhelfen!
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
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
trigger_id
Contenido-Version 4.6.15
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
// ü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
-
- Beiträge: 21
- Registriert: Do 30. Sep 2004, 09:04
- Kontaktdaten:
-
- Beiträge: 21
- Registriert: Do 30. Sep 2004, 09:04
- Kontaktdaten:
html Asugabe bricht nach Ausgabe der Navigation ab
Nun bin ich so froh, dass die Navi läuft, da wird auf einmal die html-Ausgabe nach der korrekten Ausgabe der Navigation abgebrochen.
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 = ' ';
$eckkla_zu = '';
$eckkla_trenn = ' ';
$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>
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 = ' ';
$eckkla_zu = '';
$eckkla_trenn = ' ';
$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
trigger_id
Contenido-Version 4.6.15
-
- Beiträge: 21
- Registriert: Do 30. Sep 2004, 09:04
- Kontaktdaten:
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!
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
trigger_id
Contenido-Version 4.6.15
-
- Beiträge: 5478
- Registriert: Di 2. Mär 2004, 21:11
- Wohnort: Halchter, wo sonst? ;-)
- Kontaktdaten:
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).trigger_id hat geschrieben: Könnte die Problematik in der 2maligen Verwendung des Navigationsmoduls liegen?
Hatte das Modul allerdings extra 2mal angelegt...
ö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
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
Modul scheint nicht zu funktionieren ...
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
Für jegliche Hilfe bin ich dankbar.
Marcus
Bin contenido newbie und php-unkenner
Für jegliche Hilfe bin ich dankbar.
Marcus
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
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
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:
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:
Danke für deine Hilfe![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
Neue Modulversion ---> v0.5 alpha
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
SN_NavMod v0.5 alpha - INPUT
SN_NavMod v0.5 alpha - OUTPUT
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
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
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>";
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 = ':: ';
$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
?>
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
argx, nehtm als output bitte das hier:
Im Post vorher war noch ein kleiner Denkfehler drin.
Gruß
Stefan
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 = ':: ';
$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
?>
Gruß
Stefan
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.
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.