在视图中将带有特殊字符的术语名称转换为术语ID


11

我有一个视图,我想使用多个termID作为参数。我想使用URL中的术语名称,并将其转换为termID。我已经设法做到这一点很容易,并且通过检查“将URL中的破折号转换为术语名称参数中的空格”,它可以使用简单的1个单词甚至多个单词

我有一些带有特殊字符的术语,例如:“新闻与政治”。

有什么方法可以拥有漂亮的URL(新闻政治)并获得视图以识别正确的术语并将其转换为正确的termID?我需要对&符号进行urlencode吗?那会行吗?

编辑:您可以为单个分类术语设置路径别名,但是当您想将术语名称用作具有多个参数的路径中的第二个参数时,这是一个问题,例如:

假设我想按%1个新闻术语然后按%2个新闻与政治过滤视图结果

/ news / news-politics

第二学期将不被认可。


为什么不使用术语名称作为参数?
dobeerman 2011年

同样的问题。“&”号不见了,因此drupal无法找到该术语。我认为唯一的选择是要么对不喜欢SEO的&号进行URL编码,要么为db中的每个术语存储路径别名。只是想知道是否有人以前遇到过这种情况并且有一个好的策略。
nickwshaw 2011年

作为一种短期解决方案,我们将仅用&代替&。因此,新闻与政治(新闻政治)将成为新闻与政治(新闻政治)
nickwshaw 2011年

Answers:


2

您可以使用pathauto为分类术语设置自动别名。当创建自动别名时,Pathauto将为您处理无效的URL字符。然后在您的视图中使用术语id作为参数。视图的路径可以是分类法/术语/%或您设置的自动别名/%


1
谢谢Jepedo。对于单个分类术语而言,这是一个很好的解决方案。但是,如果您想在多参数路径中将该术语用作通配符,仍然存在问题。我应该在原始帖子中提到它,现在对其进行了编辑。
nickwshaw 2011年


2

由于在Issue#672606上报告的Views模块中存在一个长期错误:Drupal.org上的加号,破折号和正斜杠(+-/)中断参数,因此不能用作参数(或“上下文过滤器” (在最近的说法中)包含某些特殊字符的术语名称。一对夫妇的解决方法,提出有

  1. 使用这样的计算字段(computed_field)模块上创建,术语实体URL型字段的值可以被用来作为一个参数。请注意,如果您对唯一性不小心的话,很相似的术语会相互干扰。
  2. 只需将术语ID用作参数,并使用View Alias(view_alias)模块为其创建路径别名。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.