Ankündigung
Einklappen
Keine Ankündigung bisher.
CC: Attribut CustomElement Widget
Einklappen
X
-
Leider kein Zähler vorhanden. Hab das jetzt relativ unkonventionell, aber funktionierend lösen können.
-
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:
-
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; ?>
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; ?>
Einen Kommentar schreiben:
-
Ich weiss gar nicht mehr wofür die Funktion genau warIm 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:
-
Setz mal die setGenericAttribute Funktion mit rein und gib da die ID des CE Widget Attributes mit.
Einen Kommentar schreiben:
-
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:
-
Ja, in der Schleife ausgeben, weil das CE Attribut ja auch in jedem Eintrag liegt.
Einen Kommentar schreiben:
-
Zitat von Tim Beitrag anzeigenVielleicht 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();
.
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:
-
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:
-
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:
-
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:
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; ?>
Einen Kommentar schreiben:
-
Zitat von Tim Beitrag anzeigenNaja, 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
Bislang aber auch noch kein Ergebnis bekommen, was aber dann wohl eher noch an falschen Werten meinerseits liegt.
Einen Kommentar schreiben:
-
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:
-
Zitat von Tim Beitrag anzeigenCE 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.
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:
Einen Kommentar schreiben: