Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: Zusätzliche Felder bei Dateiverwaltung ausgeben

  1. #1
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard Zusätzliche Felder bei Dateiverwaltung ausgeben

    Hallo,

    ich habe mir folgende Felder in
    HTML-Code:
    tl_files
    hinzugefügt:
    HTML-Code:
    copyright_licence
    und
    HTML-Code:
    copyright_link
    Ich habe es in meiner
    HTML-Code:
    App/Recources/contao/dca/tl_files.php
    wie folgt erreicht
    PHP-Code:
    <?php
    use Contao\CoreBundle\DataContainer\PaletteManipulator;
    $GLOBALS['TL_DCA']['tl_files']['fields']['copyright_licence'] =
    [
        
    'label' => ['Copyright-Lizenz''Unter welcher Lizenz kann man diese Datei nutzen'],
        
    'inputType'   => 'text',
        
    'exclude'     => true,
        
    'eval'      => array('tl_class' => 'w50'),
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
    ];
    $GLOBALS['TL_DCA']['tl_files']['fields']['copyright_link'] =
    [
        
    'label' => ['Lizenz-Link''Link zur Copyrightlizenz'],
        
    'inputType'   => 'text',
        
    'eval'  => array('tl_class' => 'w50''dcaPicker' => true),
        
    'sql'       => ['type' => 'string''length' => 255'default' => ''],
    ];
    PaletteManipulator::create()
        ->
    addField('copyright_licence'PaletteManipulator::POSITION_APPEND)
        ->
    addField('copyright_link'PaletteManipulator::POSITION_APPEND)
        ->
    applyToPalette('default''tl_files')
    ;
    Jetzt versuche ich es, in news_full.html5 mit folgendem Befehl auszugeben.

    PHP-Code:
    <?php if ($this->copyright_licence || $this->copyright_link): ?>
    <?php 
    if ($this->copyright_link): ?>
    <a href="<?php echo $this->copyright_link ?>" target="_blank">
    <?php endif ?>
    <?php 
    echo $this->copyright_licence ?>
    <?php 
    if ($this->copyright_link): ?></a><?php endif ?><?php endif ?>
    Leider funktioniert es nicht. Muss ich da doch etwas anderes abfragen? Dateien werden generell in Contao mit einer anderen Logik behandelt, daher vermute ich, dass es über
    Code:
    $this->…
    einfach nicht geht?
    Geändert von jenda (27.04.2020 um 10:39 Uhr)

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

    Standard

    Zitat Zitat von jenda Beitrag anzeigen
    Leider funktioniert es nicht. Muss ich da doch etwas anderes abfragen? Dateien werden generell in Contao mit einer anderen Logik behandelt, daher vermute ich, dass es über
    Code:
    $this->…
    einfach nicht geht?
    Es kommt natürlich immer auf das jeweilige Modul oder Inhaltselement etc. an, welche Daten in welchem Template zur Verfügung stehen. In der Regel kannst du davon ausgehen, dass in einen Modultemplate alle Einträge des Moduls vorhanden sind, plus alles zusätzlich, was das Modul so befüllt. In einem Inhaltselementtemplate sind alle Einträge des Inhaltselementes drin, plus zusätzliche Daten je Inhaltselement. Und in einem Newstemplate sind natürlich alle Daten der Nachricht selbst drin.

    Zusätzliche Daten von tl_files befinden sich natürlich nicht einfach so in einem Template. Die musst du dir erst holen. Im Falle eines Newstemplates wäre das zB:
    PHP-Code:
    $filesModel = \Contao\FilesModel::findByPath($this->singleSRC); 

  3. #3
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard

    Danke dir, Fritz. Wie immer eine tolle Hilfe. Merci!

    Mit folgendem Code kann man sich die zusätzlichen Felder holen.

    PHP-Code:
    <?php $filesModel = \Contao\FilesModel::findByPath($this->singleSRC); ?>
    <?php 
    if ($filesModel->copyright_licence || $filesModel->copyright_link): ?>
      <span class="copyright-licence">
      <?php if ($filesModel->copyright_link): ?>
        <a href="<?php echo $filesModel->copyright_link ?>" target="_blank">
      <?php endif ?>
      <?php echo $filesModel->copyright_licence ?>
      <?php if ($filesModel->copyright_link): ?></a><?php endif ?>
      </span>
    <?php endif ?>
    Was ich noch schön fände, wenn ich diese direkt in diesen Befehl übergeben könnte. Ich hätte es gerne zusammen mit den anderen Sachen im Captiontag.

    PHP-Code:
    <?php $this->insert('image'$this->arrData); ?>
    Also sagen wir mal so

    HTML-Code:
    <figcaption class="caption">Bildbeschriftung <span class="copyright-licence">Lizenz</span></figcaption>
    Hättest du da vielleicht auch eine Hilfe?

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

    Standard

    Wie schon auf Slack erwähnt wäre die saubere Lösung, wenn du dir einen parseArticles oder allgemeinen parseTemplates Hook baust, der das Template dann mit den entsprechenden Daten befüllst, sodass du dann auch im image Template darauf zugreifen kannst. Ansonsten könntest du die Daten auch direkt im jeweiligen Template setzen.

  5. #5
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    490

    Standard

    Ich brauche da noch mehr Infos, um es endlich zu verstehen und zu lernen, wie ich auf einen Contao-Hook zugreifen kann.

    1. Soll ich lieber in system/modules/ oder doch lieber unter App/Resources/contao/config/ entwicklen? Es geht um Contao 4.7
    2. Soll ich einen Service anlegen wie hier beschrieben?
    3. Soll ich eine PHP mit Hook erstellen, die dann auf die zusätzlichen Felder zugreift und diese bereitstellt. Wo soll diese PHP-Datei sein?
    4. Gibt es noch einen weiteren Schritt bzw. weitere Schritte, die ich unbedingt machen muss?
    Geändert von jenda (27.04.2020 um 15:16 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
  •