Contao-Camp 2024
Ergebnis 1 bis 7 von 7

Thema: Aus Bild-Pfad ein Picture mit in Theme ersteller Bildgröße in Template verwenden

  1. #1
    Contao-Nutzer
    Registriert seit
    07.09.2012.
    Beiträge
    88

    Standard Aus Bild-Pfad ein Picture mit in Theme ersteller Bildgröße in Template verwenden

    Hallo zusammen,

    erst mal sorry für die Überschrift. Hier hoffentlich ein bisschen verständlicher, was ich machen will.

    Ich habe in einem html5 Template einen Pfad zu einem Bild. Daraus will ich mit dem neuen Picture-Feature von Contao 3.4 ein Picture erzeugen und ausgeben.

    Wichtig:
    1) Ich habe im Theme eine Bildgröße angelegt, 40 x 40 Pixel, exaktes Format, Zoom 100
    2) Er soll also nur den Teil ausgeben, der im Bild in der Dateiverwaltung als wichtig markiert ist.

    Im Template habe ich bisher folgenden Code:

    PHP-Code:
    $cart_image = \Picture::create($cart_image_path)->getTemplateData();
    $this->insert('picture_default'$cart_image); 
    Das tut auch alles schon. Das Problem ist nur, dass ich nicht weiß, wie ich meine im Backend erstellte Bildgröße übergeben kann. Kann ich irgendwo festlegen, dass er die Bildgröße mit der ID 1 verwenden soll?

    Bin für jeden Tipp dankbar.

    Viele Grüße,
    Vincent

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

    Standard

    Ja, über den zweiten Parameter von \Picture::create(…).

    PHP-Code:
        /**
         * Create a picture instance from the given image path and size
         *
         * @param string|File   $file The image path or File instance
         * @param array|integer $size  The image size as array (width, height, resize mode) or an tl_image_size ID
         *
         * @return static The created picture instance
         */
        
    public static function create($file$size=null

  3. #3
    Contao-Nutzer
    Registriert seit
    07.09.2012.
    Beiträge
    88

    Standard

    *facepalm* Und ich ging fest davon aus, dass es was mit 'picture_default' zu tun hat... Danke!!

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

    Standard

    Hallo Vincent,

    ist es möglich das du deine Lösung für das Problem hier kurz in der gesamten Länge posten kannst?

    Ich stehe gerade vor dem selben Problem und weiß gerade noch nicht so ganz was ich wo einfügen bzw. ändern muss.

    vielen Dank im voraus an dich :-)

  5. #5
    Contao-Nutzer
    Registriert seit
    07.09.2012.
    Beiträge
    88

    Standard

    Hallo bongartz,

    sorry, sehe deine Frage erst jetzt. Hoffentlich ist das noch aktuell.

    Hier der Code zur Bildgenerierung:

    PHP-Code:
    <?php
    $image_path 
    "files/foobar.jpg";
    $image = \Picture::create($image_path1)->getTemplateData(); // 1 ist die ID der Bildgröße, einfach durch Deine ID ersetzen
    $this->insert('picture_default'$image);
    ?>

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

    Standard

    Hallo,

    also ich habe es jetzt mal probiert und bekomme ein massives Problem mit dem insert.

    Hier mein Code und der Fehler den ich bekommen. Ich hoffe ihr könnt mir hier weiter helfen. Als Template nutzte ich die Vorlage von MetaModels File.

    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    
                        
    //echo $this->generateImage($arrFile['src'], $arrFile['caption']);          
                         
    $picture = \Picture::create($arrFile['src'], 1)->getTemplateData();
                         
    $picture['alt'] = specialchars($arrItem['alt']);
                         
    $picture['title'] = specialchars($arrItem['title']);
                         
    $this->insert('picture_default'$picture); 
                    
    ?>
                <?php endif; ?>
                <?php if ($this->settings->get('file_showLink')): ?>
                    </a>
                <?php endif; ?>
            </p>
        <?php endforeach; ?>
    <?php 
    endif; ?>
    Jetzt noch mein 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
    
    #0 [internal function]: MetaModels\Helper\ContaoController->__call('insert', Array)
    #1 [internal function]: MetaModels\Helper\ContaoController->insert('picture_default', Array)
    #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(22): MetaModels\Render\Template->__call('insert', Array)
    #4 templates/mm_attr_file_FE_img_single_1.html5(22): MetaModels\Render\Template->insert('picture_default', Array)
    #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}
    Vielen Dank

  7. #7
    Contao-Nutzer Avatar von xava
    Registriert seit
    13.06.2012.
    Beiträge
    22

    Standard

    Zitat Zitat von Vincent Beitrag anzeigen
    Hallo bongartz,

    sorry, sehe deine Frage erst jetzt. Hoffentlich ist das noch aktuell.

    Hier der Code zur Bildgenerierung:

    PHP-Code:
    <?php
    $image_path 
    "files/foobar.jpg";
    $image = \Picture::create($image_path1)->getTemplateData(); // 1 ist die ID der Bildgröße, einfach durch Deine ID ersetzen
    $this->insert('picture_default'$image);
    ?>

    Danke dir, der Code hat mir bei meinem Problem geholfen. :-)

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
  •