Contao-Camp 2024
Ergebnis 1 bis 3 von 3

Thema: str_replace funzt nicht im template

  1. #1
    Contao-Nutzer
    Registriert seit
    12.02.2014.
    Beiträge
    201

    Standard str_replace funzt nicht im template

    Hallo zusammen,

    ich versuche in einem Template aus dem Dateinamen des Videos automatisch den Dateinamen des Vorschaubildes zu generieren. Dazu will ich einfach nur aus ".mp4" gegen ".png" austauschen. Aber es geht verdammt nochmal nicht und ich werd noch wahnsinnig! Wo ist denn hier der Fehler? Er spuckt immer den Videodateinamen inkl. .mp4 als poster aus, anstatt das ".mp4" zu ersetzen. Hilfe-

    PHP-Code:
    <?php
            
    if ($this->poster){
                
    $poster="{{file::$this->poster}}";
            } else {
                
    $poster str_replace(".mp4"".png""{{file::$this->video}}");
                echo 
    $poster."<br>";
            }
        
    ?>
        <video poster="<?= $poster ?>" preload="none" controls>
              <source type="video/mp4" src="{{file::<?= $this->video ?>}}">
          </video>

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

    Standard

    Das funktioniert so nicht. Du versuchst ein str_replace auf einen Insert-Tag zu machen. Der Insert-Tag wird aber erst später ersetzt. Anstatt denn {{file::*}} Insert Tag zu benutzen solltest du \Contao\FilesModel::findById(…) benutzen.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    12.02.2014.
    Beiträge
    201

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das funktioniert so nicht. Du versuchst ein str_replace auf einen Insert-Tag zu machen. Der Insert-Tag wird aber erst später ersetzt. Anstatt denn {{file::*}} Insert Tag zu benutzen solltest du \Contao\FilesModel::findById(…) benutzen.
    Danke. Hat geklappt. Hoffentlich merk ich mir das mal endlich.



    PHP-Code:
        <?php
            
    if ($this->poster){
                
    $poster="{{file::$this->poster}}";
            } else {
                
    $objFile = \FilesModel::findById($this->video); 
                
    $poster str_replace(".mp4",".png",$objFile->path);
            }
        
    ?>
        <video poster="<?= $poster ?>" preload="none" controls>
              <source type="video/mp4" src="{{file::<?= $this->video ?>}}">
         </video>

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
  •