我必须建立一个多语种的网站,你必须选择你的大陆。
所以你可以在英语中选择美国,也可以用西班牙语选择美国。欧洲用法语,但也用英语等。
我在drupal 7上设置了带有路径前缀的语言检测。
一些内容在我的网站将被隐藏为某些大陆,但许多内容将是相同的,所以我不想做一个多网站。
我希望有像domain.com/america/en/path-alias,domain.com/america/es/path-alias或domain.com/europe/fr/path-alias.那样的urls我找不到任何解决办法。
模块域访问看起来很酷,但不是我想要的,因为它适用于子域,而我需要路径前缀。
编辑: Ok我在drupal中找到了问题的解决方案。
发布于 2015-12-15 14:39:00
您应该使用这2个钩子,因为在hook_url_inbound_alter(&$path, $original_path, $path_language)中,您告诉Drupal应该显示什么路径,并从$original_path (ex: region/lang/ path )中接收到的路径中确定Drupal理解为有效路径的路径(ex: lang/ path )并使用它覆盖$path。
接下来,我们需要来自页面的链接来包含自定义路径格式,因此我们将使用hook_url_outbound_alter(&$path, &$options, $original_path)转换自定义路径格式中的url()生成的所有系统路径或别名( url('lang/path'))生成的路径将是region/lang/path )。在$options数组中,我们可以修改路径前缀或路径语言。
发布于 2017-08-08 09:10:28
这对我有用,但是路径别名现在不起作用了。这个http://localhost/en/australia/node/376应该是http://localhost/en/australia/hotels-resorts
function mymodule_url_inbound_alter(&$path, $original_path, $path_language){
$cluster = 'australia';
$path = str_replace($cluster.'/','',$path);
}
function mymodule_url_outbound_alter(&$path, &$options, $original_path){
$cluster = 'australia';
$path = $cluster.'/'.($path);
$options['alias'] = true;
} https://stackoverflow.com/questions/17851610
复制相似问题