Модуль Flag. Нужна помощь

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

Аватар пользователя Ekaterina23 Ekaterina23 1 июля 2014 в 14:56

есть модуль флаг (https://www.drupal.org/project/flag)
как в ноде вывести время, когда отметка о флаге была поставлена?

и еще, нужно задать время жизни флага, например сутки. это через сам модуль нельзя сделать, или только правило?

Комментарии

Аватар пользователя roman-yrv roman-yrv 1 июля 2014 в 17:46

В таблице flagging есть поле timestamp - там, по видимому, и хранится время установки флага.

Взять его, если нет других средств, можно с помощью php в ВАША_ТЕМА_preprocess_node.

Насчет длительности флага - думаю, можно или с помощью Rules, или взять и по Cron удалять соответствующую запись из таблицы flagging (у которой значение timestamp раньше, чем текущее значение времени на сутки и более).

Но непосредственная работа с flagging - это самый крайний вариант.

Аватар пользователя roman-yrv roman-yrv 1 июля 2014 в 19:02

Ну, может быть, есть специальные модули под это дело.

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

Аватар пользователя Ekaterina23 Ekaterina23 1 июля 2014 в 19:12

"roman-yrv" wrote:
Ну, может быть, есть специальные модули под это дело

неужели у самого модуля флаг, нет такой функции, и для такой мелочи надо искать дополнительный модуль?

Аватар пользователя roman-yrv roman-yrv 1 июля 2014 в 19:18

Может быть, и есть.

Когда Вы будете в своей теме определять файлы типа node.tpl.php, там с помощью devel посмотрите, что хранится в переменной $content.

Если там есть информация о времени установки флага, значит модуль flag эти данные добавляет.

Аватар пользователя Ekaterina23 Ekaterina23 1 июля 2014 в 19:54

"roman-yrv" wrote:
осмотрите, что хранится в переменной $content.

уже смотрела, там только время создания и редактирования ноды.

Аватар пользователя Dimal88 Dimal88 2 июля 2014 в 6:05

Во Views же можно вывести.

Флаги: Время отметки флагом
Показать время когда содержимое было отмечено пользователем.

Аватар пользователя Ekaterina23 Ekaterina23 2 июля 2014 в 12:11

"Dimal88" wrote:
Во Views же можно вывести.

мне на странице ноды нужно.

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

Аватар пользователя roman-yrv roman-yrv 2 июля 2014 в 12:21

Можно, конечно, так, но этот способ годится в случае, если человек вообще не программист.

Идет дублирование данных, что не есть хорошо.

Нужно будет потом это поле при удалении флага также очистить.

Если мне не изменяет память, работа через panels позволяет визуально связывать сущности и вы таким образом сможете добраться до времени создания флага.

Аватар пользователя drupby drupby 2 июля 2014 в 13:50

"Ekaterina23" wrote:
как в ноде вывести время, когда отметка о флаге была поставлена?

для флага bookmarks

$flag = flag_get_user_flags('node', $node->nid);
if (isset($flag['bookmarks'])) {
  print format_date($flag['bookmarks']->timestamp);
}

правильнее будет не выводить этот код в шаблоне ноды, а в preprocess_node сформировать переменную c датой и потом ее выводить в шаблоне

"Ekaterina23" wrote:
и еще, нужно задать время жизни флага, например сутки. это через сам модуль нельзя сделать, или только правило?

1. rules http://drupal.stackexchange.com/questions/108221/how-to-create-expire-fl...
2. https://www.drupal.org/project/flag_expire

Аватар пользователя Ekaterina23 Ekaterina23 2 июля 2014 в 14:50

"drupby" wrote:
правильнее будет не выводить этот код в шаблоне ноды, а в preprocess_node сформировать переменную c датой и потом ее выводить в шаблоне

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