Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe der Varianten

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ausgabe der Varianten

    Hallo,
    ich versuche gerade, die Varianten (als tags hinterlegt) im Frontend als Radio-Buttons anstelle der Checkbox auszugeben. Der Hintergrund ist, dass ein Produkt mehrere tags besitzen darf, jedoch nur ein einer variante angefragt werden soll.
    Des weiteren wird eben dieser Tag bei der Anfrage via Mail (efg und notificationcenter) mit mit ausgegeben.
    Hättet ihr einen Tipp, wie ich diese beiden Veränderungen durchführen kann?

    Viele Dank

  • #2
    Hallo,
    in den Einstellungen des Merkliste-Attributes müssen Varianten aktiviert sein. Erlaubt sind standardmäßig Select-Felder.

    Die Formular-/ und E-Mail-Ausgabe erfolgt durch die Templates eingestellt im jeweiligen Merkliste-Formularfeld. Darin können auch Manipulationen der Ausgabe vorgenommen werden.

    ps. die EFG-Erweiterung ist unter Contao 4 obsolet.
    Zuletzt geändert von Tim; 14.04.2021, 07:19.
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Hallo,
      vielen Dank für die Hilfestellung. Nur ist bei der Verwendung eines Filters Auswahl, Einfach (select, radio) es nicht möglich im Backend zwei Optionen anzugeben (Checkbox) bzw. im Frontend als eine (radio) ausgeben zu lassen.

      Im konkreten Beispiel gibt es für Flaschen unterschiedliche Sprühköpfe / Aufsätze welche bestellt werden können.
      Einstellungen: Auswahl, einfach (select, radio), Mehrfachauswahl (ausgewählt), Als Radio-Button darstellen (ausgewählt)
      Backend: Ausgabe als Radio-Button, keine mehrfachauswahl möglich
      Frontend: Ausgabe als Radio-Button, es werden alle Sprühköpfe bei den Varianten ausgegeben (Aufruf über das Widget), im Template jedoch nur die hinterlegten.

      Sobald der Button bei "Als Radio-Button darstellen" nicht auswähle, ist im BE eine Mehrfachauswahl möglich, im Frontend ebenfalls (Select). Es werden weiterhin alle Einträge und nicht die für das Produkt hinterlegten ausgegeben.

      Wenn ich dieses über Tag-Löse ist im BE und FE die Ausgabe korrekt, jedoch wird die Variante nicht über die E-Mail mit übergeben. Hier ist dann der Eintrag der Variante nicht vorhanden.

      Zur Verdeutlichung noch die Einstellungen / Ein und Ausgabe als Bild

      Einstellungen:
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: BE-Einstellungen.jpg
Ansichten: 1
Größe: 80,3 KB
ID: 2751


      Auswahl beim Produkt:
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: BE-Eingabe.jpg
Ansichten: 1
Größe: 9,5 KB
ID: 2752


      Ausgabe im FE
      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: FE-Ausgabe.jpg
