1. Wenn du hier im Forum ein neues Thema erstellst, sind schon Punkte aufgeführt die du ausfüllen musst. Das dient im Allgemeinen dazu die notwendigen Informationen direkt mit der Frage bereitzustellen.
    Da in letzter Zeit immer wieder gerne das Formular gelöscht wurde und erst nach 3 Seiten Nachfragen die benötigten Infos für eine Hilfe kommen, werde ich nun jede Fragestellung die nicht einmal annähernd das Formular benutzt, sofort in den Sondermüll schicken.
    Füllt einfach die abgefragte Daten aus und alle können euch viel schneller helfen.
    Information ausblenden

XF2.1 Fragen zu Macros

Dieses Thema im Forum "Fehler, Fragen und Antworten" wurde erstellt von McAtze, 1. Jan. 2019.

  1. McAtze

    McAtze Innendienst Lizenzinhaber

    Ich habe in den Optionen mehrere Checkboxen angelegt hinter denen dann eine Textarea liegt. Wenn Checkbox aktiv, kann Textarea ausgefüllt werden. Nun sind dies ca. 50 Stück und ich möchte dies gerne in ein Template übernehmen. Hier kommen noch ein paar zusätzliche Abfragen hinzu:

    1. WENN checkbox aktiv UND textarea ausgefüllt DANN textarea
    2. SONST WENN checkbox aktiv UND textarea NICHT ausgefüllt DANN phrase

    Das ist dann ein schöner 5-zeiler pro Checkbox. Macht bei 50 Checkboxen knapp 250 Zeilen ohne Leerzeilen.

    Nun zu meiner eigentlichen Frage: Kann ich dies mit der neuen Macro-Funktion irgendwie sauberer lösen?

    Ich steige bei der Funktion noch nicht so ganz durch, vor allem was die Argumente angeht.

    Danke schon einmal für die Hilfe.. :D
     
    otto gefällt das.
  2. otto

    otto Bekanntes Mitglied Lizenzinhaber

  3. Tealk

    Tealk Aktives Mitglied Lizenzinhaber

    Ja das geht mit dem Makros sehr schön, ich weiß nur gerade nicht wie man das Schriftlich schön rüber bringen kann.
    Du hast z.B. das Makro:
    Code (Text):
    <xf:macro
       name="my_macro_name"
       arg-message="My amazing macro message!">

       <h1>Message</h1>
       <p>{$message}</p>

    </xf:macro>
    dann würde jedes mal wenn du folgendes aufrufst, das oben stehende ausgegeben werden, mit "My amazing macro message!" als Inhalt der Variable:
    Code (Text):
    <xf:macro name="my_macro_name" />
    Wenn du aber jetzt folgendes aufrufst, dann überschreibst du quasi die Variable:
    Code (Text):
    <xf:macro name="my_macro_name" arg-message="test" />
    Dann würde jetzt Test bei dem Makro oben ausgegeben werden.
     
    otto gefällt das.
  4. McAtze

    McAtze Innendienst Lizenzinhaber

    Wie oben geschrieben habe ich ca. 50 Textarea die in den Einstellungen gefüllt werden können, d.h. dann könnten ich bei den Macros so ungefähr vorgehen:
    HTML:
    <xf:macro
       name="my_macro_name"
       arg-option1="$xf.options.my_option_id1"
       arg-option2="$xf.options.my_option_id2"
       arg-option3="$xf.options.my_option_id3"
       arg-option4="$xf.options.my_option_id4">

        <p>{$for_every_arg_???}</p>

    </xf:macro>
    HTML:
    <xf:macro template="my_macro_template" name="my_macro_name" arg-argName="option1" />
    <xf:macro template="my_macro_template" name="my_macro_name" arg-argName="option2" />
    <xf:macro template="my_macro_template" name="my_macro_name" arg-argName="option3" />
    <xf:macro template="my_macro_template" name="my_macro_name" arg-argName="option4" />
    Was erreiche ich denn eigentlich hiermit?
    HTML:
    <xf:macro template="my_macro_template" name="my_macro_name" arg-argName="!" />
    Das hat sich wohl erledigt, wer lesen kann.. :rolleyes:
     
    otto gefällt das.
  5. Tealk

    Tealk Aktives Mitglied Lizenzinhaber

    @McAtze ne su schreibst das eher so, ich setz das immer ans ende vom template:
    HTML:

    <xf:macro
      name="my_checkboxes"
      arg-label=""
      arg-explain=""
      arg-name=""
      arg-checked="false">
           <xf:checkboxrow label="{$label}" explain="{$explain}">
               <xf:option name="{$name}" label="{$label}" checked="{$checked}" />
           </xf:checkboxrow>
    </xf:macro>
    und aufrufen tust du das ganze dann folgendermaßen:
    HTML:
    <xf:macro name="my_checkboxes"arg-label="label1" arg-explain="explain1" arg-name="name1" arg-checked="false" />
    <xf:macro name="my_checkboxes"arg-label="label2" arg-explain="explain2" arg-name="name2" arg-checked="false" />
    <xf:macro name="my_checkboxes"arg-label="label3" arg-explain="explain3" arg-name="name3" arg-checked="false" />
     
    McAtze und otto gefällt das.
  6. McAtze

    McAtze Innendienst Lizenzinhaber

    Das muss ich mal ausprobieren.. :good2:
     
  7. otto

    otto Bekanntes Mitglied Lizenzinhaber

    Ok - und wozu brauch man oder kann man die Macros brauchen? (Man merkt ja fast gar nicht, das ich immer noch mit 1.5.x unterwegs bin :D ;) )
     
  8. McAtze

    McAtze Innendienst Lizenzinhaber

    Was ich bisher verstanden habe ist, dass das mit include vergleichbar ist, du aber Argumente templateübergreifend nutzen kannst. Also ein echter Fortschritt.
     
    otto gefällt das.
  9. otto

    otto Bekanntes Mitglied Lizenzinhaber

    Na wenn ich 2020, wenn das DE Sprachpaket fertig ist (muhahaha... :D ;) ) update, werd ich mich da wohl mal ne Weile mit beschäftigen, klingt aber interessant. :)
     
  10. Kirby

    Kirby Bekanntes Mitglied Lizenzinhaber

    Macros haben gegenüber includes 2 Vorteile:
    Die Parameter sind sauber gekapselt, d.h. man versaut nicht versehentlich den Namespace des Parent.
    Darüber hinaus sind Macros nur Funktionen und keine eigenständigen Dateien was einen geringen Petformance-Vorteil bringt da man so weniger include()-calls hat.
     
    Zuletzt bearbeitet: 2. Jan. 2019
    Masetrix, otto und McAtze gefällt das.
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden