【问题标题】:Why can I not view my blog entries in cms_plugin blog?为什么我无法在 cms_plugin 博客中查看我的博客条目?
【发布时间】:2023-04-04 13:30:02
【问题描述】:

为什么我看不到我使用 cmsplugin blog for Django-cms 创建的博客条目?

我在开发服务器 (localhost) 上设置了 django-cms。我使用here 记录的说明安装了cmsplugin

当我转到“http://localhost:8000/admin/”时,Cmsplugin_Blog 出现在站点管理下。在条目页面上,我看到了我所做条目的概述。编辑单个条目,我可以添加一个插件(文本)并为该条目添加文本。然后我确保发布特定条目。

转到我的博客页面(CMS->Pages)然后我选择 cmsplugin_blog 并添加最新条目插件(我看不到任何其他相关插件)。最后我选择高级设置 -> 应用程序 -> 博客 Apphook(并保存)。当我预览博客页面时,我只能看到最后条目的日期和条目的标题。

我不确定这是否是我在设置中做错了什么,因此我将设置 cmsplugin 的过程包括在内。

我在 settings.py 中编辑了 INSTALLED_APPS :

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin',
    'django.contrib.sites',
    'cms',
    'cms.plugins.text',
    'cms.plugins.picture',
    'cms.plugins.link',
    'cms.plugins.file',
    'cms.plugins.flash',
    'cms.plugins.googlemap',
    'cms.plugins.teaser',
    'cms.plugins.video',
    'cms.plugins.twitter',
    'cms.plugins.snippet',
    'cms.plugins.inherit',
    'cmsplugin_contact',
    'cmsplugin_gallery',
    'mptt',
    'menus',
    'south',
    'sekizai',
    'cmsplugin_blog',
    'djangocms_utils',
    'simple_translation',
    'tagging',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)    

还补充道:

JQUERY_JS = 'https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'
JQUERY_UI_JS = 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/jquery-ui.min.js'
JQUERY_UI_CSS ='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.12/themes/smoothness/jquery-ui.css'


JQUERY_UI = '/path/to/jquery/'
JQUERY_JS = '%sjs/jquery-1.4.4.min.js' % JQUERY_UI
JQUERY_UI_JS = '%sjs/jquery-ui-1.8.9.custom.min.js' % JQUERY_UI
JQUERY_UI_CSS = '%scss/smoothness/jquery-ui-1.8.9.custom.css' % JQUERY_UI

CMSPLUGIN_BLOG_PLACEHOLDERS = ('first', 'second', 'third')

CMS_TEMPLATES = (
    ('template_1.html', 'Template One'),
    ('template_2.html', 'Template Two'),
    ('footer.html','Template Footer'),
    ('sidebar.html','Template Sidebar'),
    ('cmsplugin_blog/cmsplugin_blog_base.html','cmsplugin_blog'),

)

我创建了一个模板“cmsplugin_blog/cmsplugin_blog_base.html”:

 {% extends "base.html" %}

{% block body %}
    {% block left-col %}{% endblock %}
    {% block right-col %}{% endblock %}
{% endblock %}

然后跑:

python manage.py syncdb

在遇到问题中描述的问题后,我创建了一个新模板 view_detail.html

{% extends "cmsplugin_blog/cmsplugin_blog_base.html" %}

{% load placeholder_tags cmsplugin_blog_tags simple_translation_tags %}


{% block left-col %}
{{ block.super }}

<h1>{% with object|get_preferred_translation_from_request:request as title %}{{ title }}{% endwith %}</h1>

<p class="date"><span>{{ object.pub_date|date:"d F Y" }}</span></p>

{% with object.placeholders|choose_placeholder:"content" as content %}
    {% render_placeholder content %}
{% endwith %}

{% endblock %}

{% block right-col %}

{% render_author_links %}

{% render_month_links %}

{% render_tag_links %}

{% endblock %}

但是,当我尝试在 cms 中使用此模板时,我无法将任何插件添加到页面,我仍然遇到原始问题。这是我的settings.py 的完整副本供参考。

【问题讨论】:

  • 我不确定我是否正确理解了这个问题,但是当您使用 AppHook(例如 cmsplugin_blog 的情况)时,您将无法放置任何插件,因为应用程序 url、视图模板优先。

标签: python django templates plugins django-cms


【解决方案1】:

我遇到了同样的问题。当我在 cmsplugin_blog/templates/cmsplugin_blog/entry_detail.html 的以下行中更改“内容”时,“第一个”占位符将呈现为博客内容:

{% with object.placeholders|choose_placeholder:"content" as content %}

换行:

{% with object.placeholders|choose_placeholder:"first" as content %}

我对 django 没有足够的经验来了解导致这种情况的原因,希望有人能提供更多线索。

【讨论】: