Drupal Pager 生成 POST 参数作为 URL 的一部分

Posted

技术标签:

【中文标题】Drupal Pager 生成 POST 参数作为 URL 的一部分【英文标题】:Drupal Pager is producing POST parameters as part of the URL 【发布时间】:2015-03-27 22:21:24 【问题描述】:

我不太明白为什么会这样,但 Pager 正在生成如下分页结果:

http://www.mywebsite.ca/reports-publications/reports/?field_executive_summary_value=&field_publication_date_value[value]&field_report_type_tid_selective=All&field_natural_resource_region_tid_selective=All&field_forest_district_tid_selective=All&field_keywords_tid_selective=All&page=1#

而不是简单地:

http://www.mywebsite.ca/reports-publications/reports/?page=1

此外,“page=1”表示第二页......就像在一个页面数组中一样,其中 0 实际上是第一个结果。

有人知道为什么 Pager 会生成这样的链接吗?

【问题讨论】:

您是否在该页面上公开了任何过滤器? (不仅仅是附加寻呼机的视图) 看起来可能是这样。但是 Drupal 不允许我更改选项......这就像有一个管理员“阻止”用于覆盖。 更改用于寻呼机的 ID:该设置位于管理区域中视图的高级选项下。 我仍然不知道如何防止所有过滤器成为链接的一部分... 【参考方案1】:

我能够通过更改 pager.inc 文件来解决页码问题。

在 pager_find_page 函数中,

function pager_find_page($element = 0) 
  $page = isset($_GET['page']) ? $_GET['page'] : '';
  $page_array = explode(',', $page);
  if (!isset($page_array[$element])) 
    // Change here
    // $page_array[$element] = 0;
    $page_array[$element] = 1;
  

  // Add this
  $page_array[$element]--;

  return (int) $page_array[$element];

并且,在 theme_pager_link 函数中,

if ($new_page = implode(',', pager_load_array($page_new[$element], $element, explode(',', $page)))) 
    // Change here
    // $parameters['page'] = $new_page;
    $parameters['page'] = $new_page + 1;

【讨论】:

以上是关于Drupal Pager 生成 POST 参数作为 URL 的一部分的主要内容,如果未能解决你的问题,请参考以下文章

Drupal呈现视图页面从$view对象

Drupal 7 构建寻呼机

在 Drupal 7 中更改寻呼机格式

2 寻呼机在视图中 - Drupal 6

Drupal Ajax:通过 url 与数据参数传递值

Drupal的模块开发中的$form和$form_state参数。