[РЕШЕНО] Как у новых/обновленных материалов показать статус("обновлено", "новое")/иконку?

Главные вкладки

Аватар пользователя fexmusicmutuz@gmail.com fexmusicmutuz@g... 26 июля 2011 в 11:34

Всем привет!

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

Я создал представление и вывел эти материалы, но они выводятся без статуса.
Как его можно вывести?

Вот пример из админки /admin/content:

P.S. В каких таблицах БД хранится эта информация?

Комментарии

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 11:47

в history, в шестерке создается запись, када пользователь просматривает ноду. Думаю в семерке что-нить подобное есть.

Аватар пользователя fexmusicmutuz@gmail.com fexmusicmutuz@g... 26 июля 2011 в 12:57

otmoroz wrote:
в history, в шестерке создается запись, када пользователь просматривает ноду. Думаю в семерке что-нить подобное есть.

Точно! Именно там и хранится, спасибо!

А что можете сказать по основному вопросу?

Аватар пользователя otmoroz otmoroz 26 июля 2011 в 13:14

if sql-запрос возвращающий, что не хранится в хистори {
print '$content' . 'NEW';
}

а вообще, я смотрел стандартный модуль трекер и воровал куски из него Smile но это в шестерке.

Аватар пользователя fexmusicmutuz@gmail.com fexmusicmutuz@g... 28 июля 2011 в 8:49

Все оказалось гораздо проще.
Посмотрев исходники модуля tracker я нашел, что признак "новое", "обновлено" проставляется с помощью функции модуля "node" - node_mark
'title' => array('data' => l($node->title, 'node/' . $node->nid) . ' ' . theme('mark', array('type' => node_mark($node->nid, $node->changed)))),

Еще раз посмотрел Views и нашел в нем поле
"Содержимое: Содержимое обновлено
Show a marker if the content is new or updated."

Оно содержит именно то, что мне нужно.

Вопрос решен.

Аватар пользователя Kubakh Kubakh 14 октября 2014 в 22:41

для седьмого Друпала, в node.tpl.php

прописываем <?php print(node_mark($variables['nid'], $variables['changed'])) ?> и получаем:
0 если READ
1 если NEW
2 если UPDATED

Аватар пользователя Enemy Enemy 13 февраля 2015 в 14:42

отвечу:

<?php $variables['classes'] = node_mark($variables['nid'], $variables['changed']);
                                        if ($variables['classes'] == 1){
                                        print 'новая';}
                                        if ($variables['classes'] == 2){
                                        print 'обновленная';}?>

примерно так, стили по своему желанию