Artikellink Dropdown-Menue für 4.8.x anpassen?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Artikellink Dropdown-Menue für 4.8.x anpassen?

Beitrag von Halchteranerin » Fr 16. Mai 2008, 09:37

Hallo zusammen,

ich hatte folgendes Modul mit Contenido 4.4.4/4.4.5 im Einsatz.
INPUT

Code: Alles auswählen

/*********************************************** 
* CONTENIDO MODUL - INPUT 
* 
* Modulname   :       Artikellink Dropdown-Menue 
* Author      :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre 
* Copyright   :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre 
* Created     :     24-09-2002 
* Modified    :     09-03-2003 
* Letzte Änderung:  24-05-2004
* Contenido-Version: 4.4.4
************************************************/ 
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">
        <tr valign=\"top\">";

// Block ein oder ausschalten

echo"<td>Block:</td><td><input type=\"radio\" name=\"CMS_VAR[1]\" value=\"\""; 
if ("CMS_VALUE[1]" == "") {
echo "checked";
}
echo ">aus</td></tr><tr><td></td><td><input type=\"radio\" name=\"CMS_VAR[1]\" value=\"0\""; 
if ("CMS_VALUE[1]" == "0") {
echo "checked";
} 
echo ">an</tr><tr valign=\"top\">";

// Kategorie Wählen
$selected = "CMS_VALUE[0]";

echo "<td>Kategorie wählen:</td><td>
            <select name=\"CMS_VAR[0]\">";

            // 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

              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>
          </td>
        </tr>
        <tr valign=\"top\">";

// Startartikel

echo"<td>Startartikel:</td><td><input type=\"radio\" name=\"CMS_VAR[2]\" value=\"\""; 
if ("CMS_VALUE[2]" == "") {
echo "checked";
}
echo ">nein</td></tr><tr><td></td><td><input type=\"radio\" name=\"CMS_VAR[2]\" value=\"0\""; 
if ("CMS_VALUE[2]" == "0") {
echo "checked";
} 
echo ">ja</tr>	
        
      </table>";
OUTPUT:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Artikellink Dropdown-Menue
* Author      :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre
* Copyright   :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre
* Created     :     24-09-2002
* Modified    :     09-03-2003
* Letzte Änderung:  24-05-2004
* Contenido-Version: 4.4.4
************************************************/

if ("CMS_VALUE[1]" == "0") {

echo "<TABLE cellspacing=\"0\" border=\"0\"><FORM name=\"quicklink\"><TR><TD NOWRAP><SELECT NAME=\"jump\" onChange=\"if (this.options[this.selectedIndex].value.length!=0) location=this.options[this.selectedIndex].value\">";
echo"<OPTION VALUE=link>Bitte w&auml;hlen Sie</OPTION>";
// selected category
$selcat = "CMS_VALUE[0]";

// select all articles in category without start article

if ("CMS_VALUE[2]" == "0") {
$query = "SELECT ARTLANG.title,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.artsort ";

// select all articles in category with start article

} else {
$query = "SELECT ARTLANG.title,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'AND CATART.is_start = '0' ORDER BY ARTLANG.artsort";

}

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

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


// get articles
$is_empty=1;
while ($db->next_record()) {
	
  $articleID = $db->f("idartlang");
  $linkID = $db->f("idart");  
  $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID");  
  $headline = $db->f("title");
  
  
  // HTML template for one element
   echo"<OPTION VALUE=$link>$headline</OPTION>";

  unset($headline);
  $is_empty=0;
} // end while
if ($is_empty == 1) {
        echo "<OPTION>Keine Artikel</OPTION>";
}

echo"</SELECT></FORM>
<SCRIPT LANGUAGE=\"Javascript 1.1\"><!--
document.quicklink.jump.selectedIndex=0;
//--></SCRIPT></TD</TR></table>";

} else {}
?>
Ich habe nun ein Upgrade auf Contenido 4.8.3 mit gleichzeitiger Umstellung auf MySQL5, PHP5 und Konvertierung der Startartikel durchgeführt. Das obige Modul funktioniert ("natürlich") nicht mehr, da es unter anderem die alte Startartikeleigenschaft benutzt. Es funktioniert aber auch nicht mehr, wenn ich angebe, dass das Menü ohne Startartikel angezeigt werden soll, also wo das "CATART.is_start = '0'" fehlt.

