PHP в CCK сравнение дат

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

Аватар пользователя Junegton Junegton 11 апреля 2014 в 14:00

Всем доброго времени!
Столкнулся с проблемой.
Есть представление содержащие разные строки материала. Одно из полей (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 часа еще не подходил, так как не могу разобраться с этим.
Спасибо за любую помощь!

Комментарии

Аватар пользователя Junegton Junegton 11 апреля 2014 в 15:55

"MerryHamster" wrote:
Посмотрите может модуль этот может помочь https://drupal.org/sandbox/mbodalova/2212053 или по точнее напишите что нужно, а то не очень понятно.

я так понял этот модуль добавляет большее новых вариантов представления даты.

А мне нужно от текущего времени отнять время установленное в поле (field_my_date) материала, если эта разница больше 24 часов - вывести "Больше", если разница меньше "Меньше, осталось ждать 2 часа"
как-то так

Аватар пользователя Junegton Junegton 10 ноября 2015 в 11:49

достучался до поля так: $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
как результат - сравнение не работает. Как привести обе даты в один формат?
дамп такой:

stdClass Object
(
    [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
                                                )

                                        )

                                )

Аватар пользователя Junegton Junegton 13 апреля 2014 в 21:34

"ХулиGUN" wrote:
strtotime()

а, спасибо, заработало!
Код вышел таким:

<?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. все бы ничего, но в дампе тоже нет ссылки на флаг Sad