从TCA typo3的crdate中删除小时,分钟和秒

时间:2018-09-03 09:44:21

标签: typo3

我在新闻tca中有如下配置:

'ctrl' => [
    'tstamp' => 'tstamp',
    'crdate' => 'crdate',

以此,新闻将像1535967103一样以小时,分钟和秒的时间保存在数据库中。我想要整理此信息,并使其像1535932800

如何在TCA配置中获取此信息?

3 个答案:

答案 0 :(得分:1)

即使时间戳记具有秒数,您也始终可以按天排序。相同时间戳的其余排序标准通常是autoincrement字段,因此按时间戳进行升序或降序排序的结果将相同。

除非您希望按特定日期分组,否则使用另一个时间戳不会有任何改变。

可以在前端输出中完成任何其他操作,因此您可以在通过日期或strftime设置时间戳格式时跳过秒。

答案 1 :(得分:1)

好的,我用datetime创建了一个新字段,它的值与crdate相同。

然后我在其中创建了processDatamap_preProcessFieldArray(&$fieldArray, $table)

$dateTime = (new \DateTime())->setTimestamp($fieldArray['datetime']); $dateTime->setTime(00, 00, 00); $fieldArray['datetime'] = $dateTime->getTimestamp();

我在ext_localconf中添加了

$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass']['si_news'] = \Sozialinfo\SiNews\Hooks\TCEmainHook::class; $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processCmdmapClass']['si_news'] = \Sozialinfo\SiNews\Hooks\TCEmainHook::class;

现在我的crdate没有小时,分钟和秒(在新字段中,crdate保持不变),并且我可以对此字段进行排序。

我发现从crdate删除秒的唯一解决方案是使用processDatamap_afterDatabaseOperations并使用带有$GLOBALS['TYPO3_DB']的自定义查询。肮脏的海事组织。

我使用新字段来覆盖crdate,因为有人说过:crdate是内部TYPO3字段。所以我没有更改内部TYPO3字段。

谢谢大家的帮助。

答案 2 :(得分:0)

tstamp和crdate无法四舍五入。他们总是每秒。