{РЕШЕНО} Вопрос по настройке модуля Computed Field

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

Аватар пользователя FreeLancerPro FreeLancerPro 21 декабря 2015 в 8:28

Доброго времени суток всем

Есть сайт, на котором, есть тип материала с полем "дата". Поле дата имеет начальную и конечную дату с временем.
Так же есть поле в котором планируется выводить разницу между начальной и конечной датой с временем.

Поискав ответ, нашел 2 подходящих решения в виде готовых модулей, первый Computed Field и второй Math Field.

У первого модуля - Computed Field - есть готовое решения, для конкретного вопроса, которое описано здесь - https://www.drupal.org/node/149234.
Так как я с PHP знаком плохо, прощу помочь с тем, что и куда нужно вставить, чтобы все заработало.

У меня:
Поле с датой, имеет машинное имя: field_date
Поле с разницей, имеет машинное имя: field_summ

Ниже сам код, со страницы с примером решения - https://www.drupal.org/node/149234

Computed field settings

Computed Code:

<?php
    $field_info 
array_pop(field_get_items($entity_type$entity'field_date'));

    

$start $field_info['value'];
    
$end $field_info['value2'];
    
$timezone $field_info['timezone'];

    

$date_start = new DateTime($start$timezone);
    
$date_end = new DateTime($end$timezone);

    

$interval $date_start->diff($date_end);

    

$entity_field[0]['value'] = $interval->format('%h');
 
?>

Display Code:

<?php
    $display_output 
$entity_field_item['value'] . " hours";
 
?>

Заранее спасибо за помощь.

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 21 декабря 2015 в 8:48

Модуль cf будет рассчитывать при каждом сохранении, скорей всего Вам не подходи, для вывода разницы всего навсего можно например https://api.drupal.org/api/drupal/modules%21field%21field.api.php/functi... или https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function...

Аватар пользователя FreeLancerPro FreeLancerPro 21 декабря 2015 в 9:13

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

Модуль cf будет рассчитывать при каждом сохранении, скорей всего Вам не подходи

Есть еще дополнительный модуль Computed Field Tools, который как я понял, может запускать перерасчет вычисляемых полей

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

для вывода разницы всего навсего можно например https://api.drupal.org/api/drupal/modules%21field%21field.api.php/functi... или https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function...

Это конечно я понимаю, что решение наверно хорошее, но там нужно же как я понял модули создавать свои, но я как и писал выше, с PHP на "Вы", и поэтому я и ищу решение с помощью готовых модулей

Есть конечно еще модуль Views Calc, там тоже можно как то это реализовать, так как полностью решение реализовано в модуле Time Tracker, который использует Views Calc

Аватар пользователя FreeLancerPro FreeLancerPro 21 декабря 2015 в 12:49

FreeLancerPro wrote:

$field_info = array_pop(field_get_items($entity_type, $entity, 'field_date'));

Если я правильно понимаю, я должен поменять значения только в этой строке, а именно:

1. $entity_type -> на какие то мои значения?
2. $entity - на какие то мои значения?
3. 'field_date' - это машинное имя поле с датой, оно совпадет с мои заданным машинным именем