Удалите часы, минуты и секунды из crdate в TCA typo3 - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть конфигурация в новостях, например:

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

при этом новости будут сохраняться как 1535967103 в базе данных с часами, минутами и секундами. Я хочу обрезать эту информацию и иметь ее как 1535932800

Как я могу получить это в конфигурации TCA?

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Вы всегда можете отсортировать по дням, даже с отметками времени, имеющими секунды. Остальными критериями сортировки для идентичных временных меток обычно будет поле автоинкремента, поэтому результат сортировки по возрастанию или убыванию по временной метке будет одинаковым.

Если вы не хотите группировать к определенному дню, наличие другой отметки времени не будет иметь никакого значения.

В выводе внешнего интерфейса можно сделать все остальное, поэтому вы можете пропустить секунды при форматировании отметки времени через дату или время strftime.

0 голосов
/ 06 сентября 2018

Хорошо, я создал новое поле с датой и временем, оно принимает то же значение, что и 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.

Спасибо всем за помощь.

0 голосов
/ 03 сентября 2018

tstamp и crdate не могут быть округлены. Они всегда в секунду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...