Ergebnis 1 bis 6 von 6

Thema: Bezeichnung der Content Elements in Artikel Details ändern

  1. #1
    Contao-Nutzer
    Registriert seit
    13.02.2023.
    Beiträge
    15

    Standard Bezeichnung der Content Elements in Artikel Details ändern

    Hallo zusammen,

    ich versuche die Bezeichnung der Content Elements im Backend um weitere Content Element Felder zu erweitern. Zur Zeit wird lediglich der Inhalt aus $GLOBALS['TL_LANG']['CTE'][type] ausgegeben.
    Ich würde gerne nun den Inhalt von headline dranhängen und von bis Sichtbarkeit.

    Also zum Beispiel Ist Zustand:
    Text
    Bildschirmfoto 2023-10-19 um 11.33.37.png

    Gewünschter Zustand:
    Text - FAQ - 01.01.2023 - 31.12.2024

    Ich habe verschiedene Callbacks / Hooks erfolglos ausprobiert. Also gerne auch mit entsprechender Stelle aus der Doku, wo ich es hätte finden können für mehr Hilfe zur Selbsthilfe.

    Vielen Dank.
    Thomas

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

    Standard

    Diese Ansicht wird per child_record_callback gebaut, da müsstest du deinen eigenen Callback implementieren.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Contao-Nutzer
    Registriert seit
    13.02.2023.
    Beiträge
    15

    Standard

    Ah vielen Dank!

    Das heißt hier wäre die richtige Stelle gewesen https://docs.contao.org/dev/referenc...g-child-record

    Diese Option hätte ich jetzt gar nicht ausprobiert weil für mich das "sorting" was anderes impliziert hätte. Was bedeutet diese Subdomäne im Contao Kontext?

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

    Standard

    Du meinst, warum das unter list.sorting definiert wird? Da gibt es nicht wirklich eine Antwort
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Contao-Nutzer
    Registriert seit
    13.02.2023.
    Beiträge
    15

    Standard

    Ja, meinte ich. Ok, dann muss ich einfach noch mehr Erfahrungen mit Contao sammeln. Danke!

  6. #6
    Contao-Nutzer
    Registriert seit
    13.02.2023.
    Beiträge
    15

    Standard

    Für die Nachwelt:
    Die Standardausgabe wird hier generiert (Contao 4.13):

    contao/core-bundle/src/Resources/contao/dca/tl_content.php::addCteType

    Ich habe die komplette Methode in die Invoke Methode vom Callback kopiert und die $type Variable um meinen Content ergänzt. $this->method Calls auf statische Controller Methoden habe ich zu static accesses geändert.
    PHP-Code:
    <?php
    // src/EventListener/ListSortingChildRecordCallback.php
    namespace App\EventListener;

    use 
    Contao\Config;
    use 
    Contao\ContentModel;
    use 
    Contao\Controller;
    use 
    Contao\CoreBundle\DependencyInjection\Attribute\AsCallback;
    use 
    Contao\MemberGroupModel;
    use 
    Contao\StringUtil;

    #[AsCallback(table: 'tl_content', target: 'list.sorting.child_record')]
    class ListSortingChildRecordCallback
    {
        public function 
    __invoke(array $arrRow): string
        
    {
            
    //Copied from vendor/contao/core-bundle/src/Resources/contao/dca/tl_content.php::addCteType
            //Custom Code begins in line 80
            
    $key $arrRow['invisible'] ? 'unpublished' 'published';
            
    $type $GLOBALS['TL_LANG']['CTE'][$arrRow['type']][0] ?? $arrRow['type'];
            
    $class 'limit_height';

            
    // Remove the class if it is a wrapper element
            
    if (in_array($arrRow['type'], $GLOBALS['TL_WRAPPERS']['start']) || in_array(
                    
    $arrRow['type'],
                    
    $GLOBALS['TL_WRAPPERS']['separator']
                ) || 
    in_array($arrRow['type'], $GLOBALS['TL_WRAPPERS']['stop'])) {
                
    $class '';

                if ((
    $group Controller::getContentElement($arrRow['type'])) !== null) {
                    
    $type = ($GLOBALS['TL_LANG']['CTE'][$group] ?? $group) . ' (' $type ')';
                }
            } 
    // Add the group name if it is a single element (see #5814)
            
    elseif (in_array($arrRow['type'], $GLOBALS['TL_WRAPPERS']['single'])) {
                if ((
    $group Controller::getContentElement($arrRow['type'])) !== null) {
                    
    $type = ($GLOBALS['TL_LANG']['CTE'][$group] ?? $group) . ' (' $type ')';
                }
            }

            
    // Add the ID of the aliased element
            
    if ($arrRow['type'] == 'alias') {
                
    $type .= ' ID ' $arrRow['cteAlias'];
            }

            
    // Add the protection status
            
    if ($arrRow['protected'] ?? null) {
                
    $groupIds StringUtil::deserialize($arrRow['groups'], true);
                
    $groupNames = array();

                if (!empty(
    $groupIds)) {
                    if (
    in_array(-1array_map('intval'$groupIds), true)) {
                        
    $groupNames[] = $GLOBALS['TL_LANG']['MSC']['guests'];
                    }

                    if (
    null !== ($groups MemberGroupModel::findMultipleByIds($groupIds))) {
                        
    $groupNames += $groups->fetchEach('name');
                    }
                }

                
    $type .= ' (' $GLOBALS['TL_LANG']['MSC']['protected'] . ($groupNames ': ' implode(
                            
    ', ',
                            
    $groupNames
                        
    ) : '') . ')';
            }

            
    // Add the headline level (see #5858)
            
    if ($arrRow['type'] == 'headline' && is_array($headline StringUtil::deserialize($arrRow['headline']))) {
                
    $type .= ' (' $headline['unit'] . ')';
            }

            
    // Limit the element's height
            
    if (!Config::get('doNotCollapse')) {
                
    $class .= ' h40';
            }

            
    $objModel = new ContentModel();
            
    $objModel->setRow($arrRow);

            
    //CUSTOM CODE
            
    if ($arrRow['headline']) {
                
    $value unserialize($arrRow['headline'])['value'];
                if (
    $value) {
                    
    $type .= ' - ' $value;
                }
            }
            if (
    $arrRow['start']) {
                
    $type .= ' - Start: ' date('d.m.Y H:i'$arrRow['start']);
            }
            if (
    $arrRow['stop']) {
                
    $type .= ' - Stop: ' date('d.m.Y H:i'$arrRow['stop']);
            }
            return 
    '
    <div class="cte_type ' 
    $key '">' $type '</div>
    <div class="' 
    trim($class) . '">
    StringUtil::insertTagToSrc(Controller::getContentElement($objModel)) . '
    </div>' 
    "\n";
        }

    }

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
  •