Hilfe - Suche - Mitglieder - Kalender
Vollansicht: CSS-Auswahl
Forum Sefrengo.org > Allgemeine Foren > Entwicklung
Marko Merl
Hallo Jungs,

ich bin gerade dabei ein Modul zu schreiben indem man auf jeder Seite, sofern man will, ein eigenes CSS-File auswaehlen kann. Habe hier soweit nichts anderes wie einfach eine SelectBox in dem man einfach die Farben auswaehlt u anhand der Farbe wird dann das richtige CSS genommen.

Dies funktioniert zZ nur als Modulkonfoguration - ist leider nicht sinnvoll :-).

Nun wollte ich fragen ob ihr mir hier helfen koennt, wie man in einem Modul-Source einfach eine DropDown bzw. Selectbox auf der Seite einbinden kann, sodass der Redaktuer dies auf der Seite aendern kann.
Also irgendwo auf der Seite ist dann einfach ein Bleistifft bei dem dies bearbeiten kann u dahinter dann ein DropDown (oder gleich ein DropDown waere hier egal - wie es leichter geht).

Habe da schon einiges probiert von den Seiten:
http://wiki.sefrengo.org/howto/eigene-module-schreiben
http://wiki.sefrengo.org/referenz/mipforms?s[]=mip&s[]=form

Ich schaffe es zwar mit dem Code im Modul unter Frontendausgabe
QUELLTEXT
<cms:mod type="select" id="1" title="Select Stylesheet" size="1" multiple="false" elementName="Green, Brown, Blue, Pink, Orange, Red, Lightblue"/>

ein DropDown auszugeben, jedoch wird dann der Wert automatisch bei jeder Seite ausgegeben im Preview. Und braeuchte diesen Wert aber als Variable.

Ev verstehe ich hier was falsch...


LG Marko
saschapi
Ich schreib da gerne morgen Abend oder übermorgen noch was genaueres dazu, hier aus zeitgründen erstmal nur ein kleiner Tipp:
Wenn du
QUELLTEXT
backslashes="true"
im CMS Tag setzt, kannst du das ganze als String in PHP nutzen. Hier ein Beispiel:

QUELLTEXT
$variablen['Veranstaltungsform'] =  <cms:mod type = "select" id = "10" title = "Veranstaltungsform" elementName = "Kurs, Wochenende, berufsbegleitend, Bildungsurlaub, eintägiges Seminar,mehrtägiges Seminar, mehrtägiges Seminar, Vollzeit, Vortrag/Kurzveranstaltung" menuoptions = "false"  addslashes="true"/>;

