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

Здравейте колеги drupalers, имам въпрос относно ajax заредени изгледи. Да кажем, че имам 15 артикула и имам пейджъра да показва 5. Сега искам да имам бутон, който казва покажи "още". когато бутонът е натиснат, искам изгледът да зареди допълнителни 5 елемента в изгледа. Така че, ако имам, да кажем животни. котка, куче, панда, змия, червей, зебра, лъв, ако пейджърът е на 3, трябва да показва котка, куче, панда. При натискане на бутон трябва да се заредят още 3 елемента и изгледът вече трябва да казва котка, куче, панда, змия, червей, зебра, ако натисна отново, трябва да покаже целия списък. Не знам как да направя това, може ли някой да ме насочи в правилната посока? Съдържанието е доста тежко, така че решение без дисплей и 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