Что касается передачи диапазонов данных и заданного определения опубликованной функции, вы можете передавать диапазоны дат этому, только если представление примет их в качестве аргументов. Я не уверен на 100%, но диапазоны дат afaik могут быть определены только как фильтры, а не как аргументы, что приводит к вашему второму вопросу:
Возможно программное изменение настроек фильтра представлений, но оно немного запутанно, учитывая довольно сложную структуру представления объекта / массива. В приведенной выше функции первая строка -
$view = views_get_view($viewname);
После этого $ view содержит весь объект view. Настройки фильтра определяются для каждого дисплея, поэтому при условии, что у вас есть вид только с дисплеем по умолчанию, вы найдете настройки фильтра под
$view->display['default']->display_options['filters']
(Обратите внимание на смесь обозначений объекта / массива - отображение является отдельным объектом типа views_display)
Массив 'filters' содержит одну запись на фильтр, с различными элементами в зависимости от типа фильтра. Для вашей цели я бы предложил создать фиктивное представление только с интересующим вас фильтром с предварительно сконфигурированными / жестко заданными значениями. Используя отладчик (или var_dump
/ print_r
), вы можете взглянуть на массив фильтров после создания представления. Из того, что вы там найдете, вы сможете определить, как вводить свой пользовательский диапазон дат.
Отказ от ответственности: Выглядеть так, как это немного раздражает и неэффективно, но это работает. На данный момент я не нашел краткой документации по Views2, которая бы объясняла внутренности простым способом, поскольку я нахожу, что официальная документация API немного не касается использования из кода. (Конечно, это может быть просто глупость;)