Drupal:在多语言站点中,“所有语言”作为默认别名语言

4
在Drupal 7多语言站点中,当一个节点的语言设置为除了 "Language neutral" 以外的其他语言时,如果网站语言与节点语言不同,则其别名无法正常工作(出现404错误)。
您可以通过从别名编辑页面(admin/config/search/path)将别名语言更改为"All languages"来避免此问题。
这非常烦人,因为您必须针对每个具有语言支持的新节点执行此操作。而且,当批量更新更改某些别名时,此设置会丢失。
是否有任何方法使"所有语言"为每个新创建的别名设置?
是否有任何方法为已经创建的所有别名设置“所有语言”?
2个回答

3
你应该将这段代码添加到你的template.php文件中。
function youtheme_node_presave($node) {
         if ($node->type == 'nodetype') {
         $node->language = LANGUAGE_NONE;
        }
}

这基本上将会把您的节点保存为中性语言 ;) 如果需要,可以更改节点类型或添加更多。

1
好的,谢谢。我认为自定义模块比篡改主题模板更好。 - Alessandro Pezzato
好的并不是黑客行为,Drupal 允许你这样做。 - Dtnand
1
这与主题无关,应该只改变显示行为。 - Alessandro Pezzato
1
除此之外,自动将所有节点更改为语言中性(即抛弃语言信息)并不是一种解决方案,如果网站真的使用节点语言,例如用于只显示一个语言节点的视图。解决别名问题时,我们不应该再创造另一个问题。 - sleepy012
1
如果您的所有别名都是唯一的(例如包含节点 ID 或语言代码),那么将所有别名设置为中性别名不会成为问题。视图也不会有问题。您仍然可以通过当前用户语言来过滤视图。 - Nux
1
主题无法实现钩子。 - apaderno

0

以上方法对我有效(来源:http://bengoodyear.com/blog/drupal-7-cracking-the-multilingual-front-page-nut),但是以下方法更好。

确保您已经启用了变量和变量翻译模块。 前往管理界面/config/regional/i18n/variable 从列表中选择“默认首页”,保存设置。 前往管理界面/config/system/site-information,您会注意到那里有一段文本,说明您的某些设置是多语言变量,并列出了您正在运行的语言的链接,允许您为每种语言设置这些设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接