寻呼机号码与 drupal 7 中的 URI 字符串不匹配?

Posted

技术标签:

【中文标题】寻呼机号码与 drupal 7 中的 URI 字符串不匹配?【英文标题】:Pager numbers do not match URI string in drupal 7? 【发布时间】:2012-12-19 06:57:58 【问题描述】:

如何使寻呼机号码与 URI 字符串匹配?

例如:当我在寻呼机中单击数字 3 以转到第 3 页时,但 URI 是“?page=2”而不是“?page=3”。这种分页不像我以前遇到的任何其他分页那样正常。我该如何解决?

谢谢!!!

【问题讨论】:

也许结合了查询 alter 和 htaccss。不过,这可能不值得你花时间。 我非常需要知道一个好方法。 +1 【参考方案1】:

您可以通过实现hook_url_outbound_alter() 和hook_url_inbound_alter() 来做到这一点。

使用第一个钩子,您可以更改从 Drupal 输出的链接;你会增加$options['query']['page']的值。 使用第二个钩子,您可以更改从 Drupal 接收到的链接;您应该在 URL 中找到 '?page=' 字符串,并减少该字符串后面的数字。

请记住,如果页面有多个寻呼机,$_GET['page'] 可以是类似'1,2,4,5,6' 的字符串。见pager_find_page()的代码。

另外,hook_url_outbound_alter() 接收$options 中的查询参数,而hook_url_inbound_alter() 只接收 URL 的字符串,其中也包含查询部分。

【讨论】:

【参考方案2】:

URL 中的 page 属性直接在查询中使用,因此如果省略,page 将得到 0 作为值。这很正常,因为 Drupal 会做这样的分页操作。

现在,如果您需要更改此设置,您必须为每个查询处理查询更改,为 limit() 或 range() 方法添加 +1。

【讨论】:

是的,但我需要确切知道在哪里执行此操作? 您必须提供一个您不想更改的查询示例。一般来说,hook_query_alter() 用于此目的 这是一种复杂的方法,考虑到有一种更简单的方法可以更改 Drupal 输出的链接以及 Drupal 接收的链接。

以上是关于寻呼机号码与 drupal 7 中的 URI 字符串不匹配?的主要内容,如果未能解决你的问题,请参考以下文章

在 Drupal 7 中更改寻呼机格式

获取当前节点页面的寻呼机号码?

Drupal 7:发布日期的暴露过滤器

Drupal 寻呼机不适用于查询中的“LIKE”

Drupal 7 主题(''pager')-> 表得到渲染但没有 Pager?

2 寻呼机在视图中 - Drupal 6