Ergebnis 1 bis 5 von 5

Thema: TAL - wie kann ich einen Variablenwert ändern?

  1. #1
    Unregistriert
    Gast

    Standard TAL - wie kann ich einen Variablenwert ändern?

    Hallo.

    Ich habe 2 Variablen mittels tal:define definiert, beide vom Typ integer. Beide werden mittels tal:condition="var1 != var2" verglichen, anschließen möchte ich, falls der Verlgeich zu einem wahren Ergebnis führt, den Wert von var2 in den Wert von var1 ändern. Das habe ich mit tal:attributes="var2 var1" versucht, leider hat das nicht geklappt.
    Das Ganze sieht also ungefähr so aus:

    <{tag} tal:condition="var1 != var2" tal:content="var1" tal:attributes="var2 var1" />

    Kann mir bitte jemand weiterhelfen wie ich das am besten anstelle?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Meister(in)
    Registriert seit
    08.12.2007
    Ort
    Tübingen
    Beiträge
    266
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von Unregistriert Beitrag anzeigen
    Hallo.

    Ich habe 2 Variablen mittels tal:define definiert, beide vom Typ integer. Beide werden mittels tal:condition="var1 != var2" verglichen, anschließen möchte ich, falls der Verlgeich zu einem wahren Ergebnis führt, den Wert von var2 in den Wert von var1 ändern. Das habe ich mit tal:attributes="var2 var1" versucht, leider hat das nicht geklappt.
    Das Ganze sieht also ungefähr so aus:

    <{tag} tal:condition="var1 != var2" tal:content="var1" tal:attributes="var2 var1" />

    Kann mir bitte jemand weiterhelfen wie ich das am besten anstelle?
    tal:attributes ändert keine Variablen sondern dient zum Setzen von HTML/XML Attributen des jeweiligen Tags.

    Generell gehört eine solch komplexere Logik ausgelagert in ein PythonScript oder einen Browserview.

  3. #3
    Unregistriert
    Gast

    Standard

    Ok.

    Nun, ich weiß leider nicht wie ich das jetzt richtig realisieren soll.

    <td tal:define="publication_year related_object/getPublicationYear">
    <em tal:define="show_year python:here/getYearState(publication_year)" />
    <em tal:condition="python:show_year == 1" tal:content="publication_year" />
    </td>

    So habe ich es mir gedacht. Das Ganze soll dem Zweck dienen, dass verschiedene Dokumente nach Jahreszahlen geordnet werden sollen, d.h. sobald ein Dokument eine Jahreszahl hat die noch nicht bei der Auflistung dran war, soll ein neuer Absatz erstellt werden, wobei die neue Jahreszahl fett abgebildet wird und darunter die Dokumente erscheinen. Das wollte ich so machen, dass ich eine temporäre Variable benutze die die Jahreszahl des voriges Dokumentes enthält und mit der Jahreszahl des aktuellen Dokumentes vergleiche und falls diese nicht übereinstimmen, soll ein neuer Absatz erstellt werden. Nun habe ich die .py Datei des Content-Types dessen Attribute in diesem Template ausgelesen werden sollen, um ein weiteres IntegerFeld erweitert, dass die temporäre Variable darstellen soll. Eine Funktion, die ich noch nicht geschrieben habe (getYearState) soll dann das Jahr des aktuellen Docs mit dem im Feld gespeicherten Jahr vergleichen und eine 1 ausgeben falls beide nicht übereinstimmen, wobei die zurückgegebene 1 oder 0 in show_year gespeichert werden soll.

    Nun mein Problem. Wie realisiere ich das nun mit der Funktion und ist es überhaupt so möglich wie ich mir das mit dem weiteren Feld im Content-Type gedacht habe?
    Ich weiß leider nicht genau wie ich nun die Funktion bzw. das Skript im ZMI hinzufügen soll (externe Methode oder direkt ein Skript?) und v.a. weiß ich nicht wie ich denn das Feld der jeweiligen Content-Type-Instanz in diesem Skript bzw. in dieser Funktion ändern kann.

    Hilfe wäre super

    Viele Grüße

  4. #4
    Meister(in)
    Registriert seit
    08.12.2007
    Ort
    Tübingen
    Beiträge
    266
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von Unregistriert Beitrag anzeigen
    Ok.

    Nun, ich weiß leider nicht wie ich das jetzt richtig realisieren soll.

    <td tal:define="publication_year related_object/getPublicationYear">
    <em tal:define="show_year python:here/getYearState(publication_year)" />
    <em tal:condition="python:show_year == 1" tal:content="publication_year" />
    </td>

    So habe ich es mir gedacht. Das Ganze soll dem Zweck dienen, dass verschiedene Dokumente nach Jahreszahlen geordnet werden sollen, d.h. sobald ein Dokument eine Jahreszahl hat die noch nicht bei der Auflistung dran war, soll ein neuer Absatz erstellt werden, wobei die neue Jahreszahl fett abgebildet wird und darunter die Dokumente erscheinen. Das wollte ich so machen, dass ich eine temporäre Variable benutze die die Jahreszahl des voriges Dokumentes enthält und mit der Jahreszahl des aktuellen Dokumentes vergleiche und falls diese nicht übereinstimmen, soll ein neuer Absatz erstellt werden. Nun habe ich die .py Datei des Content-Types dessen Attribute in diesem Template ausgelesen werden sollen, um ein weiteres IntegerFeld erweitert, dass die temporäre Variable darstellen soll. Eine Funktion, die ich noch nicht geschrieben habe (getYearState) soll dann das Jahr des aktuellen Docs mit dem im Feld gespeicherten Jahr vergleichen und eine 1 ausgeben falls beide nicht übereinstimmen, wobei die zurückgegebene 1 oder 0 in show_year gespeichert werden soll.

    Nun mein Problem. Wie realisiere ich das nun mit der Funktion und ist es überhaupt so möglich wie ich mir das mit dem weiteren Feld im Content-Type gedacht habe?
    Ich weiß leider nicht genau wie ich nun die Funktion bzw. das Skript im ZMI hinzufügen soll (externe Methode oder direkt ein Skript?) und v.a. weiß ich nicht wie ich denn das Feld der jeweiligen Content-Type-Instanz in diesem Skript bzw. in dieser Funktion ändern kann.

    Hilfe wäre super

    Viele Grüße
    Es macht keinen Sinn eine solche Logik in ZPT zu packen. Du schreibst ein Script oder Browerview (The Definitive Guide to Plone/Professional Plone development sind gute Bücher), in der die Daten, die ausgegeben werden sollen zusammengesucht und vorbereitetet werden. Das ZPT ruft dann nur das entsprechende Skript auf und bekommt eine "vorverdaute" Datenstruktur, die man einfach ohne spezielle Krücken (siehe Dein Code) rendern kann.

  5. #5
    Unregistriert
    Gast

    Standard

    Ich hab es nun soweit hinbekommen wie du beschrieben hast, denke ich. Das ZPT definiert nun eine Jahresvariable deren Wert durch den Rückgabewert des Scripts bestimmt wird, der ist entweder eine Jahreszahl oder 'None'. Funktioniert alles prima. Jetzt gibt es aber ein Problem was ich leider nicht bedacht habe. Ich speichere ja die Jahreszahlen der aktuellen Dokumente die durch die Schleife laufen, immer in einem Integer-Feld, welches ich nachträglich in der Klassendatei des entsprechenden ContentTypes definiert habe. Das funktioniert auch alles super, nur gibt es nun das Problem, dass man das Template nur als eingeloggter Benutzer ansehen kann. Als Gast bekommt man nun immer die Aufforderung sich einzuloggen. Ich brauche also nun eine Lösung ohne auf das Integer-Feld des ContentTypes zurückgreifen zu müssen. Gibt es denn eine Möglichkeit eine Variable zu definieren, die auch ausserhalb des Skripts existiert und deren Wert ich durch das Skript dynamisch ändern kann? Ich bin mir nicht sicher ob es funktioniert wenn ich die Variable aus einer Datei vom Dateisystem hole und dort wieder reinschreibe.

Ähnliche Themen

  1. Wie kann ich die Schriftfarbe ändern ?
    Von Gast im Forum Webanwendungen - Webapplikationen
    Antworten: 7
    Letzter Beitrag: 02.07.2007, 00:51
  2. Kann man den RAM Speicher ändern
    Von asol im Forum Computer - Internet Forum
    Antworten: 4
    Letzter Beitrag: 04.01.2006, 18:14
  3. Kann ich den Scollbalken ändern?
    Von Eva** im Forum HTML & CSS Forum
    Antworten: 7
    Letzter Beitrag: 07.07.2005, 14:25
  4. Einen Text schnell ändern!
    Von Patrick im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 8
    Letzter Beitrag: 06.06.2005, 01:19
  5. Wie kann man die IP ändern?
    Von wernerdeluxe im Forum Computer - Internet Forum
    Antworten: 9
    Letzter Beitrag: 19.02.2005, 23:17

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •