为所有语言创建一次页面结构

时间:2017-01-31 10:09:32

标签: django-cms multilingual

我正在测试Django CMS,我正在寻找一种为所有语言创建页面的方法。目前,我必须为每种语言创建一个新页面,并且内容/插件/结构不会在不同语言之间共享。

有没有办法实现这个目标?

提前致谢

2 个答案:

答案 0 :(得分:1)

@Fabian提供的管理命令非常有用。 我更新了命令代码here以反映django-cms API中的更改:

@Service

经过django-cms 3.5.3和3.7.4的测试。 所有学分归@Fabian所有。

答案 1 :(得分:0)

内置管理命令./manage.py cms copy lang将整个页面树从一种语言复制到另一种语言。页面树保持不变,插件树被传输。如果您想为整个网站引导新语言,那就没问题。

如果您要复制仅一页的插件树,可以使用工具栏中的语言菜单:Language -> Copy all plugins如果您正在查看目标语言。如果你只有一页,这很好。

如果你想引导一个页面树的语言,即一个页面及其所有子项,那么你要么点击很多,要么使用我创建的这个短管理命令在最初的DjangoCMS ./manage.py cms copy long命令上。它允许指定要通过其id或源语言中的名称进行复制的页面(注意:它必须是唯一的)。

this snippet复制到任何应用程序的命令文件夹中:my_app/management/commands/。复制完文件后,您将获得一个新的Django管理命令:./manage.py copylang。用法示例:

./manage.py copylang --from-lang=en --to-lang=nl --tree="Home" 
./manage.py copylang --from-lang=en --to-lang=nl --tree_id=36 --force

通过将鼠标悬停在页面的预览图标上,可以从页面管理员轻松推断出--tree_id选项所需的页面ID。页面ID是链接的一部分:... / page / page_id / lang / preview /...

如果省略--tree--tree_id选项,该命令将恢复为DjangoCMS的原始cms copy lang行为。