Дата снятия с публикации [решено]

Аватар пользователя lipinart

Всем привет!
Есть несколько вопросов по организации вывода объявлений юзера в его профиле.
Объявления выводятся лентой (тизерами). По умолчанию срок публикации - 4 недели, после чего еще 4 недели до полного удаления из базы.
Все работает с помощью рулс и рулс-планировщика.

Соответственно получаем активные и неактивные объявления.

1.Требуется вывести сколько осталось до снятия с публикации.
а)Добавить дополнительное (скрытое) поле, куда после отработки рулсов записывать дату снятия с публикации.
Еще не разобрался, как вывести время ДО, т.е. не голую дату, а до снятия осталось 2 дня 4 часа, например.
б)Не друпал-метод. Вычислить дату снятия прямо в шаблоне на основе даты создания/изменения и текущей даты.
в)Возможно есть более удачное решение.

Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя lipinart
lipinart 2 года назад

Подскажите каким образом эту новую переменную передать в шаблон?

<?php
/**
 *  Implements hook_preprocess_node
 */
function mytheme_preprocess_node(&$variables) {
    
$is_advert=$variables['node']->type;
    if(
$is_advert=='advert'){
        
$advert_created $variables['node']->created;
        
$advert_delete date("Y-m-d"strtotime($advert_created ' +4 week'));
        
$advert_remain = (strtotime($advert_delete) - strtotime ($advert_delete));
    }
}
?>

Получаем целых три переменные:
$advert_remain - водим в шаблоне
$advert_delete - думаю, записать в БД для упрощения дальнейших вычислений.

Аватар пользователя lipinart
lipinart 2 года назад

Странно, именно так и делал, но в массиве $node моей переменной нет.

Получается, что препроцесс вызывается перед рендерингом, а мне же нужно записать значение в БД непосредственно при сохранении ноды. В итоге добавил дополнительное поле, в которое закидываю результат вычисленный с помощью Рулс.

Аватар пользователя lipinart
lipinart 2 года назад

Естессно чистил

Аватар пользователя lipinart
lipinart 2 года назад

В template.php, тема называется evolution, просто в примере написал mytheme. Хук работает, я проверял. Сначала думал, что может условие не срабатывает, закрыл весь код в хуке, оставил только вашу сточку - не видно. Видимо глюк-какой-то.

Аватар пользователя lipinart
lipinart 2 года назад

Точно! Все поправил, все работает. Большое спасибо за помощь.