Modulkonfiguration im Backend bei Navigation einschränken

Gesperrt
lunsen_de
Beiträge: 302
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Modulkonfiguration im Backend bei Navigation einschränken

Beitrag von lunsen_de »

Hallo,

bei einer Seite, die am Ende ca. 300 Kategorien haben wird, setze ich auf allen Seiten im Footerbreich die vpNavigation ein (die gesuchte Auswahlmöglichkeit ist aber bei nahezu allen Navigationen gleich).
Es werden in der Sitemap/Naviagtion nur 2 Ebenen ausgegeben, das ist kein Problem und alles schon gelöst.

Um aber im Backend bei der Artikelkonfiguration nicht den Überblick zu verlieren, möchte ich beim Modul die Auswahlmöglichkeiten des zu wählenden Baumes auf 2 Ebenen einschränken.
Also Baum sieht in etwa so aus:

Punkt 1
---Punkt 1.1
------Punkt 1.1.1
------Punkt 1.1.2
---Punkt 1.2
Punkt 2
---Punkt 2.1
------Punkt 2.1.1
------Punkt 2.1.2
---Punkt2.2
Punkt 3

Im Backend werden normalerweise alle Kategorien im Dropdown aufgelistet. Durch "... AND A.level = '1' ..." im Modulinput kann ich es auf EIN Level beschränken.
Allerdings brauch ich 2 Level. Wie würde diese Eintrag lauten, wenn ich Level 0 UND 1 in der Artikelkonfig sehen will.

D.H. ich möchte in der Artikelkonfig im Dropdown sehen:
Punkt 1
---Punkt 1.1
---Punkt 1.2
Punkt 2
---Punkt 2.1
---Punkt2.2

Was muss man hierzu im Input ergänzen/einfügen?

Jetzt noch zum Idealfall: Kann man dann vielleicht auch noch eine Kategorie auf Level 0 (in diesem Beispiel Punkt3) auschließen, also, dass Sie nicht im Dropdown erscheint?

Ich hoffe auf Hilfe.

Hier nochmal der gesamte Input

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :	    vpSitemap 0.4
* Author      :     Ingo van Peeren
* Copyright   :     Ingo van Peeren (ingo@van-peeren.de)
* Created     :     2005-01-14
* Modified    :     2006-09-07
* Credits     :     Nik Wyss & juergen@sotonic.de
************************************************/

$selected = "CMS_VALUE[0]"; 

?>
<table cellspacing="0" cellpadding="10" border="0"> 
  <tr valign="top"> 
    <td>Kategorie wählen:</td> 
    <td><?php echo "<select name=\"CMS_VAR[0]\">";?> 
        <option value="0">---Alle---</option>
<?php
// alle Kategorien auslesen 
$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
            AND A.level     = '1'
          ORDER BY A.idtree"; 

// Query ausführen
$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 ++) { 
  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  

?>
    </select> 
    </td> 
  </tr> 
  <tr style="display:none;"> 
    <td>Anzahl Ebenen:</td> 
    <td><input type="text" name="<?php echo "CMS_VAR[1]"; ?>" value="<?php echo "CMS_VALUE[1]"; ?>"></td> 
  </tr>
  <tr style="display:none;">
    <td>Ebene "0" anzeigen:</td>
<?php
  echo "<td><INPUT TYPE=\"radio\" NAME=\"CMS_VAR[2]\" VALUE=\"1\"";
  if ("CMS_VALUE[2]" == "1") {
    echo "checked=checked";
  }
  echo "> ja
<input type=\"radio\" name=\"CMS_VAR[2]\" value=\"0\"";
  if ("CMS_VALUE[2]" == "0") {
    echo "checked=checked";
  }
  echo "> nein </td></tr>";
  echo "      </table>"; 
MFG lunsen_de
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Modulkonfiguration im Backend bei Navigation einschränke

Beitrag von xmurrix »

Das sollte mit folgender Bedingung gehen:

Code: Alles auswählen

...
    AND C.visible=1
    AND (A.level = '1' OR A.level = '2')
    ORDER BY A.idtree
...
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
lunsen_de
Beiträge: 302
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Modulkonfiguration im Backend bei Navigation einschränke

Beitrag von lunsen_de »

Vielen Dank. Funktioniert.

Hast du jetzt noch eine Idee, wie ich (die idcat von) Punkt3 wegblenden/ausschließen kann?

Gruß lunsen_de
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Modulkonfiguration im Backend bei Navigation einschränke

Beitrag von xmurrix »

Wenn es sich bei "Punkt3" nur um eine Kategorie ohne Unterkategorien handelt, geht das so:

Code: Alles auswählen

...
WHERE
    A.idcat <> {ID_DER_KATEGORIE}
    A.idcat=B.idcat
...
Der Platzhalter {ID_DER_KATEGORIE} iost gegen die Id der auszuschließenden Kategorie zu ersetzen.

Hat "Punkt3" aber mehrere Unterkategorien, müsstest du im ersten Schritt alle IDs ermitteln und die Abfrage entsprechend anpassen oder die Logik der Ausgabe so anpassen, dass "Punkt3" und sämtliche Unterkategorien in der Schleife übersprungen werden.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
lunsen_de
Beiträge: 302
Registriert: Mo 17. Okt 2005, 20:26
Wohnort: Weimar
Kontaktdaten:

Re: Modulkonfiguration im Backend bei Navigation einschränke

Beitrag von lunsen_de »

Hallo, danke für die Hilfe. Es funktioniert.

Ich musste lediglich die Schreibweise etwas anpassen und das AND einfügen:

WHERE
A.idcat <> '22' AND
A.idcat <> '30' AND
A.idcat=B.idcat

Für mehrere einfach das AND und die Reihenfolge: immer erst alle IDs von Ebene 0, dann Ebene 1 usw., ansonsten läuft es nicht.

Nochmal Danke.

Gruß lunsen_de
Gesperrt