Добавление элементов поверх других с помощью ajax, в поле зрения (или блокировке)

Привет, друзья-друпилеры, у меня вопрос о представлениях, загруженных через ajax. Допустим, у меня есть 15 элементов, и у меня есть пейджер, который нужно показать 5. Теперь я хочу иметь кнопку с надписью «Показать еще». когда кнопка нажата, я хочу, чтобы представление загружало дополнительные 5 элементов в представлении. Итак, если у меня есть, скажем так, животные. кошка, собака, панда, змея, червь, зебра, лев, если пейджеры на 3, должны быть показаны кошка, собака, панда. При нажатии кнопки должно быть загружено еще 3 элемента, и теперь в представлении должно быть указано «кошка, собака, панда, змея, червь, зебра». Если я нажму еще раз, отобразится весь список. Я не знаю, как это сделать, возможно, кто-то может указать мне правильное направление? Контент довольно тяжелый, поэтому решение display none и jquery было бы неприемлемым.


person Cris    schedule 06.09.2010    source источник


Ответы (1)


Выполните обратный вызов ajax самостоятельно, но используйте представления для фактического запроса.

Настройте URL-адрес для обратного вызова ajax в hook_menu (), а затем в обратном вызове выясните, какая «страница» запрашивается, и установите ее программно в обратном вызове и верните именно то, что вам нужно.

function general_menu() {
    $item['callback/url'] = array(
        'type' => MENU_CALLBACK,
        'page callback' => 'my_ajax_callback',
        'access callback' => TRUE,
    );
}

function my_ajax_callback() {
    $page = $_REQUEST['page'] ? $_REQUEST['page'] : 0;
    $view = views_get_view('{view_name}');
    $view->set_display('{display_name}');
    $view->set_current_page($page);
    $view->pre_execute();
    $view->execute();
    print $view->render();
    exit;
}

Вам нужно будет выполнить запрос ajax самостоятельно и управлять текущей страницей на стороне клиента, но это не должно быть так сложно. Кроме того, вам может потребоваться переопределить некоторые файлы шаблонов представления, чтобы вы не получали все оболочки представления при запросе дополнительных элементов, а только сами элементы. Когда вызов ajax возвращается, вы можете просто вставить результат в DOM под другими элементами.

person jonathanpglick    schedule 08.09.2010