Ankündigung

Einklappen
Keine Ankündigung bisher.

CC: Attribut CustomElement Widget

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

  • #16
    Zitat von D23 Beitrag anzeigen
    Ok, so genau hatte ich das nicht angesehen. Aber danke für die Info.
    Jetzt noch die krönende Preisfrage: Wie kann ich da jetzt was im FE ausgeben? Die Werte werden gespeichert, allerdings nicht in der Tabelle des Produkts, sondern in tl_pct_customelement_vault.

    Kommt man da im FE-Template ran?
    $entry->field('feld')->html / render oder value() liefern da natürlich nichts aus.
    Korrekt. CE speichert im sogn. Vault.
    Du kommst immer im CE Template an die Werte über den gewohnten. Das wird ja hier auch durchlaufen. Und im CC Template mit ->html() gerendert. Das würde ich auch empfehlen. Keep things clean, simple and don't mix.

    Nutze sonst Inserttags

    {{vault::ID-OR-ATTRIBUTEALIAS::ENTRY-ID::SOURCE}}

    Beispiel:

    Feld heisst: meinText, im Eintrag ID=10, Tabelle: cc_meinKatalog

    echo $this->replaceInsertTags({{vault::meinText::10::cc_mei nK atalog}});


    Man kann natürlich auch eine direkte Anfrage an den Vault stellen. Eine direkte Datenbankabfrage geht auch immer.
    http://www.premium-contao-themes.com

    Kommentar


    • #17
      Zitat von Tim Beitrag anzeigen
      Du kommst immer im CE Template an die Werte über den gewohnten. Das wird ja hier auch durchlaufen. Und im CC Template mit ->html() gerendert.
      Das CE nutzt doch - wenn nicht anders vorgegeben - das default Template.
      Daher bin ich irritiert, dass im CC Template aber nichts ankommt. Da kann ja doch auch nix ankommen, wenn diese Felder in der Datenbank leer sind und die Werte im Vault stecken. Oder hab ich dich jetzt falsch verstanden?

      Kommentar


      • #18
        CE denkt mit einem sogn. Origin Objekt. Das enthält alle Informationen zu der Herkunft.

        Eine CC Tabelle ist nichts anderes als z.B. die tl_content für CE. CE speichert auch nichts in tl_content. Die Werte sind im Vault, verknüpft über PID und SOURCE.
        Soll CC jetzt ein CE Attribut rendern, wird die renderCallback Methode des Attributes gestartet, die im Grunde das gleiche macht wie ein ContentCustomElement (normales CE Inhaltselement)
        Dort wird ein CE objekt erstellt. Die Herkunft festgelegt und gerendert. Die Html Ausgabe wird an das CC Feld übergeben.

        http://www.premium-contao-themes.com

        Kommentar


        • #19
          Zitat von Tim Beitrag anzeigen
          CE denkt mit einem sogn. Origin Objekt. Das enthält alle Informationen zu der Herkunft.

          Eine CC Tabelle ist nichts anderes als z.B. die tl_content für CE. CE speichert auch nichts in tl_content. Die Werte sind im Vault, verknüpft über PID und SOURCE.
          Soll CC jetzt ein CE Attribut rendern, wird die renderCallback Methode des Attributes gestartet, die im Grunde das gleiche macht wie ein ContentCustomElement (normales CE Inhaltselement)
          Dort wird ein CE objekt erstellt. Die Herkunft festgelegt und gerendert. Die Html Ausgabe wird an das CC Feld übergeben.
          Soweit halbwegs verstanden

          Ich verstehe nur noch nicht, warum im CC Template nichts ausgegeben wird.
          ->html() liefert nichts

          Die Methode hab ich auch versucht:
          echo $this->replaceInsertTags({{vault::meinText::10::cc_meinK atalog}});
          Das generiert aber nur einen Syntaxfehler wegen der geschweiften Klammer.

          Kommentar


          • #20
            Naja, muss in Anführungsstriche, ich habs hier schnell mal runtergetippt. Das ist ein String. http://de.contaowiki.org/Insert-Tags
            Nicht alles immer copy and paste machen
            http://www.premium-contao-themes.com

            Kommentar


            • #21
              Zitat von Tim Beitrag anzeigen
              Naja, muss in Anführungsstriche, ich habs hier schnell mal runtergetippt. Das ist ein String. http://de.contaowiki.org/Insert-Tags
              Nicht alles immer copy and paste machen
              So schlau war ich mittlerweile auch schon – da hatte ich den Kommentar aber schon abgeschickt
              Bislang aber auch noch kein Ergebnis bekommen, was aber dann wohl eher noch an falschen Werten meinerseits liegt.

              Kommentar


              • #22
                Nee, ich trete auf der Stelle. Ein InsertTag hilft mir ja nur für einen ganz spezifischen Wert – ich hab aber mehrere.

                Vielleicht ist mein Aufbau auch falsch, oder unzureichend erklärt.

                cc_produkt:
                - hat jede Menge untersch. Felder
                - hat Kindtabelle cc_variante
                - hat eigenes template customcatalog_product.html5

                cc_variante:
                - hat versch. Felder
                - hat eigenes Template customcatalog_variant.html5
                - wird im Template von cc_produkt eingebunden
                - hat ein CustomElementWidget -> ce_haendler

                Sieht so aus: Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bildschirmfoto 2015-09-24 um 12.45.35.png
Ansichten: 72
Größe: 29,5 KB
ID: 1007


                ce_haendler:
                - ist ja kein CC, sondern nur ein Baukasten für Einträge mit 2 Feldern (Händlername und Link) die im cc_variante gemacht werden - siehe Bild

                Und folgendes wäre das Template customcatalog_variant.html5:
                PHP-Code:
                <?php if(!$this->empty): ?>
                    <div class="product-variants clearfix">
                        <?php foreach($this->entries as $entry): ?>
                            <div class="product_variant_colors">
                                <div class="variant-icon" title="<?php echo $entry->field('color_name')->html(); ?>"><?php echo $entry->field('color_icon')->html(); ?></div>
                                <div class="variant-image hidden"><?php echo $entry->field('color_variant_image')->html(); ?></div>
                                <div class="buy_info inactive">
                                    <span class="buy_button_text hidden"></span>
                                    <div class="title"><?php echo $GLOBALS['TL_DCA']['product_details']['buy']['overlay']['title'][$lang]; ?></div>
                                    <div class="arrow"></div>
                                    <div class="close"></div>
                                    <div class="test"><?php echo $entry->field('buy_entry')->html(); ?></div>
                                </div>
                            </div>
                        <?php endforeach; ?>
                    </div>
                <?php endif; ?>
                Und eben jenes <?php echo $entry->field('buy_entry')->html(); ?> liefert kein Ergebnis.

                Kommentar


                • #23
                  Dafür hab ich dir ja extra die replaceInserttags Methode vorgeschlagen. Den String kannst du dynamisch aufbauen aus den Werten des Templates. In deiner Schleife für die Einträge kommt auch immer ein neuer ID wert.

                  Ist das Feld sichtbar? Auch im Liste Modul?

                  Ich hab im neuen CC noch ein paar weitere kleine Updates drin um Attribute noch flexibler zu machen.

                  Vielleicht fehlt dem CE Widget ein Template, da es im BE ja nicht extra wählbar ist. Ich habe gerade erst einen allgemeinen Fallback geschrieben.

                  Kannst das CE auch manuell ausgeben lassen:

                  PHP-Code:
                  $objCE = \PCT\CustomElements\Core\CustomElementFactory::findByAlias('ce_haendler');
                  $objCE->setOrigin($entry->get('id'),'cc_produkt');

                  // $objCE->setGenericAttribute('ID-DES-CE-ATTRIBUTES');
                         
                  echo $objCE->render(); 
                  Zuletzt geändert von Tim; 24.09.2015, 13:27.
                  http://www.premium-contao-themes.com

                  Kommentar


                  • #24
                    Feld ist im Listenmodul von cc_variante aktiviert und auch sichtbar geschaltet.

                    Mit dem InserTag komm ich aber auch zu nichts: sieht aktuell so aus:

                    <?php echo $this->replaceInsertTags("{{vault::buy_link::35::cc_vari ante}}"); ?>

                    Kommentar


                    • #25
                      Zitat von Tim Beitrag anzeigen
                      Vielleicht fehlt dem CE Widget ein Template, da es im BE ja nicht extra wählbar ist. Ich habe gerade erst einen allgemeinen Fallback geschrieben.

                      Kannst das CE auch manuell ausgeben lassen:

                      PHP-Code:
                      $objCE = \PCT\CustomElements\Core\CustomElementFactory::findByAlias('ce_haendler');
                      $objCE->setOrigin($entry->get('id'),'cc_produkt');

                      // $objCE->setGenericAttribute('ID-DES-CE-ATTRIBUTES');

                      echo $objCE->render(); 
                      Yay, jetzt kommen wir der Sache näher .
                      Jetzt kommt natürlich der gesamte Inhalt als String raus. Muss ich das jetzt noch in eine foreach-Schleife packen, damit ich die Werte trennen kann?

                      Kommentar


                      • #26
                        Ja, in der Schleife ausgeben, weil das CE Attribut ja auch in jedem Eintrag liegt.
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #27
                          Der Teil ist ja in der einer Schleife. Die Frage ist, wie ich den Output wieder auftrennen kann. Ausgehend von meinem obrigen Code kommt ja nur ein String raus.

                          Händlername1www.url1.deHändlername2www.url2.de

                          Das hätte ich natürlich gerne pro Eintrag getrennt.
                          Also:

                          Händlername1
                          www.url1.de

                          Händlername2
                          www.url2.de

                          Kommentar


                          • #28
                            Setz mal die setGenericAttribute Funktion mit rein und gib da die ID des CE Widget Attributes mit.
                            http://www.premium-contao-themes.com

                            Kommentar


                            • #29
                              Hm, mit der Funktion inkl. ID bleibt das div leer.

                              Kommentar


                              • #30
                                Ich weiss gar nicht mehr wofür die Funktion genau war Im CE Attribut hab ich die jedenfalls gesetzt.

                                Egal, hab es jetzt getestet und genauso funzt es:

                                Mein CE hat den Alias "test".


                                PHP-Code:
                                <?php foreach($this->entries as $entry): ?>

                                <?php
                                    $objCE 
                                = \PCT\CustomElements\Core\CustomElementFactory::findByAlias'test' );
                                    
                                $objCE->setOrigin($entry->get('id'),$this->getCustomCatalog()->getTable());
                                    echo 
                                $objCE->render();      
                                    
                                ?>
                                <?php 
                                endforeach; ?>
                                http://www.premium-contao-themes.com

                                Kommentar

                                Lädt...
                                X