Seite 1 von 1

Artikelliste als Dropdownmenü

Verfasst: Do 1. Jul 2004, 22:43
von ReneWho
Hallo ihrs,

ich habe versucht eine artikkelliste als dropdownmenü zu bauen.
dafür habe ich mir das artikelliste modul von Jan Lengowski geschnappt
und eine dreamweaverextention. ich habe jedoch ein kleineres problem
mit dem script.

folgender code steht im header des layouts

Code: Alles auswählen

<script type="text/javascript">
<!--
			function MM_jumpMenu(targ,selObj,restore){ 
				if (!(selObj.options[selObj.selectedIndex].value) == "") {
				  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
				  if (restore) selObj.selectedIndex=0;
				}
			}
			//-->
</script>
damit wird die aktion gemeistert, die die ausgewälte rubrik im dropdown
menü aufruft.

der code im contenido modul für die ausgabe sieht folgendermaßen aus

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* ARTIKELLISTE
*
* Artikelliste Head 1
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* Basierend auf dem Modul von Jan Lengowski
************************************************/

// second db class instance
$db2 = new DB_Contenido;

// selected category
$selcat = "CMS_VALUE[0]";

 if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' ORDER BY ARTLANG.title DESC";

// execute query
$db->query($query);

unset($articleID);
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
  $articleID[] = $db->f("idartlang");
  $linkID[] = $db->f("idart");
} // end while

// loop through subarticles

echo '
<form>
<select name="ContactCentre" class="formObj" onChange="MM_jumpMenu('parent',this,0)">
<option value="selected">Bitte ausw&auml;hlen...</option>
';

if (is_array($articleID)) {

    foreach ($articleID as $key => $value) {

          // select all CMS variables of the article
          $sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
          $db->query($sql);
          $db->next_record();
          $head = $db->f("value");

          if ( strlen($head) > "CMS_VALUE[3]") {
            $head = substr($head, 0, "CMS_VALUE[3]");
            $head .= '..';
          }

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");
		  
          echo '<option value="'.$link.'">'.urldecode($db->f("value")).'</option>';

    } // end while



          unset($headline);
        unset($text);
        
    } // end foreach
    
} // end if (is_array)

echo '</select></form>';


?>
Problem: die contenidoseite kann plötzlich nicht mehr angezeigt
werden. ich denke es liegt an folgender code zeile:

Code: Alles auswählen

<select name="ContactCentre" class="formObj" onChange="MM_jumpMenu('parent',this,0)">
genauer am ('parent'). contenido hängt sich an den hochstrichen
auf. aber anführungszeichen gehen mit dem javascript nicht. hmpf
hat jemand eine idee?

gruß René

Verfasst: Do 1. Jul 2004, 23:58
von ReneWho
Ahrgh ich sollte um so eine uhrzeit nichts mehr mit scripterei
machen :-) fehler gefunden.

Wen es vielleicht für sich selbst interessiert, hier der
gesamte code für die modifizierte artikelliste als drop down
menü. Wie das ganze fertig aussieht ist unter
http://www.esa-gs.de/cms/
zu sehen.

INPUT Code für das Artikellistemodul

Code: Alles auswählen

/**
* Artikelliste mit I1,H1,T1
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* INPUT
*
* Author Jan Lengowski
* Copyright four for business AG
*/

