我正在测试Django CMS,我正在寻找一种为所有语言创建页面的方法。目前,我必须为每种语言创建一个新页面,并且内容/插件/结构不会在不同语言之间共享。
有没有办法实现这个目标?
提前致谢
答案 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
行为。