2017-06-19 7 views
0

TYPO3 hat die schöne Option "Datum simulieren" im Admin-Panel.Simulationsdaten für heute in Fluid verwenden

Aber das ist propagieren nicht zu Flüssigkeit wie in

{f:format.date(date: 'today' format: 'Y-m-d')} 

Offenbar ist dies php bei der Arbeit, nicht der TYPO3-API.

Gibt es eine einfache Möglichkeit, ein virtuelles "Heute" -Datum zu simulieren und an Fluid zu übergeben?

+1

Die simulierte Zeit ist eine PHP-Variable, die bei der Seitengenerierung gesetzt wird. Sie haben also einen konsistenten Zeitstempel für Ihr Rendering (andernfalls könnten unterschiedliche Zeitberechnungen mit unterschiedlichen Zeitstempeln funktionieren, was zu unterschiedlichen Datumsangaben führen kann, wenn der Seitenaufruf Millisekunden vorher ist Mitternacht). Ich weiß nicht, ob diese PHP-Variable durch Typoscript zugreifbar ist. wahrscheinlich nicht durch Flüssigkeit. Im schlimmsten Fall können Sie einen kleinen PHP-View-Helfer schreiben, der diese globale Variable zurückgibt. –

Antwort

0

Sie können versuchen, eine Typoscript-Bedingung zu verwenden, um eine Einstellung zu deklarieren.

[yourcondition] 
    plugin.tx_your_ext.settings.dateOverride = 2017-11-11 11:11:11 
[global] 

Stellen Sie dann sicher, dass die Einstellungen an die Ansicht übergeben werden. Sie können dies in Ihrer Controller-Aktion tun

$this->view->assign('settings', $this->settings); 

Und dann den Wert an den Viewhelper übergeben. Sie können einen beliebigen Wert verwenden, der vom DateTime-Konstruktor interpretiert werden kann.

{f:format.date(date: settings.dateOverride format: 'Y-m-d')} 

Eine Liste möglicher typoscript Bedingungen:

https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Reference/Index.html

Wenn Sie das Datum brauchen, dynamisch festgelegt mehr werden Sie einen URL-Parameter verwenden können, und fordern Sie Ihre Seite wie:

yourpage.com/path/to/your/site?no_cache=1 & spoofedDate = 2017-11-11T11: 11: 11Z

Ich denke, Sie kann den DataSubmissionHook verwenden, um den Wert festzulegen, wenn das simulierte Datumsfeature von typo3 verwendet wird. Vielleicht gibt dir das den meisten Komfort.

Zur Anfrage params in dem Controller zugreifen:

$this->request->getArgument() 

Oder

GeneralUtility::_GET() 

Eine andere Art, dass zu lösen, ist das Datetime-Objekt zu überlasten, so dass er respektiert die simulierte Datum Eigenschaft.

0

Sie könnten installieren Sie die PHP timecop extension und legen Sie das Datum zunächst in index.php.

Alternativ können Sie eine Funktionsanforderung für die Flüssigkeit öffnen, um die simulierte Zeit zu unterstützen.