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

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

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

谢谢!!!

【问题讨论】:

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

标签: drupal drupal-7 pager


【解决方案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 接收的链接。
    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多