【问题标题】:Drupal Views (Page) Using Human-Friendly Path使用人性化路径的 Drupal 视图(页面)
【发布时间】:2010-02-15 16:53:29
【问题描述】:

我安装了 CCK 和 Views 模块。为了这个问题的范围,我将内容类型称为 Project项目有很多成员

项目节点可通过 /project/project-name 访问。我希望能够通过路径 /project/project-name/members 显示成员列表。

有什么办法吗?

目前我在路径 /project/%/members 上设置了页面显示的视图,并从 url 获取参数。我意识到我不能直接使用“来自 URL 的节点 ID”选项,因为它是节点名称而不是节点 ID。因此我尝试启用“PHP Code”参数。但问题是,Drupal Views 总是假定参数是“项目名称”,因此忽略了我的 php 代码参数设置。有谁知道我怎么能做到这一点?

谢谢

【问题讨论】:

    标签: drupal drupal-6 drupal-views


    【解决方案1】:

    是的,您实际上可以使用“来自 URL 的节点 ID”选项,而且您应该这样做。

    使用 path 或 pathauto 模块以 project/project-name 的形式为您的项目生成人类可读的 URL。这将为节点创建一个人类可读的别名,但底层的 Drupal 系统路径仍然是 node/nid。

    视图仍然可以使用“来自 URL 的节点 ID”作为参数(或上下文过滤器,因为它们在 Drupal 7 中被称为)即使对于那些丑陋的路径具有人类可读的别名。

    【讨论】:

      【解决方案2】:

      如果项目名称是节点标题,你可以很容易地得到你想要的。

      您可以将节点标题作为参数而不是 nid 传递,但结果将是相同的。您可以使用一些选项来使用小写、转换 - 到空格等,因为与节点标题相比,您可以在 url 中执行的操作是有限的。

      视图的其余部分与在 url 中使用节点 nid 的解决方案相同。

      【讨论】:

      • 是的,它是节点标题。顺便说一句,我已经成功地设置了块显示视图以列出 /projects/project-name 上的成员,因为我使用了 pathauto,所以我可以轻松地说该参数是从 URL 中的节点 ID 获取的。有什么方法我也可以使用这个视图来显示页面吗?在这种情况下,它会限制我仅使用节点 ID 作为参数。我正在寻找一种方法来以某种方式转换参数,可能使用一些钩子或views_pre_build 或其他东西将节点标题转换为节点ID。
      【解决方案3】:

      您需要为 /project/project-NID/members 创建路径别名到 /project/project-Name/members

      【讨论】:

      • 如何为每个节点创建路径别名?我是否必须在节点提交上创建自定义挂钩,还是有更简单的方法可以做到这一点?
      【解决方案4】:

      一个月前我问了这个确切的问题。 :)

      drupal link to view dependent on argument

      【讨论】:

      • 我设法使用 Drupal 的 custom_url_rewrite_outbound 和 custom_url_rewrite_inbound 完成了它,无需额外的模块。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多