Я не проверял это локально, поэтому только некоторые предположения:
Прежде всего, я не уверен, что это изменилось с D6 на D7, но IIRC, к идентификаторам дисплея всегда присоединен номер, поэтомуЯ бы ожидал, что нужно использовать «block_1» вместо «block».
Далее, глядя на функцию render()
, он ожидает идентификатор дисплея в качестве параметра.Если я правильно прочитал код, он не будет проверять идентификатор, установленный через $view->set_display()
, так что это может привести к другому (а именно по умолчанию) отображению, что приведет к использованию другого результата кэша.
Таким образом, вы можете повторить попытку следующим образом:
$view = views_get_view('hotels_view');
$view->render('block_1');
print sizeof($view->result);
$counter = 0;
foreach ($view->result as $result) {
echo 'Result: ' . $result->nid . ' -- ' . url( 'node/' . $result->nid, array('alias' => FALSE)).'<br />';
$counter++;
//$_SESSION['hotels_listing'][$counter] = url( 'node/' . $result->nid, array('alias' => FALSE));
}
В случае, если это сработает, вы также можете сэкономить некоторое время обработки, исключив рендеринг, поскольку вас интересует только порядок результатов запроса,не фактический вывод:
$view = views_get_view('hotels_view');
$view->execute('block_1');
[...]