我在构建的一个视图中遇到了 drupal 路径问题。现在我的观点是这样的:内容/2/6。

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

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

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

谢谢!

有帮助吗?

解决方案

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

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

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

如果你想为特定的节点组合创建该视图 URL 别名,你可以尝试使用 'insert'、'update' 和 'delete' 操作 hook_nodeapi() 触发别名创建。显然,只有存在一个一致的规则,允许您从代码中决定为哪些节点创建别名或不创建别​​名,这才有效。

一旦为某个路径设置了 URL 别名,每当通过以下路径创建指向该路径的链接时,就会使用该别名来代替原始别名 升() 功能。所以例如如果您创建一个指向“content/2/6”的菜单条目,则使用的 URL 将自动成为您为该路径创建的别名。


编辑:以防万一您最终以编程方式创建别名 - 如果您无论如何使用 pathauto,您可以/应该使用它 pathauto_cleanstring()函数(来自“pathauto.inc”)以确保生成的 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号。希望这有助于。

也许有用藏汉:

通过使用视图生成使用标记替换像<a href="nodeview/[title]/nid" title="[title]">link tekst</a>链路改变发起链接 和处理与路径EXA nodeview和参数NULL,NULL,NID f.i的图的节点。

更多旋绕链接我们的视图PHP字段来构建串..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top