Как упорядочить Comment по другому???

17 views
Skip to first unread message

Yuri Pavlyukov

unread,
Mar 6, 2015, 11:07:39 AM3/6/15
to flexo-mana...@googlegroups.com
Комменты в данный момент отображаются так.

<ul>
<?php foreach( $comments as $comment ): ?>
<li id="comment_<?php echo $comment->id; ?>">
  <h5 class="comment-author">
<span class="comment-author-gravatar"><img src="<?php echo $comment->gravatar(16); ?>" /></span>
<span class="comment-author-name" style="color:maroon;"><?php echo $comment->name(); ?></span>
</h5><br>
<?php echo $comment->body; ?>
<p><?php echo $comment->date(); ?></p>
</li>
<?php endforeach; ?>
</ul>

Отображение происходит по порядку ИД. А если я хочу последний показывать сверху??
Нет ли способа по другому их упорядочить?
Спасибо.

Александр Маслаков

unread,
Mar 6, 2015, 11:22:35 AM3/6/15
to flexo-mana...@googlegroups.com
Массив  $comments уже сформирован, когда пришел в шаблон. Здесь сложновато что то сделать, но можно. Есть возможность отсортировать массив состоящий из объектов, путем сравнения их параметров. Параметры по которы сравниваем - по датам. Условно код будет примерно таким:

<?php

usort($comments, function($a, $b) { 
    if (strtotime($a->date()) > strtotime($b->date())) {
       return 1;
    }

    return -1;
});

?>

Я не гарантирую работоспособность данного кусочка. Это пример. Вставить нужно перед выводом комментариев.
Поясню - функция принемает $a и $b - это два обычно рядом стоящих объекта. Получаем их даты $a->date(), преобразуем в UNIXTIME функцией strtotime($a->date()). UNIXTIME - чисто целочисленное, поддается сравнению. Если первый комментарий имеет дату больше - двигаем возвращая return 1. Возвращая -1 мы меняем местами два объекта. Принцип примерно такой.

Пробуйте.



--
Вы получили это сообщение, поскольку подписаны на группу "flexo-manage-content".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес flexo-manage-con...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.



--

Yuri Pavlyukov

unread,
Mar 7, 2015, 4:34:08 AM3/7/15
to flexo-mana...@googlegroups.com
Спасибо. Все работает. только на оборот, если а больше б, то -1
Спасибо вам. 
Reply all
Reply to author
Forward
0 new messages