Drupal 视图和路径 url
-
18-09-2019 - |
题
我在构建的一个视图中遇到了 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字段来构建串..