Всем доброго времени!
Столкнулся с проблемой.
Есть представление содержащие разные строки материала. Одно из полей (field_my_date) - дата, создана с помощью модуля Date движка друпала. При создании материала приравнивается дате создания материала.
С помощью модуля Views php добавил поле в представление с пхп кодом – задача сравнить две даты. Первая – текущее время, вторая - field_my_date.
Условие сравнение: если разница между текущем временем и field_my_date составляет больше 24 часов (например), то нужно вывести один HTML код, если меньше – другой и указать сколько осталось до момента когда разница превысит 24 часа.
Пробовал делать так:
<?php
$myData = $node->field_my_data[0]['value'];
$nowDate = data (time());
If ($nowDate - $myData >= 24*3600) {
Echo “<a href=”….”>more</a>” ; }
Else {
Echo “<a href=”….”>less</a>” ; }
?>
Но в этом случае постоянно выводит «more» независимо от реальных значений. Я так понимаю, что переменная $myData – почему-то равна «0» и не принимает значение из поля материала.
К реализации вывода оставшегося времени до момента когда разница превысит 24 часа еще не подходил, так как не могу разобраться с этим.
Спасибо за любую помощь!
Комментарии
Посмотрите может модуль этот может помочь https://drupal.org/sandbox/mbodalova/2212053 или по точнее напишите что нужно, а то не очень понятно.
я так понял этот модуль добавляет большее новых вариантов представления даты.
А мне нужно от текущего времени отнять время установленное в поле (field_my_date) материала, если эта разница больше 24 часов - вывести "Больше", если разница меньше "Меньше, осталось ждать 2 часа"
как-то так
https://drupal.org/project/views_conditional смотрели этот модуль
достучался до поля так: $myData = $data->_field_data['nid']['entity']->field_my_data['und'][0]['value'];
код изменил так:
<?php
$myData = $data->_field_data['nid']['entity']->field_my_data['und'][0]['value'];
$nowDate = time();
If ($nowDate - $myData >= 24*3600) {
Echo “more” ; }
Else {
Echo “less” ; }
print $nowDate;
print $myData;
?>
Настоящая дата выводится как 1397339126,
а дата из поля так: 2014-04-12 21:28:16
как результат - сравнение не работает. Как привести обе даты в один формат?
дамп такой:
(
[nid] => 57
[node_title] => Ищем партнеров
[users_node_name] => admin
[users_node_uid] => 19
[node_created] => 1396895121
//......много строк
[_field_data] => Array
(
[nid] => Array
(
[entity_type] => node
[entity] => stdClass Object
(
[vid] => 57
[uid] => 19
// .........много строк
[body] => Array
(
[und] => Array
(
[0] => Array
(
[value] =>
текст боди
[summary] =>
[format] => filtered_html
)
)
)
[field_my_data] => Array
(
[und] => Array
(
[0] => Array
(
[value] => 2014-04-08 11:30:45 //- вот то что мне нужно
[timezone] => Europe/Minsk
[timezone_db] => UTC
[date_type] => datetime
)
)
)
а, спасибо, заработало!
Код вышел таким:
<?php
$myData = $data->_field_data['nid']['entity']->field_my_data['und'][0]['value'];
$myData1 = strtotime($myData);
$nowDate = time();
If ($nowDate - $myData1 >= 24*3600) {
print $row->ops ; }
Else {
Echo "$row->ops" ; } ?>
Но возник вопрос по самому модулю views php. Он предлагает мне использовать свои переменные типа $row->ops и много других, в частности $row->ops - это ссылка на флаг. Так вот, если я ее вставляю в код - то она не выводится, а print $row->ops - ничего не выводит на стринцу, поле остается пустым. Как вывести ссылку флага?
PS. все бы ничего, но в дампе тоже нет ссылки на флаг