Ich hatte versucht, mit Hilfe der Artikelliste von HerrB die SQL-Anweisung anzupassen, bin aber dabei leider erfolglos geblieben.

Kann mir bitte jemand helfen? :)
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Fr 23. Mai 2008, 11:57

Hmm, keiner? :(
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

Hammy
Beiträge: 26
Registriert: Sa 26. Jan 2008, 23:32
Kontaktdaten:

Beitrag von Hammy » So 25. Mai 2008, 01:27

momentan ist hier generell die Beteiligung ganz schön mau. Haben sich wohl noch nicht viele mit dem 4.8.x auseinander gesetzt...

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » So 25. Mai 2008, 06:43

Es ist weniger ein 4.8 als ein Startartikel-Problem, und das mit den Startartikeln war schon bei 4.6 so wie jetzt (und eben anders als bei 4.4), also nicht sooo neu. :(
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » So 25. Mai 2008, 14:43

Also bei mir funktioniert das mit der genannten Einschränkung ohne Probleme. Hast Du die Konfiguration mal neu abgespeichert? Der Parameter Block muss auf "an" stehen.

Wenn das dann geht, brauchst Du dann noch die Erweiterung für Startartikel?
Bis dann
Tono

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » So 25. Mai 2008, 17:01

tono, wegen des hier gegen Ende des Beitrags beschriebenes Problems:
http://forum.contenido.org/viewtopic.ph ... 152#118152

geht bei mir auf der Site im Augenblick GAR NICHTS :evil:, deswegen kann ich auch nicht mehr nachschauen, und ich weiß auch nicht mehr, was Block an/aus war. Ich weiß, dass bei einer Version (vermutlich an) ein Dropdown-Menü erschien, bei der anderen eine Liste in Tabellenform. Ich brauche die Tabelle in diesem Fall, aber es interessiert mich natürlich eigentlich eine Version, bei der beide Varianten gehen. Und die Änderung für die neue Form des Startartikels brauche ich auch. Bescheiden, nich'? :oops:


P. S. Vor dem Upgrade gingen beide Versionen, mit Dropdown und mit Tabelle.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 26. Mai 2008, 11:52

So, der Großteil geht wieder, also das andere Problem ist zumindest beseitigt worden, und vielleicht bin ich auch die errorlog-Einträge wegen der Statistik los. Aber ich konnte auch wegen dieses Moduls gucken. Wie du schon sagtest, mit Block an geht es, nur dass der Startartikel mit ausgegeben wird und die Sortierung sehr komisch ist. Angeblich wird nach Sortierschlüssel sortiert, alle sind aber auf 0, und es ist auch nicht die Reihenfolge, in der die Artikel angelegt wurden. Aber das ist auch erstmal egal.

Was also nicht geht ist "Block aus" und eben die Sache mit dem Startartikel.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Mo 26. Mai 2008, 14:15

OK, in dem Modul das Du gepostet hast kann mit Block aus gar nichts gehen, denn der Code der dann ausgeführt wird ist:

Code: Alles auswählen

else{}
Ich glaube Du kannst Dir vorstellen dass da nich viel bei rumkommt. Das Modul ist also nicht komplett.

Zu der Sortierung ist zu sagen, wenn alle artsort-Einträge 0 sind ist die Reihenfolge undefiniert. Häufig gibt MySQL dann die Einträge in der Erstellungsreihenfolge zurück, aber das ist nur "Zufall".

Das Statement für den Startartikel schreib ich Dir nachher um.
Bis dann
Tono

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Mo 26. Mai 2008, 22:18

Hier die Modulversion mit neuer Startartikelmimik. 8)

INPUT:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :       Artikellink Dropdown-Menue
* Author      :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre
* Copyright   :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre
* Created     :     24-09-2002
* Modified    :     09-03-2003
* Letzte Änderung:  24-05-2004
* Modified    :     26-05-2008 Tobias Klonk (ported to 4.6 & 4.8)
* Contenido-Version: 4.6 & 4.8 (start_compatible=false)
************************************************/
echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">
        <tr valign=\"top\">";

// Block ein oder ausschalten

echo"<td>Block:</td><td><input type=\"radio\" name=\"CMS_VAR[1]\" value=\"\"";
if ("CMS_VALUE[1]" == "") {
echo "checked=\"checked\"";
}
echo ">aus</td></tr><tr><td></td><td><input type=\"radio\" name=\"CMS_VAR[1]\" value=\"0\"";
if ("CMS_VALUE[1]" == "0") {
echo "checked=\"checked\"";
}
echo ">an</tr><tr valign=\"top\">";

// Kategorie Wählen
$selected = "CMS_VALUE[0]";

echo "<td>Kategorie wählen:</td><td>
            <select name=\"CMS_VAR[0]\">";

            // 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

              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>
          </td>
        </tr>
        <tr valign=\"top\">";

// Startartikel

echo"<td>Startartikel:</td><td><input type=\"radio\" name=\"CMS_VAR[2]\" value=\"\"";
if ("CMS_VALUE[2]" == "") {
echo "checked=\"checked\"";
}
echo ">nein</td></tr><tr><td></td><td><input type=\"radio\" name=\"CMS_VAR[2]\" value=\"0\"";
if ("CMS_VALUE[2]" == "0") {
echo "checked=\"checked\"";
}
echo ">ja</tr>   
       
      </table>";
OUTPUT:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Artikellink Dropdown-Menue
* Author      :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre
* Copyright   :     Mathias Berkenkamp, Jose Rodriguez, Ekkehard Dörre
* Created     :     24-09-2002
* Modified    :     09-03-2003
* Letzte Änderung:  24-05-2004
* Modified    :     26-05-2008 Tobias Klonk (ported to 4.6 & 4.8)
* Contenido-Version: 4.6 & 4.8 (start_compatible=false)
************************************************/

if ("CMS_VALUE[1]" == "0") {

echo "<TABLE cellspacing=\"0\" border=\"0\"><FORM name=\"quicklink\"><TR><TD NOWRAP><SELECT NAME=\"jump\" onChange=\"if (this.options[this.selectedIndex].value.length!=0) location=this.options[this.selectedIndex].value\">";
echo"<OPTION VALUE=link>Bitte w&auml;hlen Sie</OPTION>";
// selected category
$selcat = "CMS_VALUE[0]";


if ("CMS_VALUE[2]" == "0") {
// select all articles in category with start article
$query = "SELECT ARTLANG.title,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.artsort ";

} else {
// select all articles in category without start article
$query = "SELECT ARTLANG.title,ARTLANG.idart, ARTLANG.idartlang FROM ".$cfg["tab"]["cat_art"]." AS CATART, ".$cfg["tab"]["cat_lang"]." AS CATLANG, ".$cfg["tab"]["art_lang"]." AS ARTLANG ".
         "WHERE CATART.idcat = '$selcat' AND ARTLANG.idart = CATART.idart AND ARTLANG.idlang = '$lang' AND ".
         "ARTLANG.online = '1'AND ARTLANG.idartlang <> CATLANG.startidartlang AND CATLANG.idcat = '$selcat' AND CATLANG.idlang = '$lang' ". 
         "ORDER BY ARTLANG.artsort";

}

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

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


// get articles
$is_empty=1;
while ($db->next_record()) {
   
  $articleID = $db->f("idartlang");
  $linkID = $db->f("idart"); 
  $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$selcat&idart=$linkID"); 
  $headline = $db->f("title");
 
 
  // HTML template for one element
   echo"<OPTION VALUE=$link>$headline</OPTION>";

  unset($headline);
  $is_empty=0;
} // end while
if ($is_empty == 1) {
        echo "<OPTION>Keine Artikel</OPTION>";
}

echo"</SELECT></FORM>
<SCRIPT LANGUAGE=\"Javascript 1.1\"><!--
document.quicklink.jump.selectedIndex=0;
//--></SCRIPT></TD</TR></table>";

} else {}
?>
Bis dann
Tono

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mo 26. Mai 2008, 23:12

tono hat geschrieben:OK, in dem Modul das Du gepostet hast kann mit Block aus gar nichts gehen, denn der Code der dann ausgeführt wird ist:

Code: Alles auswählen

else{}
Ich glaube Du kannst Dir vorstellen dass da nich viel bei rumkommt.
Halt mich für bekloppt (ich bin selbst kurz davor :twisted:) ... Wo du Recht hast, hast du Recht. AbeRRR ...

Ich habe drei Module: Artikelliste_Sortierschlüssel, Artikellink_Dropdown-Menue und Artikellink_Dropdown-Menue_Sortierschlüssel. Die Namen sollen selbsterklärend sein.

Das Template habe ich inzwischen mehrmals geändert, daher weiß ich nun nicht mehr 100%ig, welches Modul nun eingebunden war. Aber in Artikelliste_Sortierschlüssel wird definitiv nach dem Sortierschlüssel sortiert (ORDER BY ARTLANG.artsort), und meine Tabellen waren definitiv alphabetisch nach dem Titel sortiert. In Artikellink_Dropdown-Menue steht ein ORDER BY ARTLANG.title. Aber das Modul endet ebenfalls mit

Code: Alles auswählen

else {}
?>
wie Artikellink_Dropdown-Menue_Sortierschlüssel auch.

WAS GEHT HIER AB??? Was sagen deine hellseherischen Fähigkeiten? :)
tono hat geschrieben:Zu der Sortierung ist zu sagen, wenn alle artsort-Einträge 0 sind ist die Reihenfolge undefiniert. Häufig gibt MySQL dann die Einträge in der Erstellungsreihenfolge zurück, aber das ist nur "Zufall"
Das Gefühl hatte ich auch.

