Drupal中基于分类法的导航和URL命名空间

时间:2010-06-28 22:59:47

标签: drupal drupal-views ubercart drupal-taxonomy

我正在尝试升级旧式PHP站点(http://cordair.com/)以与运行Ubercart的Drupal一起使用。其中一个关键是确保人们收藏的网址保持不变。

我的分类法看起来像这样

Catalog
 + Artists
    + Pablo Picaso
    + Lenardo DaVinci
 + Medium
    + Sculpture
    + Painting
    + Print

分类是多选的。因此每个人都有1位艺术家和可能的多种媒介(例如,某些东西既可以是原始绘画,也可以作为印刷品提供)。我希望该网站能够在http://foo.com/picaso处提供一个页面,其中列出了Pablo Picaso或其下的所有项目。我还希望能够有一个像http://foo.com/paintings这样的页面列出所有艺术家的所有画作。

最好的办法是什么?看起来我需要使用Path Auto,但是弄清楚正确的设置是多么令人困惑。我也没有看到自定义定制分类术语转换为URL的方式;现在我只是得到身份证。看起来有一种方法可以使用术语名称,但我尝试构建的URL只使用姓氏而不是第一个。

请原谅我的Drupal noob-ness,因为我相信这一切都是可能的,而且可能比我想象的要容易。

2 个答案:

答案 0 :(得分:2)

可能但有问题的方法:

为了只提取姓氏,你需要implement a custom token来进行必要的字符串操作的分类术语。 (您需要创建默认[cat]令牌的变体。This example for a custom node title token也可能有助于理解该过程。)

然而,这种方法有一些严重的缺点:

推荐的替代方法:

为避免处理上述歧义问题,并且鉴于您要替换的网站到目前为止只有一小组目标名称,我只使用标准[cat]令牌,使用全名对于URL(Pathauto允许您指定特殊字符的默认替换,例如下划线或破折号的空格)。然后,您可以为网站.htaccess文件添加所有旧的“仅限姓氏”网址的重定向规则,以便在推广新版本时保持其功能:

# http://example.com/picasso  => http://example.com/pablo_picasso
RewriteRule ^picasso $ http://example.com/pablo_picasso [L,R=301]
# ... and so on for all old urls that changed

(您也可以将Path redirect module检查为.htaccess操作的'Drupal internal'替代方案。)


此外,我建议将“目录”层次结构拆分为两个单独的词汇表,例如: '艺术家'和'中等'。虽然这会在节点条目表单上产生两个单独的分类法字段,但它符合语义差异,并且可以更灵活地过滤,排序和分组节点。

答案 1 :(得分:0)

Path auto用于为基于内容的内容自动生成路径别名。

似乎您更多地谈论拥有一些不同的内容类型(cck)并将这些类型与节点参考模块相关联。然后你的picaso和绘画网址是简单的视图,可以使用参数或使用公开的过滤器来进一步限制显示的节点。