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

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

1 Ответ

0 голосов
/ 08 сентября 2010

Сделайте обратный вызов 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 под остальными элементами.

...