Ankündigung

Einklappen
Keine Ankündigung bisher.

CC: Attribut CustomElement Widget

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

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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • Tim
    antwortet
    php sagt es dir ja, Zeile 128
    PHP-Code:
    $arrTranslations deserialize($objResult->{$strTranslationField}) ?: array();
              foreach(
    $arrTranslations as $lang => $arrTranslation
    Du schickst ein Feld rein für ein Übersetzungs-Widget (Name ist in der Variablen $strTranslationField), was hier deserialisiert wird und nach dem deserialisieren kein Array ist. Damit knallt das foreach.
    Klar, man könnte jetzt hier ein Feld angeben, was auch als blob speichert oder als serialisiertes Array z.B. headline in tl_content oder multiSRC.
    Dann knallt das foreach auch nicht. Trotzdem werden in dem Array keine Übersetzungen gefunden Es kommt aber kein php Fehler.

    Einen Kommentar schreiben:


  • D23
    antwortet
    Stimmt. Fehler ist jetzt weg. Magst Du mir kurz verraten an welcher Stelle der Fehlermeldung das erkennbar war? Für mich ist das jetzt eher so "What kind of sorcery is this?!"

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Du hast wahrscheinlich ein Übersetzungs-Widget angegeben in den Attribut-Einstellungen, aber eigentlich gibt es gar keins. Dein Fehler entsteht, weil nach Übersetzungen gesucht wird in einem vermeintlichen Übersetzungsfeld

    Einen Kommentar schreiben:


  • D23
    antwortet
    Hab das mal im Code ergänzt. Grundsätzlich scheint es zu funktionieren, da im Dropdown jetzt auch Werte erscheinen. Allerdings dreht das BE mit Fehlern hohl

    Warning: Invalid argument supplied for foreach() in system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Attributes/SelectDb/SelectDb.php on line 128
    #0 system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Attributes/SelectDb/SelectDb.php(128): __error(2, 'Invalid argumen...', '/Applications/M...', 128, Array) #1 system/modules/core/library/Contao/Widget.php(1388): PCT\CustomElements\Attributes\SelectDb->getOptions(Object(Contao\DC_Table)) #2 system/modules/pct_customelements/PCT/CustomElements/Core/Attribute.php(593): Contao\Widget::getAttributesFromDca(Array, '381otqtcvow40ox', '1', '381otqtcvow40ox', 'cc_productvaria...', Object(Contao\DC_Table)) #3 system/modules/pct_customelements/PCT/CustomElements/Core/Attribute.php(949): PCT\CustomElements\Core\Attribute->generateWidget(Object(Contao\DC_Table)) #4 system/modules/pct_customelements/PCT/CustomElements/Widgets/WidgetCustomElement.php(699): PCT\CustomElements\Core\Attribute->prepareForDca(Object(Contao\DC_Table)) #5 system/modules/pct_customelements/PCT/CustomElements/Widgets/WidgetCustomElement.php(794): PCT\CustomElements\Widgets\WidgetCustomElement->buildGroups() #6 system/modules/pct_customelements_plugin_customcatalog/PCT/CustomElements/Attributes/CustomElement/CustomElement.php(112): PCT\CustomElements\Widgets\WidgetCustomElement->generate() #7 system/modules/core/classes/DataContainer.php(221): PCT\CustomElements\Attributes\CustomElement->generateCustomElementWidget(Object(Contao\DC_Tabl e), '') #8 system/modules/core/drivers/DC_Table.php(1928): Contao\DataContainer->row('{product_varian...') #9 system/modules/core/classes/Backend.php(650): Contao\DC_Table->edit() #10 system/modules/core/controllers/BackendMain.php(131): Contao\Backend->getBackendModule('products') #11 contao/main.php(20): Contao\BackendMain->run() #12 {main}

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Die Ladereihenfolge bzw. das Laden von Feldern ist hier ausschlaggebend. CE läd Felder über einen generischen Namen (passwortähnliche Feldnamen, damit man immer schön Alias ändern kann und keine Daten verloren gehen). CC allerdings arbeitet direkt mit den Alias. Hier mischt sich gerade beides. CC arbeitet hier die Felder auf und prüft natürlich ob man in einem CC ist -> Ja, ist man. Damit werden die Felder über ihren Alias geholt.
    Ich hab ne kleine Prüfung voran gesetzt.

    Ich mach mal nen kleinen Screenshot, falls du es selbst einsetzen willst:
    pct_customelements_plugin_customcatalog/PCT/CustomElements/Plugins/CustomCatalog/Core/AttributeFactory.php, Zeile 251
    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: image_123.jpg
Ansichten: 252
Größe: 65,0 KB
ID: 964
    Zuletzt geändert von Tim; 23.09.2015, 13:24.

    Einen Kommentar schreiben:


  • D23
    antwortet
    Zitat von Tim Beitrag anzeigen

    jaja, war mehr rethorischer Natur. Selects mit Db-Abfragen sind meistens nicht einfach

    Stichwort Tags und so

    Also, wie isses? Hab ich einen Bug gefunden? Kannst Du das reproduzieren? Wird es Nachts immer dunkel? Fragen über Fragen...

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von D23 Beitrag anzeigen


    Gibt es – nennt sich "Auswahl-Datenbank, einfach (Select/Radio)" bzw. selectdb.
    jaja, war mehr rethorischer Natur. Selects mit Db-Abfragen sind meistens nicht einfach

    Einen Kommentar schreiben:


  • D23
    antwortet
    Zitat von Tim Beitrag anzeigen
    Puhh... "einfach, DB" gibts sowas überhaupt? . Muss ich mir anschauen. Wir eine Referenz verloren gehen.

    Gibt es – nennt sich "Auswahl-Datenbank, einfach (Select/Radio)" bzw. selectdb.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Puhh... "einfach, DB" gibts sowas überhaupt? . Muss ich mir anschauen. Wir eine Referenz verloren gehen.

    Einen Kommentar schreiben:


  • D23
    antwortet
    Also anfänglich war es Kategorie "Was das? Was macht dat? Kann man das essen?" ... Mittlerweile bin ich aber an dem Punkt dass ich sagen muss, wenn das sauber arbeitet, ist das der absolute Hammer!

    Wir können den Thread übrigens wohl doch noch nicht dichtmachen
    Aktuell funktioniert das Kopieren, verschieben und speichern wunderbar.
    Was aber nicht zu funktionieren scheint:
    Wenn das eingebundene CE eine Auswahl (einfach, DB) enthält, bleibt die Dropdown-Liste dieses Feldes leer.

    Einen Kommentar schreiben:


  • Tim
    antwortet
    Zitat von D23 Beitrag anzeigen
    Hervorragend. Gefixed mit aktueller Version! Thread kann also ggf. geschlossen werden. Danke vielmals.
    Brauchst du das wirklich produktiv oder nur bissel zum Fun haben?
    Das CE Attribut war auch bei mir nur eine Art "mal sehen ob es klappt"... "Hurra, die Eierlegendewollmichsau geschaffen"

    Einen Kommentar schreiben:

Lädt...
X