Ankündigung

Einklappen
Keine Ankündigung bisher.

CC: Attribut CustomElement Widget

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

  • D23
    antwortet
    Leider kein Zähler vorhanden. Hab das jetzt relativ unkonventionell, aber funktionierend lösen können.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Schau dir mal die Templates von den CEs in Quantum oder so an, die mit duplizierbaren Gruppen arbeiten.
    CE schreibt hinter jedes Kopie-Feld einen Zähler z.b. ->field('myField#2')->value();

    Einen Kommentar schreiben:


  • D23
    antwortet
    Hab ich. Werte werden auch ausgespuckt, aber wie gesagt: alles in einem einzigen String ohne Punkt und Komma.
    Kann ich das direkt im CE Template nochmal aufsplitten? Ein Eintrag in dem Widget hat ja immer nur 2 Felder und die würde ich gerne im Template bündeln.

    Könnte man das nicht per Hand irgendwie machen?
    Also anstelle von:
    PHP-Code:
    <?php foreach($this->fields() as $field): ?>
         <span><?php echo $field->html(); ?></span>
    <?php endforeach; ?>
    eher was in der Richtung:
    PHP-Code:
    <?php foreach($this->fields() as $field): ?>
         <div class="entry">
             <span><?php echo $field(1)->value(); ?></span>
             <span><?php echo $field(2)->value(); ?></span>
         </div>
    <?php endforeach; ?>
    Mir ist klar, dass dieser Code nicht funktioniert, aber ich glaube die Idee kommt rüber.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    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; ?>

    Einen Kommentar schreiben:


  • D23
    antwortet
    Hm, mit der Funktion inkl. ID bleibt das div leer.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Setz mal die setGenericAttribute Funktion mit rein und gib da die ID des CE Widget Attributes mit.

    Einen Kommentar schreiben:


  • D23
    antwortet
    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

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Ja, in der Schleife ausgeben, weil das CE Attribut ja auch in jedem Eintrag liegt.

    Einen Kommentar schreiben:


  • D23
    antwortet
    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?

    Einen Kommentar schreiben:


  • D23
    antwortet
    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}}"); ?>

    Einen Kommentar schreiben:


  • Tim
    antwortet
    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, 12:27.

    Einen Kommentar schreiben:


  • D23
    antwortet
    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: 106
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.

    Einen Kommentar schreiben:


  • D23
    antwortet
    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.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    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

    Einen Kommentar schreiben:


  • D23
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X