Variablen im Unterordner

  • Hallo,


    ich krieg das nicht gebacken. Es ist aber auch ein unheimlicher Wust an Infos, die man gar nicht alle ohne entsprechendes Hintergrundwissen mit der Software selbst sich im Selbststudium beibringen kann.
    Vieleicht könnt ihr mir wenigstens hierbei etwas helfen.


    Wie man Varaiablen in das entsprechende .html Dokument einfügt ist klar.
    Ich möchte nun aber css Dateien auslagern, um das html Dokument nicht unnötig aufblähen zu lassen. Was ich nicht hinkriege ist eine Variable in die entsprechende Datei des css Ordner zu packen.
    Soll heissen: Der User fügt einen Wert im Widget ein und dieser Wert soll im Widget Ordner /css/xyz.css dann mit dem entsprechenden Wert ersetzt werden.


    Ich weiss nicht wie dann die Variable auszusehen hat und hab dazu auch noch keinen (für mich erkennbaren) Tip in der Doku gesehen.
    Wer weiss Rat ?


    Dankeschön....

  • Hallo,


    das macht nicht wirklich Sinn. Ein Widget kann ja mehrere Instanzen haben – also mehrmals auf verschiedenen oder sogar gleichen Seiten eingefügt sein. Welchen Wert würdest Du dann global wegschreiben?


    Sowas also besser per JavaScript handeln (schau mal imagegallery.js des Widget "bilderalbumv12" an, das generiert css und injiziert es in den <head>) oder mit dem Widget ein inline css generieren.

  • ..... ich denk vieleicht etwas zu naiv .....


    ... aber aus Sicht eines Laien wäre das doch die simpelste Lösung die auch ein anderer vieleicht noch einmal anpassen kann.
    Ich versteh nicht recht was mit "Welchen Wert würdest du dann global wegschreiben?" gemeint ist.


    Werden Userwerte die in einem Widget eingetragen denn in irgendeinem .js File übernommen?


    Diese Geschichte mit den Ghost Buttons nehme ich jetzt mal als Beispiel.


    Eine Zeile html code .... wenige Zeilen css code.
    Könnte man alles in die standard.html packen .... fertig ..... schon hat man einen netten Ghost Button. Das Ganze mit ein paar Mausklicks aufarbeiten, ein Widget basteln und der User kann Farbe, Rahmen, Text und was auch immer selbst bestimmen. Ich will eigentlich nur den entsprechenden css Part dieses Buttons aus der standard.html Datei auslagern. Muss doch möglich sein, dass Variable xyz in welcher Form auch immer mit

    Code
    1. <$= article.value("wert") $>

    auf /css/abc.css zugreift und nicht auf standard.html


    Für mich wäre es viel zu umständlich aus diesen 5-10 Codezeilen noch eine Javascript zu basteln....ist doch gar nicht nötig.


    Sry .... aber ich bin nach wie vor ein Nicht Coder und wir sprechen wahrscheinlich in anderen Welten miteinander.....

  • Zur Erklärung.


    Nehmen wir an Du hast ein Widget, das einen Ghost-Button macht.
    Der User kann im Widget die Linienstärke definieren.
    Der user platziert auf einer Seite 2 solcher Widgets. Beim ersten ist die Linienstärke 3px beim zweiten ist sie 6px.
    Welchen Wert schreibst Du nun ins globale css? 3px oder 6px? Oder wie würdest Du das CSS so ins globale CSS-File schreiben, dass die Regel nachher zum richtigen Button passt (dem 1. oder dem 2.)?


    Eingaben in Felder in der Widget-Konfiguration gelten ja nur für das widget, nicht für alle.
    Eingaben in der Layout-Konfiguration (wenn man den Layout-Button klickt) hingegen gelten global.


    Daher bezieht unser bereits existierendes Button-Widget die meisten Werte (Linienfarbe, Füllfarbe…) aus den Layout-Einstellungen und nicht aus dem Widget ;-) Die Ausrichtung kommt bei unserem aus dem Widget und wird einfach als inline CSS ausgegeben. Schau Dir doch das Button-Widget mal an.


    Beispiel der Ausrichtung des Buttons als inline CSS:

    Code
    1. <p style="text-align:<$= article.value('align') $>">
  • Vielen, vielen Dank für die Erläuterungen.....
    ich komme bestimmt auf dieses Thema (mit meinen Gedanken) zurück ....


    .... und wünsche zunächst einen schönen Feierabend ..... ;)

  • Hallo .....


    um noch einmal darauf zurückzukommen. Wenn ich die Werte für ein Widget in den Layouteinstellungen setze, gelten sie ja global. Um das Beispiel des Widget Buttons wieder anzuführen:



    Daher bezieht unser bereits existierendes Button-Widget die meisten Werte (Linienfarbe, Füllfarbe…) aus den Layout-Einstellungen und nicht aus dem Widget ;-)


    • Der User setzt die Werte in den Layouteinstellungen für das Widget Button
    • Er nimmt das Widet Button und platziert es entsprechend. Sein Button ist nun entsprechend seinen Vorgaben blau (Hintergrund) und hat weisse Schrift
    • Er möchte einen weiteren Button meinetwegen auf der gleichen oder auch auf einer anderen Seite setzen, aber gelb (Hintergrund) und mit blauer Schrift.

    Und eben der unter 3. aufgeführte Punkt geht aber eben nicht, da es sich ja um eine globale Einstellung handelt, die einmal festgelegt für dieses Widget auf allen Seiten (oder besser, für das gesamte Projekt) gilt. Der User kann somit immer "nur" den blauen Button mit weisser Schrift nutzen (oder was auch immer in den Layouteinstellungen festgelegt wurde).


    Ich finde, dass nimmt dem Anwender ein Stück Flexibilität in der Gestaltung.


    Der user platziert auf einer Seite 2 solcher Widgets. Beim ersten ist die Linienstärke 3px beim zweiten ist sie 6px.
    Welchen Wert schreibst Du nun ins globale css? 3px oder 6px? Oder wie würdest Du das CSS so ins globale CSS-File schreiben, dass die Regel nachher zum richtigen Button passt (dem 1. oder dem 2.)?


    Ich kann mich mit dem Begriff "globales CSS" noch überhaupt nicht anfreunden. Wenn ich es für mich richtig interpretiere, nutze ich für meine Widgets "globales CSS" gar nicht. Es müsste für meine Widgets eher "individuelles CSS" heissen - also CSS, auf das der User über das Festlegen individueller Werte umfassend Einfluss nehmen kann.


    Das ist doch grundsätzlich kein Problem 2 Widgets mit verschiedenen Werten auf einer Seite zu platzieren, oder?


    Wieder Beispiel Buttons: Jeder Artikel bekommt doch eine interne DB Id zugewiesen. Und ein Widget ist doch eigentlich nichts anderes als ein Artikel.
    Über eine Container div-id = article-id weise ich diesem Container diese individuelle DB Id zu. Ich kann somit meinetwegen 10 Buttons auf dieser Seite setzen und alle Buttons mit verschiedenen Werten versehen, die der User bei Auswahl des Widgets natürlich festlegen muss. Konflikte sollte es auf Grund der eindeutigen DB-Id nicht geben und somit kann doch auch ganz klar unterschieden werden, welche Linienstärke zu welchen Button gehört. Button 1 hätte somit den vom User festgelegten Wert 3px Rahmenstärke, Button2 10 Pixel Rahmenstärke, usw.

  • Hallo Thomas,


    Einfach mal meine Gedanken dazu reingeworfen ...


    aus der Programmiersicht gesehen:


    du müsstest für jede Einstellung (z. B. Rahmenfarbe) jeweils einen Platzhalter (Variable) definieren.


    Du weißt aber im Voraus nicht wie viele Buttons der Nutzer auf seinen Seiten haben möchte. Somit müsstest du für 10 Buttons auch 10 Variablen vorab definieren. Was aber wenn er 11 oder mehr Buttons haben möchte.
    Das die Variablen ID-abhängig erstellt werden (irgendwas mit dynamische Variablenerstellung), kann ich mir programmiertechnisch nicht so recht vorstellen - ob und wie man sowas umsetzen kann (bin aber auch schon zu lange aus der Materie draussen).

  • Hallo nochmal,


    das ganze jetzt noch einmal durchgespielt und ihr habt natürlich recht. Lässt sich offenbar auch nicht mit article-id innerhalb eines div lösen. Das Problem hatte ich ja auch schon einmal mit den Hover Effekten und ich glaube ich hatte das auch erwähnt ..... tztztz .... :whistling:


    Naja, man muss auch mal verlieren können .... :D
    Aber ausdrücklich ein Dankeschön an S. S. und auch wurzelsepp für eure Beiträge. :)
    Ich denk, wir können das an dieser Stelle zunächst abschliessen.

  • Hallo,


    wenn Du ein Button-Widget mit mehr flexibilität willst, kannst Du natürlich die EInstellungen vom Layout direkt ins Widget verlagern. Wenn aber jede instanz des Widget nun eigene Einstellungen haben kann, muss jede Instanz auch eine zugehörige, eigene Regel im CSS haben.


    Das machen wir bei anderen Widgets auch. Z.B.: Wetter…

  • Vielen Dank,


    ich glaub, ich habs jetzt auch kapiert :D


    Um nur noch ein letztes Mal auf die eigentlich Eingangsfrage zurück zu kommen.
    Gibt es einen Weg einen vom User eingegebenen Wert über

    Code
    1. <$= article.value("wert") $>

    vieleicht über eine spezielle Pfadangabe in den Ordner css zu übergeben oder nicht?

  • Hallo,


    nein, die gibt es nicht. article.value kann ja nur im Kontext eines Artikels funktionieren, also während der Ausgabe eines Artikels (nur dann weiß ZP ja, um welchen Artikel es geht). Der Zeitpunkt an dem das CSS auf variablen geparsed wird ist ein anderer und findet nicht im Kontext eines Artikels statt, daher kann auch article.value im css file nicht aufgelöst werden.