Ergebnis 1 bis 4 von 4

Thema: tl_content erweitert, Modul verknüpft, falsche Ausgabe

  1. #1
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard tl_content erweitert, Modul verknüpft, falsche Ausgabe

    Hallo Gemeinde,

    Ich hoffe ich kann mein Problem verständlich rüberbringen.

    in meinem Contao gibt es ein Modul mit Ansprechpartnern.
    Ich habe über die tl_content Palettenerweiterung ein auswahlfähiges Modul erzeugt, wo ich dann, wenn ich mein Modul auswähle, die gewünschten Ansprechpartner auswählen und ausgeben kann.
    Soweit so gut. Das klappt alles.

    Jetzt ist es aber erforderlich, dass ich das mein Ansprechpartnerauswahl-Modul mehrmals anlegen muss, da die ich an verschiedenen Stellen der gleichen Seite die Ausgabe der Ansprechpartner benötige.
    Im Backend geht das alles, ich kann die Module an unterschiedlichen Stellen auswählen und ich wähle auch immer unterschiedliche Ansprechpartner aus.

    Auch in der Datenbank wird in der tl_content auch die korrekten Werte in die jeweiligen Datensätze geschrieben. Ich habe dort 2 verschiedene Content Elemente des gleiches Artikels der gleichen Seite mit unterschiedlichen serialisierten Arrays. So wie es sein sollte.

    Allerdings gibt Contao im Frontend die Auswahl des ersten Moduls aus. Und zwar so oft, wie das Modul eingefügt wurde. Die andere Auswahl wird quasi ignoriert.

    Beispiel:
    Content Element Modul Auswahl 1 -> Auswahl a,b
    Content Element Modul Auswahl 2 -> Auswahl x,y

    Ausgabe Frontend:
    a,b,a,b


    Hat jemand nen Lösungsansatz für mich?

    Danke sehr.

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

    Standard

    Du hast also eigenen Programmcode hinzugefügt in einer eigenen tl_content? Das wäre dann ein eigenes Inhaltselement und kein Frontend-Modul. Inhaltselemente werden im Backend so dargestellt wie im Frontend. Da kann es keine Unterschiede geben. Wenn Du ein eigenes Modul einbindest, wird das zuvor in der tl_module definiert. Module zeigen im Backend normalerweise nur einen Platzhalter an und keine Inhalte.
    Ein bißchen Programmcode wäre nett.
    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

  3. #3
    Contao-Nutzer
    Registriert seit
    09.05.2022.
    Beiträge
    19

    Standard

    Ich habe die tl_content Palette quasi mit eigenen Feld erweitert:

    HTML-Code:
    <?php
    
    $GLOBALS['TL_DCA']['tl_content']['palettes']['ansprechpartnerauswahl'] = '{type_legend},type;{include_legend},ansprechpartnerauswahl;';
    
    
    
    $GLOBALS['TL_DCA']['tl_content']['fields']['ansprechpartnerauswahl'] = array
    (
        'label'                   => &$GLOBALS['TL_LANG']['tl_content']['ansprechpartnerauswahl'],
        'exclude'                 => true,
        'inputType'               => 'checkbox',
        'options_callback'        => array('tl_content_lorello_extends', 'getAnsprechpartnerauswahl'),
        'eval'                    => array
        (
            'mandatory'           => false,
            'chosen'              => false,
            'submitOnChange'      => false,
            'multiple'            => true,
            'tl_class'            => 'long'
        ),
       
        'sql'  =>  "text NULL"
    );
    
    
    
    
    class tl_content_lorello_extends extends Backend
    {
    
    	public function __construct()
        {
            parent::__construct();
            $this->import('BackendUser', 'User');
        }
    
    
        public function getAnsprechpartnerauswahl()
        {
    
            $sSql = "select id,name from tl_ansprechpartner where active = '1' order by sortIndex asc";
            
           
            $aResult = \Database::getInstance()->query($sSql)->fetchAllAssoc();
    
         	
           $aDaten = array();
           foreach($aResult as $key =>$values) {
                $aDaten[$values['id']] = $values['name'];
            }
            return $aDaten;
    
          
        }
    
       
    
    }
    Das ganze wird ja dann die config das DCA und einer entsprechenden Klasse verknüpft, damit ich im bei den Content Elementen eine Datenauswahl fürs Frontend aus einem Backend Datensatz auswählen kann.

    Wie gesagt, die Auswahl und die Ausgabe funktioniert auch ohne Probleme.

    Aber! Wird das ganze doppelt auf der Seite angelegt mit unterschiedlicher Datensatzauswahl, wird immer doppelt nur der 1. Datensatz ausgegeben, trotz korrektem Datenbankeintrag.

    Nochmal als Beispiel:
    Artikel1
    Datenauswahl 1 -> Auswahl a,b
    Artikel 2
    Datenauswahl 2 -> Auswahl x,y


    Ausgabe im Frontent
    a,b,a,b und nicht wie gewünscht a,b,x,y

  4. #4
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die Ausgabe erfolgt ja über ein Template. Hast Du da schon mal reingeschaut, wie die Daten dort ankommen.
    Da könntest Du sehen, ob es an der Datenaufbereitung durch das Contentelement oder an der Ausgabe des Templates liegt.

    Trage dazu folgendes ins Template ein:
    HTML-Code:
    <?php $this->dumpTemplateVars(); ?>

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
  •