Ergebnis 1 bis 10 von 10

Thema: [edit_date] Erstellungs- und Änderungsdatum eines Artikels anzeigen lassen

  1. #1
    Contao-Nutzer Avatar von Leuchte
    Registriert seit
    24.03.2010.
    Ort
    Duisburg
    Beiträge
    63

    Standard [edit_date] Erstellungs- und Änderungsdatum eines Artikels anzeigen lassen

    Mit dieser Erweiterung kann ein Erstellungs- und Änderungsdatum für einen Artikel eingegeben und mit entsprechenden InsertTags ausgegeben werden.

    InsertTags

    Es stehen die InsertTags {{article_create}} und {{article_update}} zur Verfügung. Ohne Parameter wird das gespeicherte Datum mit dem in der globalen Konfiguration angegebenen Format angezeigt. Es steht aber auch der Parameter format zur Verfügung, mit dem das Format individuell übergeben werden kann. Zusätzlich für die Nutzung in Templates (z. B. globale Artikelliste) kann auch der ID-Parameter für einen Artikel übergeben werden. Die Parameter werden durch das kaufm. Und ("&", ampersand) getrennt.

    Beispiel: Für den Artikel mit der ID 7, soll Tag, Monat und Jahr der Erstellungszeit ausgegeben werden: {{article_create::format=d.m.Y&id=7}}

    Die Erweiterung ist mit der Extension Auto News kompatibel.
    Angehängte Grafiken Angehängte Grafiken

  2. #2
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Ich bin mal so frei und poste den Link zum Repositority hier rein: edit_date
    Kein Privat Support via PM.

  3. #3
    Contao-Nutzer Avatar von Leuchte
    Registriert seit
    24.03.2010.
    Ort
    Duisburg
    Beiträge
    63

    Standard

    Ups, danke. Ganz vergessen

  4. #4
    Contao-Fan Avatar von pandroid
    Registriert seit
    15.08.2009.
    Ort
    Jena
    Beiträge
    314

    Standard Inkompatibel mit 2.9.3 ?

    Hallo,

    ich möchte die Erweiterung gern in einem Projekt mit Contao 2.9.3 einsetzen, jedoch ändert sich die Ausgabe im FE nicht, obwohl ich an den Elementen des Artikels etwas ändere oder die Einstellungen zum Erstellungs- und Änderungsdatum manuell verändere.

    Im Backend steht im 02.05.2011 als Änderungsdatum, im Frontend bleibt der Inserttag beim 24.11.2007. Ich habe das auf dem Live-System und lokal mit Contao2Go getestet.

    Habe ich etwas übersehen oder ist die Erweiterung nicht mehr mit 2.9.3 kompatibel?

    Grüße
    PAndroid

  5. #5
    Contao-Fan Avatar von pandroid
    Registriert seit
    15.08.2009.
    Ort
    Jena
    Beiträge
    314

    Standard

    Setzt denn niemand diese Erweiterung ein?
    Gibt es eine andere Möglichkeit das Änderungsdatum des Artikels auszugeben?

    Grüße
    PAndroid

  6. #6
    Contao-Nutzer
    Registriert seit
    31.01.2010.
    Ort
    München
    Beiträge
    50

    Standard

    Bei mir dasselbe Problem: Erstellungs- und Änderungsdatum stehen auf dem 18.05.2011, ausgegeben wird mir mit {{article_update}} der 11.05.2011.

    Wo dieses Datum herkommt wissen die Götter... oder vielleicht der Autor der Erweiterung?? ;-)

    Grüße,
    Stefan

  7. #7
    Contao-Fan Avatar von pandroid
    Registriert seit
    15.08.2009.
    Ort
    Jena
    Beiträge
    314

    Standard

    Hallo sganz,

    ich habe gerade für mich eine Lösung gefunden.
    Die Erweiterung googlesitemap hat den Inserttag page_last_update integriert. Die ERW prüft nicht nur den Artikel, sondern alle Inhaltselemnte auf Änderung. Zudem kann man einstellen, ob das Upate automatisch oder auf Nachfrage geändert werden soll. Genial!

    Gruß
    PAndroid

  8. #8
    Contao-Nutzer
    Registriert seit
    31.01.2010.
    Ort
    München
    Beiträge
    50

    Standard

    Hallo PAndroid,

    vielen Dank für diesen genialen Tipp - die Erweiterung ist wirklich genau das was ich gesucht habe, insbesondere auch wegen der automatischen Aktualisierung des Datums bei Änderungen.

    Grüße,
    Stefan

  9. #9
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard Neue Version

    Moin André, alle,

    ich möchte diese Erweiterung [edit_date] gern einsetzen, deshalb habe ich sie mal in 2.10.4 getestet ... und dafür angepasst (siehe Anhang).

    Obwohl die Erweiterung (1.0.0 stable) auf Anhieb ohne Fehlermeldungen zu laufen schien, erforderte eine genaue Besichtigung dann doch einige Patches:
    1. Die aktive Änderung des Felds "tstamp" ist höchst problematisch/unmöglich, vermutlich systemweit, aber jedenfalls im DCA von tl_article!
    2. An diesem Feld sollte man in keiner Weise drehen, weder im Backend, noch in der DB!!! Unter anderem hängt die korrekte Versionierung von diesem Feld ab. Es gibt reichlich Hinweise in DC_Table.php darauf.
    3. Sobald man im DCA von "tl_article" das Feld "tstamp" aufnimmt, verhält sich Contao nicht mehr so, wie geplant
    4. Jede aktive Änderung einer "tstamp" wird sowieso NACH Speicherung des Datensatzes neu gesetzt (siehe DC_Table.php und diverse andere Stellen im Core, etwa für das un/sichtbar machen von Datensätzen)

    Zu 3.: ohne das Feld "tstamp" im DCA von "tl_article" wird im Artikel-Kopf als Änderungsdatum das MAX Datum des Artikel-Kopfes und aller zugeörigen Inhalts-Elemente angezeigt. Das ist sehr hilfreich / richtig, weil der Artikel ja nur ein Container / Behälter für den eigentlichen Inhalt ist.

    Wird aber versucht, die "tstamp" anzuzeigen (selbst wenn 'readonly' oder 'disabled'), funktioniert das nicht mehr. Es wird stattdessen nur noch das Änderungsdatum des Artikelkopfes gezeigt. Mag sein, dass das ein Bug im Contao Core DC_Table.php ist. Es zeigt aber jedenfalls, dass das Bearbeiten der "tstamp" nicht vorgesehen ist.

    Deshalb habe ich "tstamp" im Backend von [edit_date] komplett entfernt. Dort bleibt also nur das "createdate".

    Die beiden Inserttags {{article_create}} und {{article_update}} (auch mit Parametern id=X und/oder format=Y) bleiben erhalten ... allerdings erheblich verbessert:

    • wurde keine Artikel ID angegeben, dann hat die Original-Version die ID der SEITE herangezogen ($objPage->id). Das ist natürlich komplett falsch und erklärt auch eine frühere Nachricht "woher auch immer diese Daten stammen". Seite.Id ist typisch <> Artikel.Id. Meine Version versucht, den ersten Artikel in der Hauptspalte der aktuellen Seite zu ermitteln. Gibt es keinen (veröffentlichten, in der Hauptspalte), oder wurde ausdrücklich eine nicht existierende Artikel-ID angegeben, dann wird das Inserttag unverändert angezeigt (ohne die {{}} Klammern).
    • direkt nach Installation von [edit_date] mit bereits existierenden Artikeln ist das "Erstellungsdatum" für alle diese Artikel auf 0 (== 01.01.1970) gesetzt. Deshalb gibt meine Modifikation dann das Datum der letzten Änderung aus. Ihr müsst also das Erstellungsdatum explizit setzen, falls Ihr das Inserttag {{article_create}} wirklich sinnvoll einsetzen wollt.
    • Wie oben erwähnt berücksichtigt Contao im Kopf des Artikels auch die Änderungs-Daten sämtlicher Inhalts-Elemente zum Artikel. Auch das habe ich in das Inserttag {{article_update}} eingebaut. Das ist die Antwort auf mehrere frühere Nachrichten in diesem Zweig, die dies Feature vermisst haben. Ich finde das Standard-Verhalten zwar auch gut, aber ich habe es optional gemacht: siehe die Kommentare in den Quelltexten unten

    Die Änderungen sind so umfangreich, dass ein diff länger wäre, als die neuen Quellen zu zeigen (siehe auch Anhang für eine manuell installierbare Version). Hier im Forum habe ich auch die länglichen, nicht hilfreichen, Kommentare am Anfang der Dateien entfernt.

    system/modules/edit_date/config/config.php:
    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');

    $GLOBALS['TL_HOOKS']['replaceInsertTags'][] = array('EditDate''InsertTags');

    // Set to false in your system/config/localconfig.php AFTER the comment line
    // ### INSTALL SCRIPT STOP ###
    // only if you really want to have the insert tag article_update to show only the
    // tstamp of the article header record. Even then you can't edit that tstamp.
    // The only way to change it is to edit the article header in some way and then
    // it will just be newer than before. Also note: don't fiddle with the tstamp
    // in your database ... that might break your Contao system (e.g. the versioning)!
    $GLOBALS['TL_CONFIG']['edit_date_update_respects_ce_dates'] = true;

    class 
    EditDate extends Backend
    {
        
    /**
         * Hook function for replaceInsertTags()
         */
        
    public function InsertTags($strTag)
        {
            if ((
    strpos($strTag'article_create') !== false) || (strpos($strTag'article_update') !== false))
            {
                global 
    $objPage;
                
    $parts = (strpos($strTag'::') !== false) ? explode('::'$strTag) : $strTag;
                
    $tag = (is_array($parts)) ? $parts[0] : $strTag;
                
    $options explode('&'str_replace(array('['']'), ''$parts[1]));
                foreach (
    $options AS $param)
                {
                    
    $value explode('='$param);
                    
    $option[$value[0]] = $value[1];
                }
                
    $id trim($option['id']);
                if (
    $id !== '' && is_numeric($id))
                {
                    
    $objArticle $this->Database->prepare("SELECT id, createdate, tstamp FROM tl_article WHERE id=?" . (!BE_USER_LOGGED_IN " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" ""))
                                                 ->
    limit(1)
                                                 ->
    execute($idtime(), time());
                }
                else
                {
                    
    // Get ID of first arcticle in main column
                    
    $objArticle $this->Database->prepare("SELECT id, createdate, tstamp FROM tl_article WHERE pid=? AND inColumn=?" . (!BE_USER_LOGGED_IN " AND (start='' OR start<?) AND (stop='' OR stop>?) AND published=1" "") . " ORDER BY sorting")
                                                 ->
    limit(1)
                                                 ->
    execute($objPage->id'main'time(), time());
                }
                if (
    $objArticle->numRows 1)
                {
                    
    // no article with given ID or in main column of current page: return the unmodified tag
                    
    return $strTag;
                }

                
    $tstamp 0;
                switch(
    $tag)
                {
                    case 
    'article_create':
                        
    $tstamp $objArticle->createdate;
                        if (
    $tstamp 0)
                        {
                            break;
                        }
                        
    // createdate was not set, a common case after installing [edit_date] with existing articles.
                        // Silently fall back/through to using the update date / tstamp

                    
    case 'article_update':
                        
    $tstamp $objArticle->tstamp;
                        if (
    $GLOBALS['TL_CONFIG']['edit_date_update_respects_ce_dates'])
                        {
                            
    // Look for max date of content elements, as Contao 2.10.x does in DC_Table.php around line 3385 ff.
                            // The date shown then is identical to what Contao shows in the article header
                            
    $objMaxTstamp $this->Database->prepare("SELECT MAX(tstamp) AS tstamp FROM tl_content WHERE pid=?")
                                                           ->
    execute($objArticle->id);

                            if (
    $objMaxTstamp->tstamp)
                            {
                                
    $tstamp max($tstamp$objMaxTstamp->tstamp);
                            }
                        }
                        break;
                }
                return 
    $this->parseDate((strlen($option['format']) ? $option['format'] : $GLOBALS['TL_CONFIG']['datimFormat']), $tstamp);
            }
            return 
    false;
        }
    }

    ?>
    system/modules/edit_date/dca/tl_article.php:
    PHP-Code:
    <?php if (!defined('TL_ROOT')) die('You can not access this file directly!');

    /**
     * Palettes
     */
    $GLOBALS['TL_DCA']['tl_article']['palettes']['default'] = str_replace(
            
    ';{publish_legend}',
            
    ';{edit_date_legend},createdate;{publish_legend}',
            
    $GLOBALS['TL_DCA']['tl_article']['palettes']['default']);

    /**
     * Fields
     */
    $GLOBALS['TL_DCA']['tl_article']['fields']['createdate'] = array
    (
        
    'label'                   => &$GLOBALS['TL_LANG']['tl_article']['create_date'],
        
    'exclude'                 => true,
        
    'default'                 => time(),
        
    'inputType'               => 'text',
        
    'eval'                    => array('rgxp' => 'datim''datepicker' => $this->getDatePickerString(), 'tl_class' => 'w50 wizard')
    );

    ?>
    Das sind die wesentlichen Änderungen. Im ZIP habe ich natürlich auch noch die Sprach-Dateien angepasst.

    Das ZIP im Anhang ist gepackt mit dem Pfad system/modules/edit_date /... sämtliche Ordner und Dateien darin genau dorthin auf den Server laden und die neue Version sollte funktionieren. Kein Install oder DB-Update erforderlich.

    Aber macht vorher ein Backup und wundert Euch nicht, dass die Modifikation nicht in der "Erweiterungsverwaltung" auftaucht (bzw. nicht als aktualisiert). Das ist halt leider so, wenn man manuell installiert.

    Ich erhoffe Testberichte ... und dann ein Update von [edit_date] so bald als möglich durch André (aka Leuchte).

    Liebe Grüße, Georg
    Angehängte Dateien Angehängte Dateien
    Geändert von deerwood (21.01.2012 um 05:11 Uhr)

  10. #10
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    Hallo,

    ich habe edit_date 1.0.1 stable unter Contao 3.0 installiert. Laut Repository ist die Extension mit Contao 3.0.0 beta1 kompatibel, daher dachte ich, kann ich das unter 3.0.0 auch verwenden. Aber wenn ich sie aktiviere und in eine Seite einbinde, gibt es folgende Fehlermeldung:

    Fatal error: Uncaught exception Exception with message Query error: Unknown column 'tstamp' in 'field list' (SELECT tstamp AS date FROM tl_article WHERE id='435') thrown in /is/htdocs/.../Contao/system/modules/core/library/Contao/Database/Statement.php on line 317

    #0 /is/htdocs/.../Contao/system/modules/core/library/Contao/Database/Statement.php(261): Contao\Database\Statement->query()
    #1 /is/htdocs/.../Contao/system/modules/edit_date/config/config.php(71): Contao\Database\Statement->execute('435')
    #2 /is/htdocs/.../Contao/system/modules/core/library/Contao/Controller.php(1872): EditDate->InsertTags('article_update:...', false)
    #3 /is/htdocs/.../Contao/system/modules/core/classes/FrontendTemplate.php(215): Contao\Controller->replaceInsertTags('...', false)
    #4 /is/htdocs/.../Contao/system/modules/core/pages/PageRegular.php(163): Contao\FrontendTemplate->output()
    #5 /is/htdocs/.../Contao/index.php(250): Contao\PageRegular->generate(Object(Contao\PageModel))
    #6 /is/htdocs/.../Contao/index.php(411): Index->run()
    #7 {main}
    Ich habe daraufhin auch meine Datenbank geprüft und tl_article hat gar kein Feld "tstamp" nur ein "createdate" und dort wird meistens nur 0 ausgegeben. Bei der angesprochenen ID 435 steht eine Zahlenfolge drin: 1338991440.

    Wie ich das so sehe, wird in Contao 3.0 nicht mehr standardmäßig ein Erstellungs- oder Änderungsdatum gespeichert?

    Und wenn man die Extention "edit_date" installiert löscht die das Feld "tstamp" (ALTER TABLE `tl_article` DROP `tstamp`) und fügt "createdate" hinzu.

    Das führt dann dazu, dass man nich nur im Frontend diesen oben genannten Fehler erhält, sondern egal ob die Extention nun aktiv ist oder nicht, keine Artikel mehr bearbeitet werden können, weil dort ebenfalls die gleiche Fehlermeldung auftaucht.

    Nich so toll....

    Kann man das ändern?

    Ich bräuchte diese Erweiterung leider...
    Geändert von pyretta (23.11.2012 um 09:42 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Rechte innerhalb eines Artikels
    Von Lengen1971 im Forum Sonstiges zu Contao
    Antworten: 3
    Letzter Beitrag: 27.06.2011, 08:54
  2. Kurze Zusammenfassung alles Inhaltselente eines Artikels anzeigen ?
    Von mtpl im Forum Allgemeine Inhaltselemente
    Antworten: 2
    Letzter Beitrag: 12.09.2010, 18:48
  3. Inhaltselemente eines Artikels auslesen
    Von steffen im Forum Allgemeine Inhaltselemente
    Antworten: 1
    Letzter Beitrag: 17.03.2010, 14:17
  4. Artikel als pdf drucken am Ende eines Artikels?
    Von typolighter im Forum Allgemeine Inhaltselemente
    Antworten: 3
    Letzter Beitrag: 10.02.2010, 11:26
  5. Änderungsdatum anzeigen
    Von schueler im Forum Allgemeine Inhaltselemente
    Antworten: 13
    Letzter Beitrag: 22.01.2010, 14:18

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •