Horizontale Navigation?!!
Sodele,
hab dat mal gecodet und das Modul mal reingehängt, Contenido/PHp meldet soweit mal kein Fehler, hab nur die reine Funktionaöität nicht getestet.
Im ModulConfig Bereich gibt es zwei Neue Eingabefelder, wobei für das Eingabe Fehld der ITEMS-Anzahl, Nach denen die Zeichenkette eingefügt werden soll, nicht auf gültigkeit gebrüft wird, wobei es beim Nichtsetzen oder einer enthaltenen Zeichen natürlcih in der Ausgabe rein gar nichts passiert ( bzw. sollte es dies. ). Es sei nochmal darauf hingewiesen, das dies nur ne fast&done&dirty Lösung ist, und daher auf entsprechende Überprüfungen verzichtet wurde. Im MultiNav werd ich wohl das ganze als EingabeMatrix implementieren, aber wohl auch erst in der übernächsten Version, da ich v1 davon nun möglichst bald releasen möchte.
So, nun zur NavMod:
Nenn es einfach mal SN_NavMod v0.6 alpha
HINWEIS: Ungetestet, daher verwendung auf eigene Gefahr !
History
INPUT
OUTPUT
@craxx einfach mal probieren, oder warten bis der Test-Begeisterte Zeitgeist dies getan hat *g*.
So, definit Last Change am SN_NavMod ..... , alles andere wird nur noch ins MultiNav fließen
so long Stefan
hab dat mal gecodet und das Modul mal reingehängt, Contenido/PHp meldet soweit mal kein Fehler, hab nur die reine Funktionaöität nicht getestet.
Im ModulConfig Bereich gibt es zwei Neue Eingabefelder, wobei für das Eingabe Fehld der ITEMS-Anzahl, Nach denen die Zeichenkette eingefügt werden soll, nicht auf gültigkeit gebrüft wird, wobei es beim Nichtsetzen oder einer enthaltenen Zeichen natürlcih in der Ausgabe rein gar nichts passiert ( bzw. sollte es dies. ). Es sei nochmal darauf hingewiesen, das dies nur ne fast&done&dirty Lösung ist, und daher auf entsprechende Überprüfungen verzichtet wurde. Im MultiNav werd ich wohl das ganze als EingabeMatrix implementieren, aber wohl auch erst in der übernächsten Version, da ich v1 davon nun möglichst bald releasen möchte.
So, nun zur NavMod:
Nenn es einfach mal SN_NavMod v0.6 alpha
HINWEIS: Ungetestet, daher verwendung auf eigene Gefahr !
History
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL
*
* Modulname : SN_NavMod
* Modulversion : 0.6 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.
*
************************************************/
11.01.2005
==========
IN Ausgabefeld ohne Überprüfung auf Gültigkeit für
" Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzahl
und für
" Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzufügende Zeichenkette
OUT Hinzufügen der Funktionalität zur Outputgenerierung für
" Hinzufügen einer Zeichenkette nach N-Navigationsitems "
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:";
$cfg_addstrafternumitems_num = "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var = "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc = "Hinzufügen nach N-Navigationselementen - Anzahl:";
$cfg_addstrafternumitems_str = "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var = "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc = "Hinzufügen nach N-Navigationselementen - Zeichenkette:";
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
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_addstrafternumitems_num
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_num = "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var = "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc = "Hinzufügen nach N-Navigationselementen - Anzahl:";
*/
echo " <tr valign=\"top\">
<td class=\"text_medium\">".$cfg_addstrafternumitems_num_desc."</td>
<td class=\"text_medium\">";
echo " <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_num_var."\" value=\"".$cfg_addstrafternumitems_num."\">";
echo " </td>
</tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_str = "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var = "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc = "Hinzufügen nach N-Navigationselementen - Zeichenkette:";
*/
echo " <tr valign=\"top\">
<td class=\"text_medium\">".$cfg_addstrafternumitems_str_desc."</td>
<td class=\"text_medium\">";
echo " <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_str_var."\" value=\"".$cfg_addstrafternumitems_str."\">";
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]";
$cfg_addstrafternumitems_num = "CMS_VALUE[3210]";
$cfg_addstrafternumitems_str = "CMS_VALUE[3211]";
// * 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
$cntAddStrAfterNItems = 1;
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
// Wenn N-Item ausgegeben wurden ...
if ( $cntAddStrAfterNItems == $cfg_addstrafternumitems_num )
{
// Zeichenkette einfügen und Counter zurücksetzen
$sTmpStr = $sTmpStr . $cfg_addstrafternumitems_str;
$cntAddStrAfterNItems = 1;
}
else
{
// ansonsten Counter einfach um 1 erhöhen
$cntAddStrAfterNItems = $cntAddStrAfterNItems + 1;
} // end if
} // 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, definit Last Change am SN_NavMod ..... , alles andere wird nur noch ins MultiNav fließen
so long Stefan
naja, der errorlog eintrag sagt hauptsächich aus, das in irgendeinem fall ein query erzeugt wird und ausgeführt wird, das dann einen Fehler enthält weil eine Variabel nicht geüllt wird.
Für die Funktionalität ist dat wurscht, da in diesem Fall kein Handlungsbedarf besteht.
Für den Admin ist das natürlich Nervig, versteh ich auch .. nur ich hab ehrlich nicht die Zeit die entsprechenden Überprüfung noch in dieses Modul einfließen zu lassen ... zumindestens jetzt.
Eigentlich sollte dieses Modul ja nach der v0.5 alpha nicht mehr weiterentwickelt werden, zumindestens von meiner Seite .... vlt findet sich ja ein neuer Maintainer für dieses Modul ... ansonsten kann ich dich leider nur vertrösten bis ich wieder die Zeit für dieses Modul habe bzw. die Tests und weiterausbau meines MultiNavs entdlich abgeschlossen sind ... nur leider ist das so komplex, das da sehr viele Fälle getestet/entbugget werden muß.
So long
Stefan
Für die Funktionalität ist dat wurscht, da in diesem Fall kein Handlungsbedarf besteht.
Für den Admin ist das natürlich Nervig, versteh ich auch .. nur ich hab ehrlich nicht die Zeit die entsprechenden Überprüfung noch in dieses Modul einfließen zu lassen ... zumindestens jetzt.
Eigentlich sollte dieses Modul ja nach der v0.5 alpha nicht mehr weiterentwickelt werden, zumindestens von meiner Seite .... vlt findet sich ja ein neuer Maintainer für dieses Modul ... ansonsten kann ich dich leider nur vertrösten bis ich wieder die Zeit für dieses Modul habe bzw. die Tests und weiterausbau meines MultiNavs entdlich abgeschlossen sind ... nur leider ist das so komplex, das da sehr viele Fälle getestet/entbugget werden muß.
So long
Stefan
ok, hab mir dat ganze doch mal fix angeschaut.
hier also die v0.7 alpha
CHANGELOG
SN_NAVMOD - INPUT
SN_NAVMOD - OUTPUT
Mit dem Hinzufügen einer Überprüfung der $catPrev einstellung (siehe CHANGELOG) sollte das Problem mit dem ErrorLog gelöst sein.
Und zwar sollte der eintrag nur dann Erscheinen, wenn catPrev ( Zurück Kategorie ) nicht gesetzt bzw auf --KEIN-- gestellt war.
Ergo sollte folgendende Threads damit erledigt sein:
http://contenido.org/forum/viewtopic.ph ... highlight=
http://contenido.org/forum/viewtopic.ph ... highlight=
Mal ne Anmerkung Craxx .. ich find dat schon ein wenig komisch das du zu einem Problem an mindestens 3 Threads das Problem verschieden Darstellst, obwohl es immer nur um das Modul hier geht. Naja, jedem das seine. Nur in Zukunft folgednes .. Supp zu meinen Modulen immer nur im jeweiligen thread.
So long
Stefan
So long
Stefan
hier also die v0.7 alpha
CHANGELOG
Code: Alles auswählen
/***********************************************
* CONTENIDO MODUL
*
* Modulname : SN_NavMod
* Modulversion : 0.7 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 : 27-01-2005
*
* Beschreibung :
*
* Navigationsstruktur für Untermenüs mit 1 Navigationsebene,
* Ausgabe ist im Output Modul über Variabeln steuerbar.
*
************************************************/
27.01.2005
==========
OUT Zusätliche Überprüfung von $catPrev auf LEERSTRING und --kein-- hinzugefügt und
ausführung der HTLM-Output Generierung nur in dem Fall das $catPrev weder Leer noch
--KEIN-- enthält ==> ErrorLog Eintrag sollte dadurhc nicht mehr erscheinen.
11.01.2005
==========
IN Ausgabefeld ohne Überprüfung auf Gültigkeit für
" Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzahl
und für
" Hinzufügen einer Zeichenkette nach N-Navigationsitems " - Anzufügende Zeichenkette
OUT Hinzufügen der Funktionalität zur Outputgenerierung für
" Hinzufügen einer Zeichenkette nach N-Navigationsitems "
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:";
$cfg_addstrafternumitems_num = "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var = "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc = "Hinzufügen nach N-Navigationselementen - Anzahl:";
$cfg_addstrafternumitems_str = "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var = "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc = "Hinzufügen nach N-Navigationselementen - Zeichenkette:";
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
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_addstrafternumitems_num
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_num = "CMS_VALUE[3210]";
$cfg_addstrafternumitems_num_var = "CMS_VAR[3210]";
$cfg_addstrafternumitems_num_desc = "Hinzufügen nach N-Navigationselementen - Anzahl:";
*/
echo " <tr valign=\"top\">
<td class=\"text_medium\">".$cfg_addstrafternumitems_num_desc."</td>
<td class=\"text_medium\">";
echo " <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_num_var."\" value=\"".$cfg_addstrafternumitems_num."\">";
echo " </td>
</tr>";
// *********************************************************************************************************
// *** end cfg_css_linkhl
// *********************************************************************************************************
// *********************************************************************************************************
// *** cfg_css_linkhl
// *********************************************************************************************************
/*
$cfg_addstrafternumitems_str = "CMS_VALUE[3211]";
$cfg_addstrafternumitems_str_var = "CMS_VAR[3211]";
$cfg_addstrafternumitems_str_desc = "Hinzufügen nach N-Navigationselementen - Zeichenkette:";
*/
echo " <tr valign=\"top\">
<td class=\"text_medium\">".$cfg_addstrafternumitems_str_desc."</td>
<td class=\"text_medium\">";
echo " <input class=\"text_medium\" type=\"text\" name=\"".$cfg_addstrafternumitems_str_var."\" value=\"".$cfg_addstrafternumitems_str."\">";
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]";
$cfg_addstrafternumitems_num = "CMS_VALUE[3210]";
$cfg_addstrafternumitems_str = "CMS_VALUE[3211]";
// * get catPrec Category and output CatName as [ BackTo ] nav item
if ($catStart != "" && $catStart != "--kein--" ) {
$sTmpStr = "";
if ( $catPrev != "" && $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
} // end $catPrev überprüfung
$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
$cntAddStrAfterNItems = 1;
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
// Wenn N-Item ausgegeben wurden ...
if ( $cntAddStrAfterNItems == $cfg_addstrafternumitems_num )
{
// Zeichenkette einfügen und Counter zurücksetzen
$sTmpStr = $sTmpStr . $cfg_addstrafternumitems_str;
$cntAddStrAfterNItems = 1;
}
else
{
// ansonsten Counter einfach um 1 erhöhen
$cntAddStrAfterNItems = $cntAddStrAfterNItems + 1;
} // end if
} // 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
?>
Und zwar sollte der eintrag nur dann Erscheinen, wenn catPrev ( Zurück Kategorie ) nicht gesetzt bzw auf --KEIN-- gestellt war.
Ergo sollte folgendende Threads damit erledigt sein:
http://contenido.org/forum/viewtopic.ph ... highlight=
http://contenido.org/forum/viewtopic.ph ... highlight=
Mal ne Anmerkung Craxx .. ich find dat schon ein wenig komisch das du zu einem Problem an mindestens 3 Threads das Problem verschieden Darstellst, obwohl es immer nur um das Modul hier geht. Naja, jedem das seine. Nur in Zukunft folgednes .. Supp zu meinen Modulen immer nur im jeweiligen thread.
So long
Stefan
So long
Stefan
grml..funkt wie gewohnt gut und zuverlässig
Habs bisher im kleinsten Modus eingebunden aber bisher keine Probs
wie immer "stolz" auf Dich
Gruß
TimeSpirit
PS: grml grml...ich setz das ja mit dem "IFrame" Modul ein, wenn ich doch nur das Template ändern könnte ohne in alle Unterseiten rein zu müssen und die anzupassen....jedesmal 15 Seiten/configs zu ändern...da müsste es mal "Globale" Möglichkeiten geben...
www.Tropenhaus-Hamburg.de -> Lebendtiere
Habs bisher im kleinsten Modus eingebunden aber bisher keine Probs
wie immer "stolz" auf Dich
Gruß
TimeSpirit
PS: grml grml...ich setz das ja mit dem "IFrame" Modul ein, wenn ich doch nur das Template ändern könnte ohne in alle Unterseiten rein zu müssen und die anzupassen....jedesmal 15 Seiten/configs zu ändern...da müsste es mal "Globale" Möglichkeiten geben...
www.Tropenhaus-Hamburg.de -> Lebendtiere
Rechtschreibfehler sind nicht als "Fehler" sondern als Hommage an Pisa zu verstehen
Keine Einträge im Errorlog
Contenido 4.4.4 - Firefox -
Keine Einträge im Errorlog
Contenido 4.4.4 - Firefox -