(Möglicherweise musst du halt noch eine typegroup dazu packen, da durch die menuoptions ="false" sonst kein editieren möglich ist! wink.gif

Probier mal. Wenn du weiterhin Schwierigkeiten kriegen wir das schon hin wink.gif

Liebe Grüße Sascha
Marko Merl
Hallo nochmal,

habe nun das mal ausprobiert. Folgendes kam dabei raus:
der SRC vom Modul - Frontendausgabe - sieht so aus:

QUELLTEXT
<CMSPHP>
$var = <cms:mod type = "select" id = "1" addslashes="true"/>;
</CMSPHP>
<cms:mod type="typegroup" elements="select[1]" title="Select Stylesheet"/>


Ich bekomme auch wunderschoen im Backend am editieren der Seite einen Bleistift wo ich dann zum Select Menu komme. Nur das ist ja leer, den ich weiss nun nicht, wo ich die Values hinpacke?!


LG Marko
saschapi
Das liegt daran, dass du das (bei mir oben vorhandene) Pflichtfeld "elementName" nicht genutzt hast. Darin werden die Selectelemente definiert. (Du kannst sogar andere Labels im Selectfeld haben als dann in der Variable gespeichert werden. Dazu nutzt du zusätzlich zu "elementName" noch "elementValue". In der gleichen Reihenfolge lassen sich so z.B. klingenden Auswahloptionen passende Werte zuordnen.)

Es gibt auch noch ein paar andere Elemente die interssant sein könnten, wie z.B. ein default Wert anzugeben oder die Seperierzeichen zu wählen (in meinem Beispiel ja Kommas). Schau mal in die passende Doku rein: Hier der Abschnitt zu dem CMS-Tag Select.


Ach ja, bitte nicht die ganzen alten Beiträge zitieren wink.gif Das wird sonst ein ewiger Rattenschwanz. Entweder einen kleinen Ausschnitt in den Quote Block auf den man sich bezieht oder einfach nur Antworten, denn der vorhergehende Beitrag ist ja eh oben drüber! (Hab das bei dir gerad rausgelöscht!
Marko Merl
Hallo,

alles klar, wird gemacht :-).

habe das nun hinbekommen u laeuft auch soweit. Nur wenn ich nun auf der Seite einen Wert auswaehle aus dem Select bekomme ich danach immer foglende Errormeldung auf der Seite:
QUELLTEXT
Fatal error: Call to undefined function type_output_select() in /var/www/web1/kunden/hulu/cms/inc/frontend.php(257) : eval()'d code on line 49


Der Code vom Module schaut nun so aus:
QUELLTEXT
<CMSPHP>
$style = <cms:mod type = "select" id = "1" title = "Select Stylesheet" elementName = "Green,Brown,Blue,Pink,Orange,Red,Lightblue" menuoptions = "false"  addslashes="true"/>;
$path = 'cms/css/';

if($style != '') {
$css = $path.$style.'.css';
echo '<link rel="StyleSheet" href="'.$css.'" type="text/css"  />';
}

</CMSPHP>
<cms:mod type="typegroup" elements="select[1]" title="Select Stylesheet"/>


Dieser wird bei dem Template bzw Layout im Header eingebunden.


LG Marko
saschapi
OK, soweit so gut. Hab noch einen Kniff vergessen, den du bei so einem Konstrukt brauchst. Sefrengo hat da ein Cache Problem. Mach mal folgendes drauß:

QUELLTEXT
<CMSPHP:CACHE>
//Alle Variablen, die nur innerhalb des gecachten PHPs sichtbar sind, auch für dynamisches PHP zur Verfügung stellen
$cms_mod['style'] = <cms:mod type = "select" id = "1" title = "Select Stylesheet" elementName = "Green,Brown,Blue,Pink,Orange,Red,Lightblue" menuoptions = "false"  addslashes="true"/>;

echo '<CMSPHP>';
if (is_array($cms_mod['value'])) {
foreach($cms_mod['value'] AS $k => $v){
    echo '$mvars["'.$k.'"] = "'. addslashes($v) .'";'."\n";
}}
echo '</CMSPHP>';
</CMSPHP:CACHE>


<CMSPHP>
$style = $mvars['style'];
$path = 'cms/css/';

if($style != '') {
$css = $path.$style.'.css';
echo '<link rel="StyleSheet" href="'.$css.'" type="text/css"  />';
}

</CMSPHP>
<cms:mod type="typegroup" elements="select[1]" title="Select Stylesheet"/>


<CMSPHP>


Ungeprüft, sollte aber laufen! wink.gif
Marko Merl
Hallo,
habe da nun ganz was anderes herausgefunden. man setzt einfach den ganzen Frontend Output unter
QUELLTEXT
<?php ?>

anstatt unter
QUELLTEXT
<CMSPHP> </CMSPHP>

dann gibts keinen Cache anscheinend....

Haut auf alle Faelle so problemlos hin!


Danke dir saschapi
saschapi
Ne. smile.gif Mit <?php ?> ist es eben gechached!
Das funzt solange dunicht irgendwas "dynamisches" in deinem PHP machst (bspw. du prüfst Serverzeit oder Datum oder so). Dann bleibt es nämlich immer so lange gespeichert bis sich auf der Seite was ändert. Wenn du indes nur die Selectbox so nutzt wie du das beschrieben hast macht das IMHO durchaus Sinn! wink.gif

Freut mich jedenfalls wenn es jetzt funktioniert!
Marko Merl
Super, danke der Info :-)

somit schoenes WE!
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2024 Invision Power Services, Inc.