在视图(或块)中使用ajax在其他项上添加项

时间:2010-09-06 17:30:30

标签: drupal drupal-6 drupal-views

Hello drupalers,我有一个关于ajax加载视图的问题。让我说我有15个项目,我有寻呼机显示5.现在我想有一个按钮显示“更多”。当按下按钮时,我希望视图在视图中加载另外5个项目。所以,如果我让我们说动物。猫,狗,熊猫,蛇,蠕虫,斑马,狮子如果寻呼机在3它应该显示猫,狗,熊猫。按下按钮它应该加载3个项目,视图现在应该说猫,狗,熊猫,蛇,蠕虫,斑马,如果我再次按它应该显示整个列表。我不知道怎么做,有人可能指出我正确的方向?内容相当繁重,因此无显示解决方案和jquery将是不可接受的。

1 个答案:

答案 0 :(得分:0)

自己做ajax回调但是使用视图进行实际查询。

在hook_menu()中设置ajax回调的URL,然后在回调中找出正在请求“page”的内容,并在回调和放大中以编程方式设置它。回报你所需要的。

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中。