Seite 1 von 1

Dropdown in Artikelkonfiguration

Verfasst: Di 30. Sep 2008, 16:29
von deeloco
Hätte da mal eine kleine Frage an die Profis hier. Bin leider nicht so die Php leuchte :P

Ich möchte ein Modul schreiben das mir alle XML Datein aus einem bestimmten Verzeichnis (in meinem Fall templates) ausliest und diesen dann in der Artikelkonfiguration als Dropdown liste ausgibt.

Mit der Xml soll ein Flash gefüttert werden. Jetzt habe ich folgendes Problem. Das kleine Script das ich geschrieben habe funktioniert wenn ich es im Output des Moduls platziere wunderbar. Sobald ich es in den Modulinput schiebe (wo es ja auch normalerweise sein muss) ist das Dropdown leer und gibt mir nichts aus. :(

Code: Alles auswählen

?><?php

//////// MODUL EINGABE

//verzeichnis lesen
$mydir = getcwd()."/templates/"; 
$verz = dir($mydir); 
while($entry=$verz->read()){ 
        if($entry != "." && $entry != ".."){ 
        $dateinamen[] = $entry; 
    } 
} 
$verz->close(); 

//Ausgabe 

echo '<select name="CMS_VALUE[1]">';

rsort($dateinamen); 
while(list($key, $val) = each($dateinamen)) { 

  if(substr($val, -9) == ".xml.html") { 
        echo '<option value="'.$val.'">'.$val.'</option>';
    } 
}
echo '</select>';
?><?php

.xml.html ergibt sich daraus das contenido .html automatisch an neue modultemplates anfügt. Ist aber kein problem da Flash da auch so verarbeiten kann.

Die Ausgabe des Muduls fehlt hier noch die ist auch nicht das Problem ich würde nur gerne wissen warum mir der Script im Eingabe bereich des Moduls nichts mehr ausgibt. Im Ausgabe Bereich jedoch tadellos den inhalt ausliest und auch ausgibt. Hat jemand einen Tip ??

Verfasst: So 5. Okt 2008, 13:04
von Oldperl
Hallo deeloco,

getcwd() gibt dir das Arbeitsverzeichnis zurück. welches aber für Modul In- und Output unterschiedlich ist. Da der Input nur im Backend vorhanden ist, wird dort das Arbeitsverzeichnis des Backend genommen, dort liegt aber dein template-Verzeichnis nicht.

Gruß aus Franken

Ortwin

Verfasst: So 5. Okt 2008, 21:31
von OliverL
ich benutze das:

Code: Alles auswählen

<select name="CMS_VAR[1]" style="width: 100%;" class="text_medium">
  <option value=""><?php echo i18n("Please select"); ?></option>
  <?php
    $myDir = opendir($cfgClient[$client]['tpl']['path']);
    $myTemplates = array();
            
    while( $myFile = readdir($myDir) ) {
        if( $myFile != '.' and $myFile != '..' and substr( $myFile,-4,4 ) == ".xml" ) 
            $myTemplates[] = '<option value="'.$myFile.'">'.$myFile.'</option>'."\n";
    }
    
    sort($myTemplates);
    $myTemplates = implode('', $myTemplates);
    $myTemplates = str_replace('value="'."CMS_VALUE[1]".'"', 
                                 'value="'."CMS_VALUE[1]".'" selected="selected"',
                                 $myTemplates);
    echo $myTemplates;
  ?>
</select>

Info:
1. im Select-Name muss CMS_VAR stehen und nicht CMS_VALUE
2. Als Basis-Verzeichnis nimmst du am besten die Client-Configs:
$cfgClient[$client]['tpl']['path']
3. im Output kannst du dann das machen:
$xml_template = $cfgClient[$client]['path']['htmlpath'].'template/'."CMS_VALUE[1]";

mfg OliverL

Verfasst: Do 23. Okt 2008, 12:33
von deeloco
Vielen Dank ertmal für die Antwort.

Ich werde deine Variante mal testen.

Grüße

Sven