Ergebnis 1 bis 36 von 36

Thema: Meta-Informationen im BE unter Dateiverwaltung um zusätzliches Feld erweitern

  1. #1
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard Meta-Informationen im BE unter Dateiverwaltung um zusätzliches Feld erweitern

    Hi zusammen,
    ich versuche gerade ein zusätzliches Feld für "Copyright" bei den Meta-Informationen in der Dateiverwaltung anzulegen.
    Habe dafür in der dcaconfig.php folgende Zeile hinzugefügt:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields'][] = 'copyright'
    Übersetzung in der langconfig.php:
    PHP-Code:
    $GLOBALS['TL_LANG']['MSC']['aw_copyright'] = 'Copyright Hinweis'
    Soweit so gut… das Feld wird jetzt angezeigt und ich kann es ausfüllen.
    Nur mit der Ausgabe im Template komme ich nicht weiter. Ist das überhaupt der richtige Weg?

    Ziel:
    Bildschirmfoto 2016-02-18 um 23.06.33.png

  2. #2
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.332
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du wirst Contao auf mitteilen müssen in welcher Form es die in Deinem Feld erfassten Daten speichern soll.

    Schau mal bitte hier: https://docs.contao.org/books/manual...nzufuegen.html

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

    Standard

    Das ist kein eigenes Feld sonder gehört zum Feld "meta". Eigentlich sollte das reichen.

  4. #4
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Danke für eure Antworten. Ich stehe hier vielleicht auf dem Schlauch.

    Felder unter BE > Artikel/Inhaltselement habe ich schon einmal erfolgreich hinzugefügt: Bildschirmfoto 2016-02-19 um 11.04.40.png
    Auch die Ausgabe im Template funzt super.
    Zitat Zitat von lucina Beitrag anzeigen
    Jetzt möchte ich aber unter Dateiverwaltung ein Feld hinzufügen: Bildschirmfoto 2016-02-19 um 11.13.32.png
    Im Backend angezeigt wird das Feld ja – mein Problem ist jetzt, dass ich nicht weiss wo/ob diese Informationen abgelegt werden. Datenbank / Meta.txt (gibt's die bei 3.5 noch?)

    Und wenn ja, wie ich sie dann im Template ausgebe…

    Ich hoffe ich stelle mich hier net zu dusselig an

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

    Standard

    Die Informationen stehen dann als serialisiertes Array in der tl_files Tabelle im 'meta' Field. Dort könntest du mal nachsehen, ob für diese Datei der Copyright Hinweis zusätzlich gespeichert wurde. Dann müsstest du noch überprüfen, ob Contao wirklich alle Werte aus dem meta Field an die jeweiligen Templates übergibt oder nicht.

  6. #6
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Alles klar, wühle ich mich mal durch… dann bis gleich

  7. #7
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Also, der Eintrag in das neue Copyright-Fenster ist in der Datenbank unter "tl_files > meta" gespeichert:
    Code:
    a:1:{s:2:"de";a:4:{s:5:"title";s:9:"Der Titel";s:4:"link";s:8:"Der Link";s:7:"caption";s:20:"Die Bildunterschrift";s:9:"copyright";s:17:"© HeiligerBimBam";}}
    Wenn ich nun aber z.B. im ce_image.html5 Template die Template-Vars ausgebe wurde nichts übergeben.

    Muss ich nun, um den Eintrag ins Frontend zu bekommen noch das DCA von t-content.php > image um ein Feld erweitern und dieses dann automatisch befüllen lassen? Also so wie das Feld Bildunterschrift?

    In dem Fall müsste ich in der tl_contetn.php in diesem Abschnitt bestimmt auch noch was anpassen, oder?
    PHP-Code:
        /**
         * Pre-fill the "alt" and "caption" fields with the file meta data
         *
         * @param mixed         $varValue
         * @param DataContainer $dc
         *
         * @return mixed
         */
        
    public function storeFileMetaInformation($varValueDataContainer $dc)
        {
            if (
    $dc->activeRecord->singleSRC != $varValue)
            {
                
    $this->addFileMetaInformationToRequest($varValue, ($dc->activeRecord->ptable ?: 'tl_article'), $dc->activeRecord->pid);
            }

            return 
    $varValue;
        } 

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

    Standard

    Generell ist es so, dass Contao bei einzelnen Text- oder Bild-Inhaltselementen nur einmalig, also beim erzeugen die Metainformationen aus der Datenbank lädt und direkt im Inhaltselement abspeichert. Bei Galerie Inhaltselementen werden die Metainformationen jedes mal aus der Datenbank geholt.

    Überprüfe also zuerst
    • ob deine Copyright Informationen vorhanden sind, wen du ein neues Text- oder Bild-Inhaltselement anlegst
    • ob deine Copyright Informationen im gallery_default Template vorhanden sind

  9. #9
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Ist dieser Zwischenschritt den überhaupt nötig? Kann ich in "ce_image.html5/gallery_default.html5" nicht einfach sowas schreiben wie "echo $this image > meta > copyright"?

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich hatte das gestern auch mal probiert und ich bin auch nur so weit gekommen wie bremic. Das Feld mit Wert ist im serialisierten Array tl_files-meta vorhanden, aber in den Templates kann man nicht mit $this->meinFeld darauf zugreifen. Auch keine andere Variable enthielt dieses Feld oder den Wert. Also irgendwas scheint man noch machen zu müssen. Oder man greift es manuell mit dem FilesModel ab.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

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

    Standard

    Zitat Zitat von bremic Beitrag anzeigen
    Ist dieser Zwischenschritt den überhaupt nötig?
    Was für ein Zwischenschritt meinst du?

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

    Standard

    Ja, das stimmt, die Funktion \Controller::addImageToTemplate(…) übergibt die Meta Daten gar nicht an das Template. Man müsste sie daher auf jeden Fall über das \FilesModel holen.

  13. #13
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Ich lege den Copyright Vermerk ja unter Dateiverwaltung ein. Somit ist der ja schon in der Datenbank.
    Als Zwischenschritt meinte ich das Übergeben und erneute Speichern in die Datenbank, beim Erstellen eines neuen Inhaltselements.

    Ich gucke mir das mit dem \FilesModel mal an; mal gucken ob ich da weiter komme

  14. #14
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Das Feld mit Wert ist im serialisierten Array tl_files-meta vorhanden, aber in den Templates kann man nicht mit $this->meinFeld darauf zugreifen.
    Genau an dieser Stelle war ich auch schon mal gescheitert.
    Dachte dass meine mangelnden PHP-Kenntnisse mir da einen Strich durch die Rechnung machen und hatte das private Projekt an dieser Stelle erst mal beiseite gelegt.
    Bin also auch sehr an einer Lösung interessiert.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  15. #15
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Zitat Zitat von mlweb Beitrag anzeigen
    Dachte dass meine mangelnden PHP-Kenntnisse mir da einen Strich durch die Rechnung machen…
    Geht mir gerade leider genauso – Hab mir das wesentlich einfacher vorgestellt eine Information aus der Datenbank zu bekommen…

  16. #16
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.794

    Standard

    Ich würde bei ce_image die Informationen in der Variable
    PHP-Code:
    $this->copyright 
    und bei gallery_default in
    PHP-Code:
    $col->copyright 
    vermuten. Aber wenn beides dem Template nicht übergeben wird...
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

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

    Standard

    Zitat Zitat von bremic Beitrag anzeigen
    Ich gucke mir das mit dem \FilesModel mal an; mal gucken ob ich da weiter komme
    zB
    PHP-Code:
    $objFile = \FilesModel::findByPath$this->singleSRC );
    $arrMeta $objFile deserialize$objFile->meta ) : array();
    echo 
    $arrMeta['copyright'] ?: ''

  18. #18
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich habe im Moment gerade Kundenprojekte laufen. Wenn ich wieder Luft habe, werde ich mich mal wieder mit meinem Privatprojekt beschäftigen.
    Ich denke da wird mir Dein Ansatz helfen.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




  19. #19
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Super, danke Spooky!
    Ich habe noch das Sprachkürzel eingebaut und so funzts!

    Noch mal die Zusammenfassung, für alle die es nachbauen wollen:

    1. dcaconfig.php erweitern um
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields'][] = 'copyright'
    2. in langconfig.php übersetzen
    PHP-Code:
    $GLOBALS['TL_LANG']['MSC']['aw_copyright'] = 'Copyright Hinweis'
    3. Im Template ausgeben
    PHP-Code:
    <?php 
        $objFile 
    = \FilesModel::findByPath($this->singleSRC);
        
    $arrMeta $objFile deserialize($objFile->meta) : array();

        
    // So muss/kann man für jede Sprache ein Copyright angeben
        
    $language $this->replaceInsertTags('{{page::language}}'); 
        echo 
    $arrMeta[$language]['copyright'] ?: '';

        
    // So wird das Copyright der "ersten" Sprache gewählt
        
    reset($arrMeta);
        
    $language key($arrMeta);
        echo 
    $arrMeta[$language]['copyright'] ?: '';
    ?>

  20. #20
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von bremic Beitrag anzeigen
    PHP-Code:
    <?php 
        $objFile 
    = \FilesModel::findByPath($this->singleSRC);
        
    $arrMeta $objFile deserialize($objFile->meta) : array();

        
    // So muss/kann man für jede Sprache ein Copyright angeben
        
    $language $this->replaceInsertTags('{{page::language}}'); 
        echo 
    $arrMeta[$language]['copyright'] ?: '';

        
    // So wird das Copyright der "ersten" Sprache gewählt
        
    reset($arrMeta);
        
    $language key($arrMeta);
        echo 
    $arrMeta[$language]['copyright'] ?: '';
    ?>
    Kleine Korrektur
    PHP-Code:
        $objFile = \FilesModel::findByPath($this->singleSRC);
        
    $arrMeta $objFile deserialize($objFile->meta) : array();

        
    // So muss/kann man für jede Sprache ein Copyright angeben
        
    $language $GLOBALS['TL_LANGUAGE'];
        echo 
    $arrMeta[$language]['copyright'] ?: '';

        
    // So wird das Copyright der "ersten" Sprache gewählt
        #reset($arrMeta);
        
    $language array_keys($arrMeta)[0];
        echo 
    $arrMeta[$language]['copyright'] ?: ''
    Was möchtest du mit der Ermittlung des Keys der ersten Meta-Array-Variable erreichen? Die Fallbacksprache ermitteln? Das wird nicht funktionieren.

    edit: Sorry, bei der Variablen $GLOBALS['TL_LANGUAGE'] fehlten die Anführungszeichen.
    Geändert von Andreas (22.02.2016 um 20:03 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  21. #21
    Contao-Nutzer
    Registriert seit
    13.06.2012.
    Beiträge
    13

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Was möchtest du mit der Ermittlung des Keys der ersten Meta-Array-Variable erreichen? Die Fallbacksprache ermitteln? Das wird nicht funktionieren.
    Ich wollte damit auf "copyright" im ersten Sprach-Array zugreifen.
    Also so wie du's jetzt in sexy machst (Oh man, ich glaub ich hab net mal deine Frage richtig verstanden )

  22. #22
    Contao-Fan Avatar von Thraile
    Registriert seit
    17.12.2009.
    Ort
    Detmold
    Beiträge
    501
    Partner-ID
    6306

    Standard

    Zitat Zitat von bremic Beitrag anzeigen
    Ich wollte damit auf "copyright" im ersten Sprach-Array zugreifen.
    Ich glaube das war ihm klar, die Intention, die dahinter steht erschließt sich nur nicht. Mal angenommen ich habe eine deutsche Seite und die deutschen Meta-Daten sind nicht vorhanden. Im ersten Array-Eintrag liegen blöderweise die Übersetzungen für Chinesisch. Sollte man die dann wirklich ausgeben?

  23. #23
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Sorry, oben war noch die Variable $GLOBALS['TL_LANGUAGE'] falsch geschrieben, habe ich oben korrigiert.

    Ja, so in etwa was Thraile schon gesagt hat. Du kannst dich nicht auf die Position der Variablen im Array verlassen. Du solltest eine Sprache gezielt anhand des Länderkürzels abgreifen. Z.B. entweder die Sprache der aktuellen FE-Seite, oder die Fallbacksprache.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  24. #24
    Contao-Nutzer
    Registriert seit
    29.09.2010.
    Ort
    Oberstdorf
    Beiträge
    78

    Standard

    Ich hab gerade ein Problem mit den Metafields und vielleicht passt es hier her.

    Bei mir gab es ein Feld:
    Code:
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields'][] = 'copyright';
    Wurde auch ganz normal ausgegeben (im BE) bzw. Daten gespeichert. Nun habe ich ein Update
    auf 3.5.9 durchgeführt. Jetzt werden die schon eingetragenen Inhalte nicht mehr ausgegeben und
    das definierte Label auch nicht.

    Im BE-Quelltext habe ich folgendes stehen:

    HTML-Code:
    <label for="ctrl_caption_0">Bildunterschrift</label>
    <input type="text" name="meta[de][caption]" id="ctrl_caption_0" class="tl_text" value="" maxlength="255">
    <br>
    <label for="ctrl_0_0"></label>
    <input type="text" name="meta[de][0]" id="ctrl_0_0" class="tl_text" value="" copyright="">
    Bei Caption ist die Darstellung noch korrekt aber der neue Input bleibt leer.
    Ich habe auch schon den Systemcache gelöscht. Hat jemand ein ähnliches Problem?

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

    Standard

    Das DCA wurde in Contao blöderweise geändert 3.5.9 (https://github.com/contao/core/blob/...files.php#L219) wegen https://github.com/contao/core/issues/8277
    Du musst nun bspw.
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['copyright'] = ''
    schreiben.

    // Laut Leo Feyer sollten die Werte aber automatisch konvertiert werden
    Geändert von Spooky (18.04.2016 um 10:11 Uhr)

  26. #26
    Contao-Nutzer
    Registriert seit
    03.01.2010.
    Beiträge
    152

    Standard

    Hallo zusammen,
    ich möchte die Meta Felder auch erweitern. Benutze Contao 3.5.12.

    Das erweitern im BE hiermit geht schon mal
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['NEUES_METAFELD'] = ''
    PHP-Code:
    $GLOBALS['TL_LANG']['MSC']['aw_NEUES_METAFELD'] = 'Copyright Hinweis'
    Dann sollen die neuen Felder innerhalb einer Galerie ausgegeben werden.
    Doch wie kann ich das "multiSRC" Feld richtig ansprechen.

  27. #27
    Contao-Nutzer
    Registriert seit
    03.01.2010.
    Beiträge
    152

    Standard

    ok, etwas Recherche bringt mich auf diese Lösung

    gallery_default.html5
    PHP-Code:
    <?php 
      $lang 
    $GLOBALS['TL_LANGUAGE'];
      
    $this->multiSRC deserialize($this->multiSRC);
      
    $this->objFiles = \FilesModel::findMultipleByIds($this->multiSRC);
    ?>
    <ul class="cols_<?= $this->perRow ?>">
      <?php foreach ($this->body as $class=>$row): ?>
        <?php foreach ($row as $key=>$col): ?>
          <?php if ($col->addImage): ?>
            <li class="<?= $class ?> <?= $col->class ?>">

              <?php
                $meta_custom 
    = \Frontend::getMetaData($this->objFiles[$key]->meta$lang);
                echo 
    $meta_custom['CUSTOM_METAFIELD'];
              
    ?>

              <figure class="image_container"<?php if ($col->margin): ?> style="<?= $col->margin ?>"<?php endif; ?>>
                <?php if ($col->href): ?>
                  <a href="<?= $col->href ?>"<?= $col->attributes ?> title="<?= $col->alt ?>"><?php $this->insert('picture_default_custom'$col->picture); ?></a>
                <?php else: ?>
                  <?php $this->insert('picture_default_custom'$col->picture); ?>
                <?php endif; ?>
                <?php if ($col->caption): ?>
                  <figcaption class="caption"><?= $col->caption ?></figcaption>
                <?php endif; ?>
              </figure>
            </li>
          <?php endif; ?>
        <?php endforeach; ?>
      <?php endforeach; ?>
    </ul>
    und danke für die Anregungen in diesem Post :-)

  28. #28
    Contao-Nutzer
    Registriert seit
    03.01.2010.
    Beiträge
    152

    Standard

    hmm, doch leider zu früh gefreut - sobald man die Galerie auf individuelle Reihenfolge stellt, passen
    die Einträge nicht mehr zur Reihenfolge.

    Hat da jemand eventuell doch einen Tipp, wie ich man die zusätzlichen Meta Daten sonst noch auslesen könnte, passend zum
    jeweiligem Objekt

  29. #29
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard maxlength="255" hinzugefügt

    system/dcaconfig.php
    PHP-Code:
    <?php

    if(TL_MODE === 'BE')
    {
      
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['copyright'] = 'maxlength="255"';
      
    $GLOBALS['TL_LANG']['MSC']['aw_copyright'] = 'Copyright';
    }
    gallery_default
    PHP-Code:
    <?php global $objPage?>

    // snip

            <li class="<?= $class ?> <?= $col->class ?>">
    <?php

    $meta 
    = \FilesModel::findByPath($col->singleSRC)->meta;
    $copyright = \Frontend::getMetaData($meta$objPage->language)['copyright'] ?: \Frontend::getMetaData($meta$objPage->rootFallbackLanguage)['copyright'];
    echo 
    $copyright ?: 'no copyright found';

    ?>

    // snip
    Geändert von Andreas (13.02.2017 um 15:17 Uhr)
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  30. #30
    Contao-Nutzer
    Registriert seit
    03.01.2010.
    Beiträge
    152

    Standard

    Hallo Andreas,
    danke für deine Lösung - genau das funktioniert :-)

  31. #31
    Contao-Nutzer Avatar von btosh
    Registriert seit
    11.12.2015.
    Beiträge
    58

    Standard

    Hallo zusammen,

    vielen Dank erst mal für die gute Lösung.
    Ich würde gerne die Copyright-Angabe nur dann ausgeben, wenn im Dateiverzeichnis eine Angabe bei dem entsprechenden Bild hinterlegt ist.

    Ich hatte folgendes probiert:

    <?php
    $objFile = \FilesModel::findByPath($this->singleSRC);
    $arrMeta = $objFile ? deserialize($objFile->meta) : array();
    $language = $GLOBALS['TL_LANGUAGE'];
    $copyright = $arrMeta[$language]['copyright'];
    ?>

    <?php if ($this->$copyright): ?>
    <p class="copyright">
    <?php echo $copyright ?: ''; ?>
    </p>
    <?php endif; ?>

    Für eine Hinweis wäre ich dankbar.

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

    Standard

    1. Code immer in [code] oder [php] Tags schreiben.
    2. Du hast
      PHP-Code:
      $this->copyright 
      statt
      PHP-Code:
      $copyright 
      verwendet.

  33. #33
    Contao-Nutzer Avatar von btosh
    Registriert seit
    11.12.2015.
    Beiträge
    58

    Standard

    Super. So einfach war es
    Vielen Dank, Spooky!

    Und danke für die Info wegen der Tags.

  34. #34
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich habe das oben https://community.contao.org/de/show...l=1#post409830 nochmal angepasst um eine maximale Eingabelänge anzugeben, so wie es im Core auch gemacht wird.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  35. #35
    Alter Contao-Hase
    Registriert seit
    20.06.2009.
    Ort
    Graz (Austria)
    Beiträge
    1.455

    Standard

    Hallo, ich hab dazu eine Frage:

    Ich möchte zwar meine Meta-Infos nicht erweitern, aber ich möchte via dcaconfig den Titel der Datei zusätzlich zum Dateinamen in der Dateiübersicht anzeigen lassen.

    Kann mir hier jemand helfen?
    LG, Andi

  36. #36
    Contao-Nutzer Avatar von megmed
    Registriert seit
    11.03.2010.
    Beiträge
    8

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    system/dcaconfig.php
    PHP-Code:
    <?php

    if(TL_MODE === 'BE')
    {
      
    $GLOBALS['TL_DCA']['tl_files']['fields']['meta']['eval']['metaFields']['copyright'] = 'maxlength="255"';
      
    $GLOBALS['TL_LANG']['MSC']['aw_copyright'] = 'Copyright';
    }
    gallery_default
    PHP-Code:
    <?php global $objPage?>

    // snip

            <li class="<?= $class ?> <?= $col->class ?>">
    <?php

    $meta 
    = \FilesModel::findByPath($col->singleSRC)->meta;
    $copyright = \Frontend::getMetaData($meta$objPage->language)['copyright'] ?: \Frontend::getMetaData($meta$objPage->rootFallbackLanguage)['copyright'];
    echo 
    $copyright ?: 'no copyright found';

    ?>

    // snip
    Vielen Dank dafür!


    Da ich das Copyright für alle Bilder benötige, habe ich zusätzlich im ce_image.html5 Template folgendes hinzugefügt:
    PHP-Code:
        <?php
          $meta 
    = \FilesModel::findByPath($this->singleSRC)->meta;
          
    $copyright = \Frontend::getMetaData($meta$GLOBALS['TL_LANGUAGE'])['copyright'] ?: \Frontend::getMetaData($meta$GLOBALS['TL_LANGUAGE'])['copyright'];
        
    ?>
        <?php if ($copyright): ?>
          <small class="copyright"><?= $copyright?></small>
        <?php endif; ?>
    Dadurch wird ein small tag mit dem Copyright hinzugefügt (siehe auch: https://stackoverflow.com/questions/...-image-in-html), welches man dann entsprechend style kann.
    Außerdem habe ich die Sprache mit $GLOBALS['TL_LANGUAGE'] ausgelesen, denn $objPage->language bei mir nicht funktioniert.


    Das angepasste ce_image.html5 Template sieht dann insgesamt so aus:
    PHP-Code:
    <?php $this->extend('block_searchable'); ?>

    <?php $this->block('content'); ?>

      <figure class="image_container"<?php if ($this->margin): ?> style="<?= $this->margin ?>"<?php endif; ?>>

        <?php if ($this->href): ?>
          <a href="<?= $this->href ?>"<?php if ($this->linkTitle): ?> title="<?= $this->linkTitle ?>"<?php endif; ?><?= $this->attributes ?>>
        <?php endif; ?>

        <?php $this->insert('picture_default'$this->picture); ?>

        <?php if ($this->href): ?>
          </a>
        <?php endif; ?>

        <?php if ($this->caption): ?>
          <figcaption class="caption"><?= $this->caption ?></figcaption>
        <?php endif; ?>

        <?php
          $meta 
    = \FilesModel::findByPath($this->singleSRC)->meta;
          
    $copyright = \Frontend::getMetaData($meta$GLOBALS['TL_LANGUAGE'])['copyright'] ?: \Frontend::getMetaData($meta$GLOBALS['TL_LANGUAGE'])['copyright'];
        
    ?>
        <?php if ($copyright): ?>
          <small class="copyright"><?= $copyright?></small>
        <?php endif; ?>

      </figure>

    <?php $this->endblock(); ?>

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
  •