Ergebnis 1 bis 6 von 6

Thema: Anzeigen vor wie vielen Tagen eine News-Beitrag veröffentlicht wurde

  1. #1
    Contao-Nutzer Avatar von opcode
    Registriert seit
    19.01.2011.
    Ort
    Berlin
    Beiträge
    76

    Standard Anzeigen vor wie vielen Tagen eine News-Beitrag veröffentlicht wurde

    Hallo,

    besteht eigentlich in Contao ähnlich wie in Wordpress die Möglichkeit das news_latest.html5 Template dahingehend zu verändern, dass es nicht das eigentliche Veröffentlichungsdatum anzeigt sondern mal andersherum vor wie vielen Tagen der Nachichten-Beitrag veröffentlicht wurde??
    In Wordpress gibt es dafür ja die Funktion: get_the_time

    Habe zum Thema nur diese Seite gefunden auf der nur gezeigt wird wie man das eigentliche Datum formatieren kann: https://contao.org/de/news/individue...chrichten.html

    Danke schon mal Voraus ...

  2. #2
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Contao selber hat es nicht. Hatte es selbst mal in einem Kundenprojekt drin. Vielleicht hilft dir der Snippet weiter:

    PHP-Code:
        /**
         * @param            $datetime
         * @param bool|false $full
         *
         * @return string
         */
        
    private function time_elapsed_string($datetime$full false)
        {
            
    $now  = new \DateTime;
            
    $ago  = new \DateTime();
            
    $ago->setTimestamp($datetime);
            
    $diff $now->diff($ago);

            
    $diff->w  floor($diff->7);
            
    $diff->-= $diff->7;

            
    $string = array(
                
    'y' => 'Jahr',
                
    'm' => 'Monat',
                
    'w' => 'Woche',
                
    'd' => 'Tag',
                
    'h' => 'Stunde',
                
    'i' => 'Minute',
                
    's' => 'Sekunde',
            );
            foreach (
    $string as $k => &$v) {
                if (
    $diff->$k) {
                    
    $v $diff->$k ' ' $v . ($diff->$k ? (substr($diff->$k, -11) === 'e' 'n' 'en') : '');
                } else {
                    unset(
    $string[$k]);
                }
            }

            if (!
    $full) {
                
    $string array_slice($string01);
            }

            return 
    $string 'vor ' implode(', '$string) : 'jetzt';
        } 

  3. #3
    Contao-Nutzer Avatar von opcode
    Registriert seit
    19.01.2011.
    Ort
    Berlin
    Beiträge
    76

    Standard

    Hi, danke dir erst mal für das Snippet..! Leider komme ich aber damit nicht weiter, da es ja so nicht im template funzt...
    Wo genau muss denn das ganze wie rein damit es irgendwie läuft??

  4. #4
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von opcode Beitrag anzeigen
    Hi, danke dir erst mal für das Snippet..! Leider komme ich aber damit nicht weiter, da es ja so nicht im template funzt...
    Wo genau muss denn das ganze wie rein damit es irgendwie läuft??
    Warum denn nicht??

    PHP-Code:
    <?php
    // Kopf von news_latest.html5
    $dispayReadableTime = function ($datetime$full false) {
     
    //... der Body der oben geposteten Function
    }; ?>
    PHP-Code:
    <?= /** Dort wo das Datum ausgegeben werden soll */ $displayReadableTime($this->timestamp?>
    <?= 
    /** Dort wo das Datum ausgegeben werden soll, wenn die volle Zeitangabe mit erscheinen soll */ $displayReadableTime($this->timestamptrue?>

  5. #5
    Contao-Nutzer Avatar von opcode
    Registriert seit
    19.01.2011.
    Ort
    Berlin
    Beiträge
    76

    Standard

    Hhmmm, will aber nicht... zusammen sieht das jetzt so aus:

    PHP-Code:
    <?php 
        $dispayReadableTime 
    = function ($datetime$full false) { 

         
    /**
         * @param            $datetime
         * @param bool|false $full
         *
         * @return string
         */
        
    private function time_elapsed_string($datetime$full false)
        {
            
    $now  = new \DateTime;
            
    $ago  = new \DateTime();
            
    $ago->setTimestamp($datetime);
            
    $diff $now->diff($ago);

            
    $diff->w  floor($diff->7);
            
    $diff->-= $diff->7;

            
    $string = array(
                
    'y' => 'Jahr',
                
    'm' => 'Monat',
                
    'w' => 'Woche',
                
    'd' => 'Tag',
                
    'h' => 'Stunde',
                
    'i' => 'Minute',
                
    's' => 'Sekunde',
            );
            foreach (
    $string as $k => &$v) {
                if (
    $diff->$k) {
                    
    $v $diff->$k ' ' $v . ($diff->$k ? (substr($diff->$k, -11) === 'e' 'n' 'en') : '');
                } else {
                    unset(
    $string[$k]);
                }
            }

            if (!
    $full) {
                
    $string array_slice($string01);
            }

            return 
    $string 'vor ' implode(', '$string) : 'jetzt';
        }          
    }; 
    ?>        
    <li class="layout_latest arc_<?= $this->archive->id ?> job_listing type-job_listing block<?= $this->class ?>">
        <a href="<?php echo $this->link ?>" class="reference-tiles-item-link">
        <div class="position">
            <h3><?= $this->newsHeadline ?></h3>
        </div>
        <?php if ($this->hasSubHeadline): ?>
        <div class="location"><?= $this->subHeadline ?></div>
        <?php endif; ?>
        <?php if ($this->hasMetaFields): ?>
        <ul class="meta">
            <li class="date"><time datetime="<?= $this->datetime ?>">Veröffentlicht <?= $displayReadableTime($this->timestamptrue?></time> </li>
        </ul>
      <?php endif; ?>
        </a>    

    </li>

  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    @webstar hat geschrieben "//... der Body der oben geposteten Function", Du hast aber alles inkl. "private function time_elapsed_string($datetime, $full = false)" dort rein geschrieben.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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
  •