寻呼机号码与 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 字符串不匹配?的主要内容,如果未能解决你的问题,请参考以下文章