// selected category
$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr valign=\"top\">
          <td>Kategorie wählen:</td>
          <td>
            <select name=\"CMS_VAR[0]\">";
            if($selected!="0" && $selected!=""){
             echo"<option value=\"0\">--- kein ---</option>";

            }else{
            echo"<option selected=\"selected\" value=\"0\">--- 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>
          <td>Überschrift</td>
          <td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\"></td>
        </tr>
        <tr>
          <td>Angezeigte Länge in Zeichen</td>
          <td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\"></td>
        </tr>

      </table>";

OUTPUT Code für das Artikellistemodul

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* ARTIKELLISTE
*
* Erstellt eine Liste mit allen Artikel bis
* auf den Startartikel.
*
* Basierend auf dem Modul von Jan Lengowski
************************************************/


// second db class instance
$db2 = new DB_Contenido;

// selected category
$selcat = "CMS_VALUE[0]";

 if($selcat!="0" && $selcat!=""){

// select all articles in category widthout start article
$query = "SELECT ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".
          $cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1' ORDER BY ARTLANG.title DESC";

// execute query
$db->query($query);

unset($articleID);
unset($linkID);

// get id's of sub articles
while ($db->next_record()) {
  $articleID[] = $db->f("idartlang");
  $linkID[] = $db->f("idart");
} // end while

// loop through subarticles

echo '
<form name="form">
<select name="link" class="formObj" onChange="window.location.href = document.form.link.options[document.form.link.selectedIndex].value;">
<option selected>Bitte ausw&auml;hlen...</option>
';

if (is_array($articleID)) {

    foreach ($articleID as $key => $value) {

          // select all CMS variables of the article
          $sql = "SELECT * FROM ".$cfg["tab"]["content"]." WHERE idartlang = '$value' AND idtype = '1' AND typeid = '1'";
          $db->query($sql);
          $db->next_record();
          $head = $db->f("value");

          if ( strlen($head) > "CMS_VALUE[3]") {
            $head = substr($head, 0, "CMS_VALUE[3]");
            $head .= '..';
          }

          // link
          $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID[$key]&m=$m&s=$s");
		  
          echo '<option value="'.$link.'">'.urldecode($db->f("value")).'</option>';

    } // end while



          unset($headline);
        unset($text);
        
    } // end foreach
    
} // end if (is_array)

echo '</select></form>';


?>

Und wer das ganze dann auch noch mit einem style versehen will,
hier habe ich mal einen dezenten angelegt.

Code: Alles auswählen

.formObj {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #333333;
	background-color: #FFFFFF;
	border: 1px solid #666666;
}
grüßels René

Re: Artikelliste als Dropdownmenü

Verfasst: Fr 2. Jul 2004, 06:23
von Halchteranerin
Hi,
ReneWho hat geschrieben: ich habe versucht eine artikkelliste als dropdownmenü zu bauen.
nicht, dass ich Dir jetzt den Wind aus den Segeln nehmen will :wink:, aber so ein Modul gibt's/gab's schon. Irgendwo hier im Forum ... Manchmal spart Suchen doch etwas Arbeit. :)

Gruss
Christa

Verfasst: Fr 2. Jul 2004, 10:20
von ReneWho
Ich habe schon gesucht und gesucht aber nichts gefunden.
für das modul hab ich vielleicht 30 minuten gebraucht... :-)
finde der aufwand hat sich gelohnt.

René

Verfasst: Fr 2. Jul 2004, 14:45
von Zeitgeist
ja, sieht nett/brauchbar aus

wo ist das anmeldeformular zum Vogelweitwurfexperten? :wink:

TimeSpirit

keine anzeige im dropdown menü

Verfasst: Di 26. Okt 2004, 13:53
von degi73
hallo, das menü erscheint zwar und die artikel wwerden richtig verlinkt, aber der text im dropdown ist nicht sichtbar .....

Verfasst: Di 26. Okt 2004, 13:55
von degi73
ach ja , wie kann ich denn den style einbauen aufrufen etc ???

Verfasst: Mo 28. Feb 2005, 10:04
von mko
Bei mir wird leider immer der Startartikel mit ins Dropdownmenü geschrieben, obwohl das eigentlich nicht sein sollte. Habe den Code 1:1 von oben übernommen. Hat wer eine Idee...

Verfasst: Mo 28. Feb 2005, 19:53
von mko
Danke - hat sich erledigt. Ich habe das Modul vom Downloadbereich (www.contenido.org) genommen und das funktioniert.

Great

Verfasst: Do 5. Okt 2006, 17:18
von quokka
Hi, cool mod.
In latest contenido version i see this after the menu:
*/ ?>

Any idea?
Thanks in advance.
Quokka