Seite 1 von 1

Modulkonfiguration im Backend bei Navigation einschränken

Verfasst: Di 29. Jun 2010, 09:27
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

Re: Modulkonfiguration im Backend bei Navigation einschränke

Verfasst: Di 29. Jun 2010, 16:41
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

Re: Modulkonfiguration im Backend bei Navigation einschränke

Verfasst: Di 29. Jun 2010, 18:23
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

Re: Modulkonfiguration im Backend bei Navigation einschränke

Verfasst: Di 29. Jun 2010, 21:31
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

Re: Modulkonfiguration im Backend bei Navigation einschränke

Verfasst: Mi 30. Jun 2010, 10:45
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