Danke erstmal für die Änderung, die kann ich hoffentlich auch für Artikelliste_Sortierschlüssel gebrauchen, aber ich würde gerne das Ganze erstmal entwirren. :oops: Zur Not kann ich beim obigen Modul die Sortierung ändern, aber diese Dropdown-Geschichte gefällt mir an der Stelle, wo ich es haben möchte, nicht wirklich.
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey » Fr 11. Jul 2008, 11:16

Hallo,

hab auch das Modul eingebaut. Funktioniert prima in 4.8.6

Kann mir jemand sagen was ich im Modul wo ändern muss, damit im Drop-Down nicht "Bitte wählen Sie" als Default-Wert steht sondern gleich der Startartikel?


Ich kann leider nett? :oops:

Danke und Grüße,
stefkey

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Sa 12. Jul 2008, 16:27

Ich glaube Du brauchst nur im Output die Zeile wegzulassen:

Code: Alles auswählen

echo"<OPTION VALUE=link>Bitte w&auml;hlen Sie</OPTION>";
Bis dann
Tono

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey » Sa 12. Jul 2008, 16:53

stimmt, aber es wird nicht der Startartikel angezeigt,
sondern ein anderer. Wie kann ich den Startartikel auswählen?
Außerdem wirde dann nach der Auswahl nicht der Artikel angezeigt der ausgewählt wurde sondern immer wieder der gleiche wie zu Beginn.

Ist sicherlich ne größere Sache, oder?


Besten Dank und Grüße,
stefkey

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Di 15. Jul 2008, 15:24

stefkey hat geschrieben:Ist sicherlich ne größere Sache, oder?
Leider ja. So im vorübergehen hätt' ich gerne geholfen, aber hier muss sich jemand richtig reindenken.
Bis dann
Tono

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Di 15. Jul 2008, 21:03

hmm, ohne es auszuprobieren, was mir gerade spontan einfällt: im Output ist doch ein
ORDER BY ARTLANG.artsort
enthalten, d. h. es wird nach dem Sortierschlüssel sortiert. Wenn du dem Startartikel den Sortierschlüssel 1 gibst, und den anderen höhere Zahlen, steht da nicht der Startartikel zuerst?
Bitte keine unaufgeforderten Privatnachrichten mit Hilfegesuchen schicken. WENN ich helfen kann, dann mache ich das im Forum, da ich auch alle Postings lese. PN werden nicht beantwortet!

Gesperrt