Рейтинг:0

Препроцессор не возвращает новости на основе правильной даты создания

флаг cn

Я возвращаю новости на свою домашнюю страницу в карусели. Я использую приведенный ниже запрос, чтобы вернуть последние 9 статей на основе даты «создания». Однако клиент хочет установить дату некоторых статей задним числом (поэтому admin > content > edit node > автор и измените дату создания). Однако это, похоже, не работает, поскольку статьи возвращаются в том порядке, в котором они были созданы, даже если дата была изменена вручную:

$query = \Drupal::entityQuery('узел');
$запрос->проверка доступа(ЛОЖЬ)
    ->условие('тип', 'новость')
    ->условие('langcode', \Drupal::languageManager()->getCurrentLanguage()->getId(),"IN")
    ->сортировать('создано', 'DESC')
    -> диапазон (0, 9);

$nids = $запрос->выполнить();
$entities = \Drupal::entityTypeManager()->getStorage('node')->loadMultiple($nids);

Что я делаю не так? Кажется, он отлично работает в реальном представлении страницы новостей. Само представление имеет сортировку, установленную как «Содержимое: Создано (описание)», и это возвращает данные, как и ожидалось, но запрос препроцессора этого не делает.

РЕДАКТИРОВАТЬ:

Текущая рекомендация — изменить сортировку на «изменено», но это, к сожалению, не работает. У меня есть ощущение, что проблема связана с переводами. Ниже приведен первый результат в массиве. Я намеренно пошел дальше и изменил дату «авторства» на 2002 год, чтобы гарантировать, что она будет последней, но все же первой. Однако, если вы посмотрите на значения, я думаю, что проблема возникает здесь:

[создано] => Массив
 (
    [да] => 1647950253
    [х-по умолчанию] => 1016357523
    [эс] => 1647950332
    [фи] => 1647950277
    [фр] => 1647949861
    [суб] => 1647950235
    [nl] => 1647950348
    [св] => 1647950211
    [ru-ru] => 1647949797
    [ru-ru] => 1647947671
    [ru-ru] => 1647947639
    [бель-фр] => 1647950381
    [бел-нл] => 1647950361
 )

Основываясь на этом результате, может случиться так, что сортировка ищет 1-ю «созданную» дату, являющуюся DA, но в нашем случае язык является x-по умолчанию.

Могу ли я изменить сортировку, чтобы обеспечить сортировку по фактическому языку?

Kevin avatar
флаг in
Тип свойства может быть изменен. Примечание: удаление проверки доступа и отсутствие проверки опубликованного статуса может привести к нежелательным вещам. Другой способ сделать это — использовать специальное поле даты вместо свойства узла.
mauzilla avatar
флаг cn
@ Кевин, извините, я не знаю, понимаю ли я тип свойства, который мог измениться?
флаг cn
Кевин, вероятно, имеет в виду, что вам может понадобиться использовать поле «изменено» на узле (время последнего обновления) вместо «создано», а не то, что свойство изменилось. Но если он работает правильно в представлениях, я подозреваю, что проблема с кешем, поскольку ваш запрос сущности выглядит нормально.
leymannx avatar
флаг ne
`->сортировать('изменено', 'DESC')`
mauzilla avatar
флаг cn
Я обновил вопрос, я думаю, что приближаюсь, но не знаю, как изменить сортировку?
mauzilla avatar
флаг cn
Я смог отследить проблему. Поскольку не все даты создания переводов были обновлены, кажется, что использованная дата создания является «новейшим» переводом.
apaderno avatar
флаг us
Где именно вы используете этот код? Название говорит о *препроцессоре*, но мне не ясно, означает ли это хук препроцессора или что-то еще.

Ответить или комментировать

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