Поля -> обработка значения другого поля 2.X

 
Посетитель
small user social cms
Сообщений: 55
Уважаемые коллеги! Снова обращаюсь за помощью.

ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.

ЧТО Я ДЕЛАЮ НЕ ТАК?
Создаю два файла: /system/fields/datediff.php и /templates/default/assets/fields/datediff.tpl.php

В файле datediff.php
Код PHP:
  1. <?php
  2. class fieldDatediff extends cmsFormField {
  3. public $title = 'Прошло дней';
  4. public $is_virtual = true; //Потому что в базу заносить нечего, юзер ничего вводить не будет.
  5. public $sql = 'text NULL DEFAULT NULL';
  6. public $var_type = 'string';
  7. public $allow_index = false;
  8.  
  9. }
  10. ?>
В файле datediff.tpl.php
Код PHP:
  1. <?php if($field->title) { ?>
  2. <label for="<?php echo $field->id; ?>"><?php echo $field->title; ?></label>
  3. <?php } ?>
  4.  
  5. //Теперь выводим разницу в днях
  6. <?php
  7. $startdate = $item['field_date'];
  8. $days = ceil((strtotime("$startdate") - time()) / 86400);
  9. echo $days*-1;
  10. ?>
Но схема не работает. Поле создается, но ничего не выводится. Дебаггер включен, но не ругается. Где я дурак?
Редактировалось: 1 раз (Последний: 10 ноября 2017 в 13:04)
Посетитель
small user social cms
Почетный донор проектаМедаль
Сообщений: 161
iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация http://docs.instantcms.ru/dev/forms/field-file
Посетитель
small user social cms
Сообщений: 55
ideasdigger:
iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация http://docs.instantcms.ru/dev/forms/field-file

Читал. Но не догоняю. Почему не отображается во фронтэнде.
Посетитель
small user social cms
Почетный донор проектаМедаль
Сообщений: 161
iDrevniy:

ideasdigger:
iDrevniy, в функцию store класса /system/fields/datediff.php вставь свою логику) вот документация http://docs.instantcms.ru/dev/forms/field-file

Читал. Но не догоняю. Почему не отображается во фронтэнде.
отписал в лс)
Посетитель
small user social cms
Медаль
Сообщений: 749
на сайте
iDrevniy:
ЧТО Я ДЕЛАЮ НЕ ТАК?
На сколько я понял datediff.tpl.php и не должен выводить разницу в днях - он используется для формирования самого поля которое юзер заполняет при создании контента

А вывод должен формироваться функцией parse
в /system/fields/datediff.php
Украинский хостер с супер ценами и отличной техподдержкой
Посетитель
small user social cms
Сообщений: 55
Sonat:
А вывод должен формироваться функцией parse
в /system/fields/datediff.php

Так и есть.

Спасибо ideasdigger. Все получилось в лучшем виде. Тема закрыта.

Может кому пригодится:
datediff.php
Скрытый текст виден только зарегистрированным пользователям

datediff.tpl.php
Скрытый текст виден только зарегистрированным пользователям
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проектаПочетный донор проекта
Сообщений: 2064
iDrevniy:
ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.
А зачем вы изобретаете велосипед, который вроде есть в коробке (тип поля ВОЗРАСТ)? Или он не совсем подходит под вашу задачу?
Идеи для разработчиков, Сервис автопостинга в соцсети
SSD-VPS от 5€ с администрированием!
Посетитель
small user social cms
Почетный донор проектаМедаль
Сообщений: 161
AndroS:

iDrevniy:
ЗАДАЧА. Есть стандартное поле даты (name = date), которое заполняется юзером. Нужно сделать поле (name = datediff), которое будет вычислят разницу в днях между полем date и сегодняшним днем.
А зачем вы изобретаете велосипед, который вроде есть в коробке (тип поля ВОЗРАСТ)? Или он не совсем подходит под вашу задачу?
у него не стояла задача приёма поля ему стояла задача на лету по заданному алгоритму обрабатывать другое, как на странице записи так и при редактирование
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.