Ergebnis 1 bis 20 von 20

Thema: (solved) Bildgröße bei "Als Bildfeld mit Vorschaubild benutzen" auswälhbar?

  1. #1
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard (solved) Bildgröße bei "Als Bildfeld mit Vorschaubild benutzen" auswälhbar?

    Hallo,

    ich bin gerade dabei meine neue Seite so aufzubauen, dass diese reponsive laufen soll. Hier würde ich gerne die neue Methode Bildgröße von Contao >=3.4 nutzen. Mir fiel aber leider gerade auf, wenn ich bei MM bei File den Harken "Als Bildfeld mit Vorschaubild benutzen" setzte, dass ich nicht die Auswahl nach meine Bildgrößen habe. Gibt es eine Möglichkeit hier auch die Bildgrößen picken zu können?

    Oder muss ich hierzu das Ausgabe Template umprogrammieren und mir die Bildgröße als Attribute in MM anlagen?

    vielen Dank
    Geändert von bongartz120 (15.08.2015 um 15:31 Uhr)

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    was ist das denn?!?!?

    Mir hilf aber leider gerade auf, wenn ich bei MM bei File den Harken
    Google-Übersetzung?

  3. #3
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Jap, ist noch nicht drinn. Kann man sich bisher am besten im Template anpassen. Wenn du da eine Auswahl brauchst, dann so wie du geschrieben hast mit einem extra select Attribut.

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  4. #4
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Ok, Danke für die schnelle Antwort.

    Ich habe jetzt versucht erst einmal das Template anzupassen und die Daten statisch anzugeben aber leider bekomme ich das nicht so richtig hin.

    Hier mein Code für das Template file aus MM:

    PHP-Code:
    <?php if (is_array($this->src)): ?>
        <?php foreach($this->src as $arrFile): ?>
            <p class="<?php echo $arrFile['class']; ?><?php echo $this->additional_class?>">
                <?php if ($this->settings->get('file_showLink')): ?>
                    <?php if ($this->settings->get('file_showImage')): ?>
                        <a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $arrFile['alt']; ?>" href="<?php echo $arrFile['file']; ?>">
                    <?php else: ?>
                        <a title="<?php echo $arrFile['alt']; ?>" href="<?php echo $arrFile['url']; ?>">
                    <?php endif; ?>
                <?php endif; ?>
                <?php if ($this->settings->get('file_showImage')): ?>
                    <?php if ($arrFile['isGdImage']): ?>
                        <?php echo $this->generateImage($arrFile['src'], $arrFile['caption']); ?>
                    <?php endif; ?>
                <?php else: ?>
                    <!--<img src="<?php// echo $arrFile['src']; ?>" alt="" />-->
                    <?php
                        $image_path 
    $arrFile['src']; 
                        
    $image = \Picture::create($image_path1)->getTemplateData(); 
                        
    $this->insert('picture_default'$this->picture); 
                        
    $this->insert('picture_default'$image);
                    
    ?>
                <?php endif; ?>
                <?php if ($this->settings->get('file_showLink')): ?>
                    </a>
                <?php endif; ?>
            </p>
        <?php endforeach; ?>
    <?php 
    endif; ?>
    Und die dazu gehörige Fehlermeldung:

    Code:
    Fatal error: Uncaught exception RuntimeException with message undefined method: Controller::insert thrown in composer/vendor/metamodels/core/src/MetaModels/Helper/ContaoController.php on line 82
    
    #0 [internal function]: MetaModels\Helper\ContaoController->__call('insert', Array)
    #1 [internal function]: MetaModels\Helper\ContaoController->insert('picture_default', NULL)
    #2 composer/vendor/metamodels/core/src/MetaModels/Render/Template.php(76): call_user_func_array(Array, Array)
    #3 templates/mm_attr_file_FE_img_single_1.html5(20): MetaModels\Render\Template->__call('insert', Array)
    #4 templates/mm_attr_file_FE_img_single_1.html5(20): MetaModels\Render\Template->insert('picture_default', NULL)
    #5 composer/vendor/metamodels/core/src/MetaModels/Render/Template.php(301): include('/www/htdocs/w00...')
    #6 composer/vendor/metamodels/core/src/MetaModels/Attribute/Base.php(508): MetaModels\Render\Template->parse('html5', false)
    #7 composer/vendor/metamodels/core/src/MetaModels/Item.php(113): MetaModels\Attribute\Base->parseValue(Array, 'html5', Object(MetaModels\Render\Setting\Simple))
    #8 composer/vendor/metamodels/core/src/MetaModels/Item.php(379): MetaModels\Item->internalParseAttribute(Object(MetaModels\Attribute\File\File), 'html5', Object(MetaModels\Render\Setting\Collection))
    #9 composer/vendor/metamodels/core/src/MetaModels/Items.php(255): MetaModels\Item->parseValue('html5', Object(MetaModels\Render\Setting\Collection))
    #10 composer/vendor/metamodels/core/src/MetaModels/Items.php(270): MetaModels\Items->parseValue('html5', Object(MetaModels\Render\Setting\Collection))
    #11 composer/vendor/metamodels/core/src/MetaModels/ItemList.php(804): MetaModels\Items->parseAll('html5', Object(MetaModels\Render\Setting\Collection))
    #12 composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/HybridList.php(105): MetaModels\ItemList->render('', Object(MetaModels\FrontendIntegration\Module\ModelList))
    #13 system/modules/core/classes/Hybrid.php(231): MetaModels\FrontendIntegration\HybridList->compile()
    #14 composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/MetaModelHybrid.php(99): Contao\Hybrid->generate()
    #15 composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/HybridList.php(55): MetaModels\FrontendIntegration\MetaModelHybrid->generate()
    #16 system/modules/core/elements/ContentModule.php(59): MetaModels\FrontendIntegration\HybridList->generate()
    #17 system/modules/core/library/Contao/Controller.php(476): Contao\ContentModule->generate()
    #18 system/modules/core/modules/ModuleArticle.php(213): Contao\Controller::getContentElement(Object(Contao\ContentModel), 'main')
    #19 system/modules/core/modules/Module.php(282): Contao\ModuleArticle->compile()
    #20 system/modules/core/modules/ModuleArticle.php(67): Contao\Module->generate()
    #21 system/modules/core/library/Contao/Controller.php(409): Contao\ModuleArticle->generate(false)
    #22 system/modules/core/library/Contao/Controller.php(269): Contao\Controller::getArticle(Object(Contao\ArticleModel), false, false, 'main')
    #23 system/modules/core/pages/PageRegular.php(133): Contao\Controller::getFrontendModule('0', 'main')
    #24 system/modules/core/controllers/FrontendIndex.php(267): Contao\PageRegular->generate(Object(Contao\PageModel), true)
    #25 index.php(20): Contao\FrontendIndex->run()
    #26 {main}
    Leider ist mein Wissen zu PHP und MM doch etwas beschränk :-(

    vielen Dank

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

  6. #6
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Diesen Betrag hatte ich mir vor meinem Post durchgelesen, aber leider führt die dort dargestellte Lösung auch nur zu Fehlern. Ich bin mir halt nicht sicher ob diese Beispiele vergleichbar sind oder nicht.

  7. #7
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    ... aber in Contao 3.4.x bist du unterwegs - oder?

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    hmmm... bin mir nicht sicher, aber das $this->insert sollte von https://github.com/contao/core/blob/...plate.php#L260 kommen und die Methode demnach zur Verfügung stehen...

  9. #9
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Nutze 3.5.2. ich hoffe das es hier gleich geblieben ist.

  10. #10
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    keine Ahnung - ggf. liegt es auch an MM, da m.E. MM für 3.5 noch nicht freigegeben ist...

  11. #11
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    So jetzt bin ich schon mal einen Schritt weiter. Ich bekomme eine "Ausgabe" und keine Fehler mehr. Nur dummerweise ist die "Ausgabe" leider leer.

    Ich denke das ich den Wert nicht nach $this zurückgeben muss sonder an ein anderes Objekt. Hier mein Code.

    PHP-Code:
    $picture = \Picture::create($arrFile['src'], 1)->getTemplateData();
                         
    $picture['alt'] = specialchars($arrItem['alt']);
                         
    $picture['title'] = specialchars($arrItem['title']);
                         
    $this->picture $picture
    Vielen Dank

  12. #12
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    mach doch mal ein
    PHP-Code:
    print_r($picture); 

  13. #13
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    So das hier steht im print drin. So wie ich es einschätze liegt es doch an der Übergabe zum Template oder?

    PHP-Code:
                    Array
    (
        [
    img] =&gt; Array
            (
                [
    src] =&gtfiles/kraftraum/bilder_inhalt/Images/Soar%20Island/overview.jpg
                
    [width] =&gt3201
                
    [height] =&gt2232
                
    [srcset] =&gtfiles/kraftraum/bilder_inhalt/Images/Soar%20Island/overview.jpg
                
    [sizes] =&gt60vw
            
    )

        [
    sources] =&gt; Array
            (
                [
    0] =&gt; Array
                    (
                        [
    src] =&gtfiles/kraftraum/bilder_inhalt/Images/Soar%20Island/overview.jpg
                        
    [width] =&gt3201
                        
    [height] =&gt2232
                        
    [srcset] =&gtfiles/kraftraum/bilder_inhalt/Images/Soar%20Island/overview.jpg
                        
    [media] =&gtmax-width600px
                    
    )

            )

        [
    alt] =&gt
        [
    title] =&gt


  14. #14
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von bongartz120 Beitrag anzeigen
    So wie ich es einschätze liegt es doch an der Übergabe zum Template oder?
    na ja, "Übergabe" ist ggf etwas zu viel gesagt - m.E. fehlt nur noch die richtige Ausgabe mit etwas HTML-Code und echo des gewünschten Attributes...

    Was ich etwas merkwürdig finde, dass im alt- und title-Tag nix drinn steht - steht in $arrItem['alt'] und $arrItem['title'] nichts drinn?

  15. #15
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Was mich wundert, das die Ausgabe leer ist und nix ausgeben wird. Ich habe das Gefühl das ich hier noch eine Methode benötige die die Ausgabe startet.

    Bei den anderen Beispielen wo etwas mit dem picture Element gemacht wurde, wurde das $picture auch immer ans Template zurückgeben, aber hier fehlt mir leider der Durchblick bei MM :-(

  16. #16
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    hmmm... ich sehe drei Möglichkeiten

    a) du siehst Dir mal an, wie die übrigen Infos der Items im Template ausgegeben werden
    b) Du wartest bis jemand im Forum die Aufgabe für Dich macht
    c) schreibst eine Anfrage unter "Kleinaufträge" in der entsprechenden Rubrik im Forum

  17. #17
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    Die restlichen Inhalte, kommen da direkt von MM so das man diese einfügen kann. Das Problem besteht ja dadrin, das MM nicht auf die Methode insert von Contao zugreifen kann.

    Hier läuft ja es in den Fehler :-(

    Code:
    Fatal error: Uncaught exception RuntimeException with message undefined method: Controller::insert thrown in composer/vendor/metamodels/core/src/MetaModels/Helper/ContaoController.php on line 82
    Hier ist die Frage, wie man MM diese Methode übergeben kann.

  18. #18
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von bongartz120 Beitrag anzeigen
    Hier ist die Frage, wie man MM diese Methode übergeben kann.
    => Hier ist die Frage, wie man im (MM-)Template diese Methode aufrufen kann.

  19. #19
    Contao-Fan
    Registriert seit
    12.01.2011.
    Beiträge
    322

    Standard

    So da ich nicht wusste wich ich das insert habe, habe ich einfach das insert umgangen und die default picture in das Template von MM File eingebunden. Das sit wohl nicht so updtesicher, aber jetzt läuft jetzt zumindest mal.

    Hier mein Code für die Template Datei:

    PHP-Code:
    <?php if (is_array($this->src)): ?>
        <?php foreach($this->src as $arrFile): ?>
            <p class="<?php echo $arrFile['class']; ?><?php echo $this->additional_class?>">
                <?php if ($this->settings->get('file_showLink')): ?>
                    <?php if ($this->settings->get('file_showImage')): ?>
                        <a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $arrFile['alt']; ?>" href="<?php echo $arrFile['file']; ?>">
                    <?php else: ?>
                        <a title="<?php echo $arrFile['alt']; ?>" href="<?php echo $arrFile['url']; ?>">
                    <?php endif; ?>
                <?php endif; ?>
                <?php if ($this->settings->get('file_showImage')): ?>
                    <?php if ($arrFile['isGdImage']): ?>
                        <?php echo $this->generateImage($arrFile['src'], $arrFile['caption']); ?>
                    <?php endif; ?>
                <?php else: ?>
                    <?php $picture = \Picture::create($arrFile['src'], 1)->getTemplateData();?>    
                         
                     <?php if ($picture[sources]): ?>
                       <picture>
                         <!--[if IE 9]><video style="display: none;"><![endif]-->
                         <?php foreach ($picture[sources] as $source): ?>
                           <source srcset="<?= $source['srcset'?>"<?php if (!empty($source['sizes'])) echo ' sizes="' $source['sizes'] . '"'?><?php if (!empty($source['media'])) echo ' media="' $source['media'] . '"'?>>
                         <?php endforeach; ?>
                         <!--[if IE 9]></video><![endif]-->
                     <?php endif; ?>
                     
                     <img src="<?= $picture[img]['src'?>"<?php if ($picture[img]['srcset'] !== $picture[img]['src']) echo ' srcset="' $picture[img]['srcset'] . '"'?><?php if (!empty($picture[img]['sizes'])) echo ' sizes="' $picture[img]['sizes'] . '"'; elseif (!$picture[sources]) echo ' width="' $picture[img]['width'] . '" height="' $picture[img]['height'] . '"'?> alt="<?= $picture->alt ?>"<?php if ($picture->title) echo ' title="' $picture->title '"'?><?php if ($picture->class) echo ' class="' $picture->class '"'?><?= $picture->attributes ?>>
                     
                     <?php if ($picture[sources]): ?>
                       </picture>
                     <?php endif; ?>
                     
                     <?php if ($picture[sources] || $picture[img]['src'] !== $picture[img]['srcset']): ?>
                       <script>
                         window.respimage && window.respimage({
                           elements: [document.images[document.images.length - 1]]
                         });
                       </script>
                     <?php endif; ?>

                <?php endif; ?>
                <?php if ($this->settings->get('file_showLink')): ?>
                    </a>
                <?php endif; ?>
            </p>
        <?php endforeach; ?>
    <?php 
    endif; ?>

  20. #20
    Contao-Nutzer
    Registriert seit
    05.02.2010.
    Ort
    Chemnitz
    Beiträge
    30

    Standard Beste Lösung bisher

    Die meiner Meinung nach beste Lösung bisher ist (updatesicher):

    * unter system/helper/ eine eigene functions.php (z.B. own_functions.php) anlegen
    * in system/config/initconfig.php
    PHP-Code:
    if(TL_MODE == 'FE') {
        
    // eigene functions einbinden
        
    include __dir__ '/../../system/helper/own_functions.php';

    * in own_functions.php
    PHP-Code:
    // vereinfachte version von \BaseTemplate->insert()

    function insertTemplate($name, array $data null) {
        
    $tpl = new \FrontendTemplate($name);
        if(
    $data !== null) {
            
    $tpl->setData($data);
        }
        echo 
    $tpl->parse();

    * im entsprechenden Template dann
    HTML-Code:
    	<?php $picture = \Picture::create($arrFile['file'], 1)->getTemplateData(); ?>
    	<?php insertTemplate('picture_default', $picture); ?>
    Nachteil dabei immer noch, dass create($arrFile['file'], [1]) [1] immer noch statisch die ID der entsprechenden Bildgrößendefinition ist, selbst wenn man in der initconfig.php mit

    Nachtrag:
    setzt man für 1 $this->settings->get('file_imageSize')[2] ein, kann man sich die korrekten Werte ziehen, nachdem man in der initconfig.php mit

    PHP-Code:
    $GLOBALS['TL_CROP'] = \System::getImageSizes(); 
    die entsprechenden Größen in die Auswahl im Backend bekommt.

    Besser wäre natürlich system/modules/metamodels/classes/src/MetaModels/Render/Template.php
    PHP-Code:
    class Template extends \BaseTemplate #oder \Template 
    Ich verstehe nicht, warum das nicht getan wurde, zumal viele Funktionen 1 zu 1 nachgeschrieben wurden - leider protected und nicht public - z.B. getFormat oder getName von \Template
    Geändert von RiggerofRiV (05.11.2015 um 14:23 Uhr) Grund: Bildgrößen lassen sich doch dynamisch auslesen

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
  •