【问题标题】:Drupal view and path urlsDrupal 视图和路径 URL
【发布时间】:2009-12-08 17:49:38
【问题描述】:

我在构建的一个视图中遇到了 drupal 路径问题。 现在我的视图有这种形式:contents/2/6。

其中 2 和 6 是两个节点的 ID,我想操纵这些 ID 来翻译它们,比如说这些节点的标题。

我无法从视图中执行此操作,因为我将这些值发送到面板,并且面板必须接收节点的 ID。

总而言之,我只想将这些 id 重写(像 pathauto 那样)标题,我可以这样做吗?有专门的模块吗?

谢谢!

【问题讨论】:

  • 您使用的是什么版本的 Drupal?您目前是否在使用 SEF URL?
  • 使用 Drupal 6,是的,我目前正在使用 SEF URL,但不在此特定视图中 :)

标签: drupal drupal-6 drupal-views pathauto


【解决方案1】:

如果我对您的理解正确,您希望保留原始路径“内容/[nid_x]/[nid_y]”,但为节点中具有更多“说话”路径元素(例如标题)的路径添加额外的 URL 别名。如果正确,您有两个选择:

首先,您可以通过在“admin/build/path/add”下为“content/[nid_x]/[nid_y]”定义 URL 别名来手动完成。这很容易做到,但如果您需要许多这样的别名,可能不是您想要的。

其次,您可以通过path_set_alias() 函数以编程方式执行此操作。使用该功能非常简单——唯一的问题可能是在哪里触发它。根据您的描述,我不清楚这些视图是在何处/何时创建的,因此很难提出建议 - 也许您可以编辑您的问题,使其更具体一点。

如果您想为特定节点组合创建该视图 URL 别名,您可以尝试使用 hook_nodeapi() 的“插入”、“更新”和“删除”操作来触发别名创建。显然,这只有在有一个连贯的规则允许您从代码中决定为哪些节点创建别名或不创建别​​名时才有效。

一旦您为某个路径设置了 URL 别名,只要通过 l() 函数创建指向该路径的链接,就会使用该别名而不是原始别名。所以例如如果您创建一个指向“content/2/6”的菜单项,则使用的 URL 将自动成为您为该路径创建的别名。


编辑:以防万一你最终以编程方式创建别名 - 如果你仍然使用 pathauto,你可以/应该使用它的pathauto_cleanstring()function(来自'pathauto.inc')来确保你生成的 URL 被正确转义/重写到允许的字符。

【讨论】:

    【解决方案2】:

    有一种方法可以使用自定义 url 函数来创建专用的自定义 URL。如果您使用面板,但我不确定您是否愿意这样做,因为它非常静态。

    function custom_url_rewrite($op, $result, $path) {
    
      if ($op == 'alias') {
        if (preg_match('|^[node_id#_here](/{0,1}.*)|', $path, $matches)) {
          return '[desired_alias]'. $matches[1];
        }
      }
    
      if ($op == 'source') {
        if (preg_match('|^[node_id#](/{0,1}.*)|', $path, $matches)) {
          return '[desired_source]'. $matches[1];
        }
      }
    
      return $result;
    
    }
    

    您需要将节点 id#s 替换为您自己的以及您自己想要的别名和来源。希望这会有所帮助。

    【讨论】:

    • 非常感谢您的回答,但我认为可以将每个节点 ID 映射到节点的特定字段,例如获取节点 ID,然后将其转换为标题。 .
    【解决方案3】:

    也许也有用:

    通过使用一个视图来更改初始链接,以使用令牌替换(如<a href="nodeview/[title]/nid" title="[title]">link tekst</a>)构建链接 并使用路径 exa nodeview 和参数 null、null、nid f.i. 处理视图中的节点

    对于更复杂的链接,我们使用视图 php 字段来构建字符串..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多