Ansichten: 1
Größe: 17,8 KB
ID: 2753

      Kommentar


      • #4
        Mehrfachauswahlen in Varianten wird standardmäßig nicht unterstützt. Es gibt quasi nicht mehrere additive Varianten eines Produkt in einem Varianten-Feld, sondern nur eine Abweichung je Varianten Feld. *

        Sprich, ein Pullover existiert in den Farben Rot und Grün. Die Variante erlaubt also die klare Auswahl entweder Rot oder Grün, aber nicht Rot + Grün.

        * Es können beliebig viele Varianten-Felder eingesetzt werden, für weitere Varianten.

        (Die Darstellung des Auswahl-Feldes als Radio-Buttons setzt keine Mehrfachauswahl voraus.)
        ---
        Felder ungleich Select-Auswahlen können im mail_customelementnotelist Template individuell ausgegeben werden.
        Zuletzt geändert von Tim; 15.04.2021, 12:02.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Ja, so sollte es in diesen konkreten Beispiel ebenfalls sein.
          Hier wäre jedoch die Logik, dass wir generell 4 Farben führen wobei ein Männerpulli nur in rot oder grün vorhanden ist, das T-Shirt in allen vier Farben und das Frauen T-Shirt nur in weiß. Dementsprechend sollte man im Backend einem Produkt mehrere Farben zuweisen können aber der Kunde nur eine bestellen.

          Ist dieser Fall nicht mit den Varianten abzubilden?

          Kommentar


          • #6
            Welche Auswahlen der Benutzer im Auswahl-Feld der Variante eines Produkt wählen kann unterliegt den bereitgestellten Optionen des Selects (und der Ausgabe im Attribut-Template).
            Wenn ein Frauen T-Shirt nur die Option weiss hat, muss die Auswahl im Frontend entsprechend reduziert werden (oder man schaltet optionen auf disabled usw.) (oder man nutze ein eigenes Auswahl-Feld nur für das Frauen T-shirt (das ist etwas overkill ))

            Ich würde es wie folgt aufbauen:
            - Die Produkte unterscheidet man nach einem auswählbaren Typ z.B. ein Select-Feld mit den Optionen: Männerpulli, T-shirt, Frauen-Tshirt usw.
            - Die möglichen Farben werden alle in einem Select-Feld angelegt und im Ausgabe-Template dieses Select-Feldes reduziert man die ausgegebenen Auswahl-Optionen (siehe Select-Attribut Template) in Abhängigkeit des Produkttyps.
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Anbei ein Beispiel wie man die Ausgabe der Varianten-Auswahl in Abhängigkeit ändern kann.

              Mein Beispiel ändert die Auswahl in Abhängigkeit der ID des Datensatzes z.B. ID=1 (Option #1 raus), ID=2 (Option #2 raus). Diese Logik kann frei geändert werden.

              (Merkliste-Attribute Template)
              customelement_attr_notelist

              Code:
                 <?php
                  use PCT\CustomElements\Plugins\Notelist\Notelist;
                  ?>
                <?php if(!$this->includeNotelist) return ''; ?>
                  <div class="customelements_notelist notelist <?phpif($this->focus):?>focus<?phpendif;?>">
                <?php if($this->statusMessage): ?>
                <p class="info"><?php echo $this->statusMessage; ?></p>
                <?php endif; ?>
                  <form method="post"id="<?phpecho$this->formID;?>"action="<?phpecho$this->action;?>">
                <input type="hidden"name="FORM_SUBMIT"value="<?phpecho$this->formID;?>" />
                <input type="hidden"name="REQUEST_TOKEN"value="{{request_token}}" />
                <input type="hidden"name="ITEM_ID"value="<?phpecho$this->itemID;?>" />
                <input type="hidden"name="SOURCE"value="<?phpecho$this->source;?>" />
                <div class="notelistamount input_container">
                <?php echo $this->amountLabel; ?><?php echo $this->amountInput; ?>
                </div>
                <?php if(count($this->variants) > 0): ?>
                <div class="notelistvariants">
                <?php foreach($this->variants as $name => $widget): ?>
                <?php
                $objAttribute = $widget['attribute'];
                $objOrigWidget = $widget['raw'];
                $arrFieldDef = $objAttribute->getFieldDefinition();
                 
                $objVariant = new PCT\CustomElements\Plugins\NoteList\Variants();
                 
                $objWidget = $objVariant->loadFormField( $arrFieldDef, $objAttribute );
                $objWidget->name = $objOrigWidget->name;
                $objWidget->id = $objOrigWidget->name;
                 
                $arrOptions = $objWidget->__get('options');
                 
                // Auswahl in Abhängigkeit der ID des CC Eintrags
                if( $this->activeRecord->id == 1 )
                {
                unset($arrOptions[1]);
                }
                if( $this->activeRecord->id == 2 )
                {
                unset($arrOptions[2]);
                }
                  $objWidget->__set('options',$arrOptions);
                echo $objWidget->generate();
                ?>
                <?php endforeach; ?>
                </div>
                <?php endif; ?>
                <div class="submit_container">
                <?php if(!$this->added): ?>
                <input type="submit"class="submit add"name="<?phpecho$this->submitName;?>"value="<?phpecho$this->submit;?>" />
                <?php else: ?>
                <input type="submit"class="submit update"name="<?phpecho$this->updateName;?>"value="<?phpecho$this->update;?>">
                <input type="submit"class="submit remove"name="<?phpecho$this->removeName;?>"value="<?phpecho$this->remove;?>">
                <?php endif; ?>
                </div>
                </form>
                </div>
                  <?php if($this->focus): ?>
                <script type='text/javascript'>
                /* <![CDATA[ */
                  /**
                * Scroll to id
                */
                jQuery(document).ready(function()
                {
                jQuery("html, body").animate({scrollTop: jQuery('#<?=$this->formID;?>').offset().top - 0}, 500);
                });
                  /* ]]> */
                </script>
                <?php endif; ?>
               
              Zuletzt geändert von Tim; 15.04.2021, 14:03.
              http://www.premium-contao-themes.com

              Kommentar


              • #8
                ps. Ich hatte selbst einen Denkfehler. Tags als Quelle geht und wird sogar standardmäßig in Abhängigkeit ausgewählt. Allerdings existiert aktuell ein Fehler in der Ausgabe dieser Konstellation im Formularfeld. Ich habe das bereits in der dev-Version 1.5.1 korrigiert.
                https://github.com/timgatzky/pct_cus...elist/tree/dev

                Die Ausgabe in der Mail erfolgt durch den Wert des Tags. In der Regel die ID.


                mail_notelist_customelements

                Mit lesbarer Ausgabe der Tags.

                Code:
                <?php
                /**
                * Template for customelements notelist email output
                */
                use Contao\PCT_TagsModel;
                ?>
                <?php if(count($this->entries) > 0): ?>
                <?php foreach($this->entries as $entry): ?>
                <?php echo $entry['amount']; ?>x
                <?php foreach($entry['fields'] as $field):?>
                <?php echo $field->value(); ?>
                <?php endforeach; ?>
                <?php if(count($entry['variants']) > 0): ?>
                (<?php foreach($entry['variants'] as $name => $data): ?>
                <?php if($data['value']): ?>
                <?php // Tags-Titel ausgeben
                if( $data['attribute']->type == 'tags' )
                {
                $v = $data['value'];
                if ( !is_array($v) )
                {
                $v = explode(',',$v);
                }
                $objTags = PCT_TagsModel::findMultipleByIds($v);
                $data['value'] = $objTags->fetchEach('title');
                }
                // convert array values to comma separated string
                if(is_array($data['value'])) {$data['value'] = implode(', ', $data['value']);}
                ?>
                <?php echo $data['value']; ?>
                <?php endif; ?>
                <?php endforeach; ?>)
                <?php endif; ?>
                <?php endforeach; ?>
                <?php else: ?>
                <?php echo $this->empty; ?>
                <?php endif; ?>
                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Hallo Tim,
                  vielen dank für deine ausführliche Antwort.
                  Die Variante mit der Erweiterung des Tag-Typs im Mailformular scheint mir die effektivste und auch zukunftssicherte, da dieses schon für die zukünftigen Versionen mit aufgenommen wurde.
                  Nur leider wird bei mir im Mailtemplate der Bereich
                  PHP-Code:
                  <?php if(count($entry['variants']) > 0): ?> ( ... ) <?php endif; ?>
                  gar nicht ausgeführt.

                  Kommentar


                  • #10
                    Die Varianten-Felder müssen veröffentlicht sein und in den Einstellungen des Merkliste-Attributes als Varianten angewählt sein und es müssen Varianten gewählt sein in den gemerkten Einträgen.
                    Zuletzt geändert von Tim; 20.04.2021, 11:31.
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      Hallo, das ist alles aktiviert und definiert. In der Frontendausgabe auf der Seite werden diese Daten auch korrekt übergeben - nur im E-Mail Template wird die entsprechende If-Abfrage nicht ausgeführt.
                      Sobald ich im Form die Merkliste via CSS sichtbar mache, sind die Varianten dort nicht hinterlegt - diese werden durch das Feld "Merkliste" aktiviere, wodurch das Formular nicht mehr funktioniert.

                      Kommentar


                      • #12
                        Zitat von GlaeserTo Beitrag anzeigen
                        Hallo, das ist alles aktiviert und definiert. In der Frontendausgabe auf der Seite werden diese Daten auch korrekt übergeben - nur im E-Mail Template wird die entsprechende If-Abfrage nicht ausgeführt.
                        Sobald ich im Form die Merkliste via CSS sichtbar mache, sind die Varianten dort nicht hinterlegt - diese werden durch das Feld "Merkliste" aktiviere, wodurch das Formular nicht mehr funktioniert.
                        Bitte die vorab die Version 1.5.1 aus Github laden.
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Ich hatte die dev-Version von git via ftp auf den Webspace hochgeladen. Leider erhalte ich dann einen 500er Server-Fehler. Sind weitere Schritte notwendig bzw. gibt es einen anderen Weg die dev-Version zu installieren?
                          Vielen Dank für die Hilfe

                          Kommentar


                          • #14
                            Wie lautet denn der Fehler?

                            Nach dem Hochladen sollte der Symfony Cache geleert werden.
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #15
                              Nun klappt alles - vielen Dank für den Support.

                              Kommentar

                              Lädt...
                              X