如何从DjangoCMS菜单中排除未发布的页面?

问题描述

我有一个要管理的DjangoCMS网站。我只需要发布EN语言的页面。问题是还有3种语言,当我只为EN发布页面时,它也可以在其他语言菜单中使用。菜单名称为英文,这使网站看起来很不专业。这是DjangoCMS菜单逻辑的特定弱点还是网站编码不正确?

我发现还有其他人也在报告此问题-https://github.com/divio/django-cms/issues/6004

如何排除不需要的页面显示在其他语言的菜单上?

解决方法

@lazdins可以在3.7.1中修复:“修复了一个错误,即使请求中的页面是公共页面,菜单也会呈现草稿页面。这种情况发生在没有更改权限的用户请求编辑模式的情况下。” https://github.com/divio/django-cms/blob/develop/CHANGELOG.rst#371-2019-11-26

3.4我也不再受支持,建议您升级到3.7,因为它是当前受支持的LTS版本,在我发表评论时,建议使用的版本为:https://www.django-cms.org/en/roadmap/

我也将此问题发布了。 https://github.com/divio/django-cms/issues/6004#issuecomment-702052627

,

我的解决方案是在settings.py上进行以下更改:

'hide_untranslated':真实

CMS_LANGUAGES = {
    1: [
        {
            'code': 'en','name': gettext('English'),'fallbacks': ['de','fr'],'public': True,'hide_untranslated': True,'redirect_on_fallback': False,},{
            'code': 'de','name': gettext('Deutsch'),'fallbacks': ['en',{
            'code': 'fr','name': gettext('French'),'public': False,],2: [
        {
            'code': 'nl','name': gettext('Dutch'),'fallbacks': ['en'],'default': {
        'fallbacks': ['en','de','redirect_on_fallback': True,'hide_untranslated': False,}
}

http://docs.django-cms.org/en/latest/reference/configuration.html#cms-languages