Ergebnis 1 bis 39 von 39

Thema: DCA Einschränkung der Optionen für "Bildbreite und Bildhöhe" am CE "Image"

  1. #1
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard DCA Einschränkung der Optionen für "Bildbreite und Bildhöhe" am CE "Image"

    Hallo Community,

    ich suche eine Möglichkeit via dcaconfig am "CE Image" die Ausgabe im Dropdown zur "Bildbreite und Bildhöhe" auf den Array "Vordefinierte Größen" einzuschränken. Die Arrays "Relatives Format" und "Exaktes Format" sollen demnach nicht zur Verfügung stehen bzw. angezeigt werden. Kann mir jemand weiterhelfen?

    MfG
    Peter

  2. #2
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    Ich glaube du suchst das hier:

    PHP-Code:
    /**
     * Image crop modes
     */
    $GLOBALS['TL_CROP'] = array
    (
        
    'relative' => array
        (
            
    'proportional''box'
        
    ),
        
    'exact' => array
        (
            
    'crop',
            
    'left_top',    'center_top',    'right_top',
            
    'left_center''center_center''right_center',
            
    'left_bottom''center_bottom''right_bottom'
        
    )
    ); 
    einfach dieses Array in einem eigenen Modul überschreiben oder gleich direkt in der initconfig.php
    Geändert von gebi84 (06.06.2015 um 18:22 Uhr)

  3. #3
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo gebi84,

    ['TL_CROP'] - das wars. Besten Dank!

    MfG
    Peter

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Das schränkt die Optionen aber für alle Bilder ein, nicht nur für das Bild Inhaltselement.

  5. #5
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo Spooky,

    da hast Du natürlich vollkommen Recht. Für meinen konkreten Anwendungsfall ist dies aber auch absolut passend.

    Vielleicht kannst Du zur Vervollständigung noch die passende Einschränkung für das "CE Image" posten?

    Noch drei zusätzliche Fragen zum Thema:

    01: Wie kann die Angabe von "Bildbreite und Bildhöhe" global für alle CE als Pflichtfeld deklariert werden?

    02: Wie kann die Angabe von "Bildbreite und Bildhöhe" nur für das "CE Image" als Pflichtfeld deklariert werden?

    03: Warum muss der o.g. Eintrag eigentlich in der "initconfig.php" und nicht der "dcaconfig.php" gemacht werden?

    MfG
    Peter

  6. #6
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    Hi Peter,

    Vielleicht kannst Du zur Vervollständigung noch die passende Einschränkung für das "CE Image" posten?
    da das Content Element Image das gleiche DCA Feld "size" verwendet wie alle anderen Bilder:

    PHP-Code:
    'size' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_content']['size'],
                
    'exclude'                 => true,
                
    'inputType'               => 'imageSize',
                
    'options'                 => System::getImageSizes(),
                
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
                
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'),
                
    'sql'                     => "varchar(64) NOT NULL default ''"
            
    ), 
    müsstest du bei options das Array hinterlegen hinterlegen.


    01: Wie kann die Angabe von "Bildbreite und Bildhöhe" global für alle CE als Pflichtfeld deklariert werden?
    Wie du im obigen Code siehst, wird hier der inputType imageSize geladen.
    Du kannst mit 'mandatory' => true:
    PHP-Code:
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50''mandatory' => true), 
    nun das gesamte Widget als Plfichtfeld deklarieren.

    02: Wie kann die Angabe von "Bildbreite und Bildhöhe" nur für das "CE Image" als Pflichtfeld deklariert werden?
    Soviel ich weiss ist dies nur möglich in dem du ein eigenes DCA-Feld machst.

    03: Warum muss der o.g. Eintrag eigentlich in der "initconfig.php" und nicht der "dcaconfig.php" gemacht werden?
    Es sollte beides gehen. initconfig wird nur zuerst geladen. Da dies aber keine DCA-Anweisung ist, dachte ich mir ist es in der initconfig evt. besser aufgehoben.

    lg
    gebi84

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von mandrake Beitrag anzeigen
    Vielleicht kannst Du zur Vervollständigung noch die passende Einschränkung für das "CE Image" posten?
    Das ist nicht ganz so trivial und kann es daher auch nicht aus dem FF posten. Du musst dir für tl_content einen Load Callback machen, dort überprüfen ob $dc->activeRecord->type == 'image' ist und dann $GLOBALS['TL_DCA']['tl_content']['fields']['size']['options'] dementsprechend verändern bzw. überschreiben.


    Zitat Zitat von mandrake Beitrag anzeigen
    01: Wie kann die Angabe von "Bildbreite und Bildhöhe" global für alle CE als Pflichtfeld deklariert werden?
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']['mandatory'] = true

    Zitat Zitat von mandrake Beitrag anzeigen
    02: Wie kann die Angabe von "Bildbreite und Bildhöhe" nur für das "CE Image" als Pflichtfeld deklariert werden?
    Da musst du dir auch wieder einen Load Callback machen, dort überprüfen ob $dc->activeRecord->type == 'image' ist und dann
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']['mandatory'] = true
    setzen.


    Zitat Zitat von mandrake Beitrag anzeigen
    03: Warum muss der o.g. Eintrag eigentlich in der "initconfig.php" und nicht der "dcaconfig.php" gemacht werden?
    In der dcaconfig.php ist es zu spät - falls du die Bildgrößen für alle Elemente ändern willst und daher direkt das $GLOBALS['TL_CROP'] array ändern möchtest. Sieh' dir mal die DCA Definition des 'size' fields an:
    PHP-Code:
            'size' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_content']['size'],
                
    'exclude'                 => true,
                
    'inputType'               => 'imageSize',
                
    'options'                 => System::getImageSizes(),
                
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
                
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'),
                
    'sql'                     => "varchar(64) NOT NULL default ''"
            
    ), 
    Mit System::getImageSizes() wird das options array erzeugt. Diese Funktion holt sich alle Bildgrößen aus der Datenbank (in Contao 3.4) und merged es mit den einträgen aus $GLOBALS['TL_CROP'] (in Contao 3.2 wird direkt $GLOBALS['TL_CROP'] dorthin kopiert). Wenn du in der dcaconfig.php, welche nach allen anderen DCAs ausgeführt wird, das $GLOBALS['TL_CROP'] array änderst, hat dies natürlich keine Auswirkung mehr. Du kannst aber in der dcaconfig.php nach wie vor zB nur für Inhaltselemente die Optionen von $GLOBALS['TL_DCA']['tl_content']['fields']['size']['options'] ändern. zB
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['options'] = array
    (
        
    'relative' => array
        (
            
    'proportional''box'
        
    ),
        
    'exact' => array
        (
            
    'crop',
            
    'left_top',    'center_top',    'right_top',
            
    'left_center''center_center''right_center',
            
    'left_bottom''center_bottom''right_bottom'
        
    )
    ); 
    Geändert von Spooky (07.06.2015 um 09:23 Uhr)

  8. #8
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    @spooky ich war schneller

    aber deine Antwort ist ausführlicher

  9. #9
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo Ihr beiden,

    vielen Dank für die Code Schnipsel und Erläuterungen, das hilft mir wirklich sehr gut weiter!

    MfG
    Peter

  10. #10
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo nochmal,

    wenn ich via "initconfig.php"

    Code:
    $GLOBALS['TL_CROP'] = array(
        'relative' => array(), 
        'exact' => array()
    );
    setze und in der "dcaconfig.php" die Pflichtfeld Deklaration

    Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']['mandatory'] = true;
    vermerke, dann sind wie gewünscht nur die "Vordefinierten Größen" im Dropdown wählbar.

    Das Problem ist, dass - trotz Auswahl - beim speichern des CE die Meldung "Bitte füllen Sie das Feld "Bildbreite und Bildhöhe aus!"" ausgegeben wird.

    Wo liegt der Fehler?

    MfG
    Peter

  11. #11
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    hast du alle 3 Felder ausgefüllt?

    Gesendet von meinem GT-N7100 mit Tapatalk

  12. #12
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo gebi84,

    sorry, aber welche drei Felder meinst Du jetzt bitte genau?

    MfG
    Peter

  13. #13
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo gebi84,

    mit Auswahl eines Dropdown Eintrags werden die Felder "Bildbreite" und "Bildhöhe" doch automatisch ausgefüllt?!

    Insofern, ja, es sind alle drei Felder ausgefüllt.

    MfG
    Peter

  14. #14
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo gebi84,

    Deine Frage, war gar nicht so dumm.

    Könnte das Problem vielleicht darin liegen, dass bei der Auswahl einer "Vordefinierten Größe" keine realen Werte, sondern quasi Placeholder für die responsive Image Größen eingetragen werden und dadurch nicht von der Pflichtfeld Prüfroutine erkannt werden?!

    MfG
    Peter

  15. #15
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    PHP-Code:
    $GLOBALS['TL_CROP'] = array(
        
    'relative' => array(), 
        
    'exact' => array()
    ); 
    hier fehlen die Angaben -> ergo ist es empty und mandatory schlägt fehl ;-)

  16. #16
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo gebi84,

    in diesen beiden Bereichen sollen ja auch keine Einträge zur Auswahl stehen, sondern eben nur die responsive Images Definitionen im Array "Vordefinierte Größen" (siehe meinen ersten Beitrag mit der ursprünglichen Zielsetzung).

    MfG
    Peter

  17. #17
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    Hast du eine vordefinierte Bildgrösse angelegt?

  18. #18
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Ja, es sind entsprechende Bildgrößen im Theme angelegt.

  19. #19
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Die ich - wie gesagt - ja auch problemlos einem Bild zuweisen kann.

  20. #20
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    ich habe die selbe config angelegt und eine vordefinierte Grösse, wenn ich die Grösse auswähle gehts bei mir.
    Wird denn bei Breite und Höhe was eingefüllt?

    edit: das mandatory bezieht sich auf das gesamte Widget, sprich es muss in allen 3 Feldern was stehen.
    Geändert von gebi84 (07.06.2015 um 20:36 Uhr)

  21. #21
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Ja, siehe Screenshot:bildgroessen.png

  22. #22
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    ah das liegt daran, dass du den Rest vom eval überschrieben hast, nimm mal diesen Code in die dcaconfig:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size'] = array(
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_content']['size'],
        
    'exclude'                 => true,
        
    'inputType'               => 'imageSize',
        
    'options'                 => System::getImageSizes(),
        
    'reference'               => &$GLOBALS['TL_LANG']['MSC'],
        
    'eval'                    => array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'),
        
    'sql'                     => "varchar(64) NOT NULL default ''"
    ); 

  23. #23
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Mit diesem Code wird der Bereich "Bildbreite und Bildhöhe" überhaupt nicht mehr angezeigt.

  24. #24
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    stimmt, da findet er wahrscheinlich den callback nicht, das genügt:

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']= array('rgxp'=>'natural''includeBlankOption'=>true'nospace'=>true'helpwizard'=>true'tl_class'=>'w50'); 
    habe ich diesmal zuerst getestet :-)

  25. #25
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Leider nein, keine Wirkung - es wird immer noch bemängelt, dass die Felder ausgefüllt werden müssen.

  26. #26
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    hmm cache?

    Gesendet von meinem GT-N7100 mit Tapatalk

  27. #27
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Nein, der Cache macht keine Probleme. Ich werde die Pflichtfeldprüfung notgedrungen erst einmal deaktivieren und morgen weiter nach einer Lösung suchen. Problem ist eben, dass ab morgen wieder der Kunde im System unterwegs ist und er die Angaben zur Bildgröße nicht konsistent macht. Ich danke Dir auf jeden Fall recht herzlich für die tatkräftige Unterstützung - toller Einsatz.

  28. #28
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    ich schau morgen nochmal ob ich was rausfinde. schönen Abend noch

    Gesendet von meinem GT-N7100 mit Tapatalk

  29. #29
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    dito cu

  30. #30
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von gebi84 Beitrag anzeigen
    ah das liegt daran, dass du den Rest vom eval überschrieben hast, nimm mal diesen Code in die dcaconfig:
    Wenn er nur
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']['mandatory'] = true
    genommen hat, ist nicht der Rest vom 'eval' überschrieben.


    Wie sieht nun der gesamte Code aus?

  31. #31
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Hallo Spooky,

    derzeit habe ich nur die hier genannten beiden Einträge aktiv und alles weitere entfernt: Beitrag #10

    MfG
    Peter

  32. #32
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Ich würde wenn dann
    PHP-Code:
    $GLOBALS['TL_CROP'] = array(); 
    machen. Aber unter Umständen ist das imageSize Input field schlicht nicht dafür gemacht mandatory zu sein. Müsste ich erst testen.

  33. #33
    Contao-Nutzer Avatar von gebi84
    Registriert seit
    22.10.2010.
    Ort
    Österreich/Vorarlberg
    Beiträge
    91

    Standard

    das vermute ich auch , dass wollte ich morgen testen. ob da was beim widget validator schief läuft

    Gesendet von meinem GT-N7100 mit Tapatalk

  34. #34
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Anstatt das field mandatory zu machen könntest du in der dcaconfig.php ja auch einfach das default mit einer Responsive Image Size ID belegen lassen - ich schätze mal du willst sicher gehen, dass der Redakteur dort nicht gar nichts auswählt.

  35. #35
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Korrekt, das ist ein guter Vorschlag. Was mich direkt zur nächsten Frage führt - wie mache ich das?

  36. #36
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Hm, gute Frage in dem Fall, ich glaube
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['size']['default'] = array(null,null,1); 
    Wobei du die '1' natürlich mit einer gültigen ID ersetzen musst.

  37. #37
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Ja, das funktioniert - vielen Dank!

    Falls einer von Euch in den nächsten Tagen trotzdem noch neuen Input zum Thema "Pflichtfeld" liefern könnte, wäre ich dankbar.

  38. #38
    Contao-Fan Avatar von mandrake
    Registriert seit
    19.06.2009.
    Ort
    Düsseldorf
    Beiträge
    461

    Standard

    Es verhält sich tatsächlich so, wie ich es bereits in Beitrag #14 vermutet habe: Es werden Placeholder eingesetzt, die von der Validierung nicht berücksichtigt werden. Bis Leo ggf. eine entsprechende Validierung im Widget nachrüstet, bleibt nur die Möglichkeit einen eigenen Callback für die Validierung zu integrieren.

    Ich danke Euch nochmals für die Unterstützung.

  39. #39
    Community-Moderator Avatar von stefan-at-work
    Registriert seit
    05.06.2009.
    Ort
    Bad Segeberg
    Beiträge
    1.780
    Partner-ID
    634

    Standard

    @spooky - ich greif Deine Lösung aus #36 noch einmal auf. Bei mir ist es so, das die Redakteure lediglich im Newsbereich (Newsteaser + Inhaltselement ce_text) die Bildgrößen voreingestellt bekommen sollen. Für Teaserbild und Bild innerhalb des ce_text sind bereits Größen definiert.

    Gibt es eine Möglichkeit, die Lösung aus #36 nur auf Teaser + ce_text innerhalb der Nachrichten zu beschränken?
    Geändert von stefan-at-work (27.12.2016 um 16:03 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •