【发布时间】:2015-03-12 07:29:53
【问题描述】:
我正在编写一个迁移脚本来将一个旧的 html 网站解析为 Django CMS 页面。 我需要的是了解如何以编程方式嵌套插件。 在特殊情况下,我需要将 html 标签转换为 CMS LinkPlugin 对象,嵌套在由 Django-CMS 的标准 ckeditor TextPlugin 编辑的文本中。
如何以编程方式将插件嵌套在 Django CMS 的其他插件中。在我的情况下,我需要在文本中的 TextPlugin 内嵌套一个 CMS Link 插件。 我知道如何解析文本。我不明白如何从嵌套 CMS 插件的角度进行操作? 我无法互连我插入到祖先 TextPlugin 中的 Link CMS 插件对象实例和 CMSPlugin 对象实例。
更多上下文:
注意,从 UI 的角度来看,我真的知道如何做到这一点。我需要在脚本中模拟它。 我已将数据库转储为 JSON,并注意到其中有某些内容。
首先,我有一个放置在页面占位符中的 CMSPlugin 类实例。 (这部分来自CMS的placeholderadmin.py)
position = CMSPlugin.objects.filter(language=lang, parent=parent).count()
plugin = CMSPlugin(
language='en',
position=position,
plugin_type=plugin_type,
placeholder=placeholder,
)
plugin.insert_at(parent, position='last-child', save=False)
plugin.save()
# ?????
plugin.link = Link(
name='Link text',
page_link=target_page,
placeholder=placeholder,
)
plugin.save()
这会在适当的占位符中创建一个嵌套插件并将其附加到一个文本插件中。但是,它添加了一个空白的 LinkPlugin 实例。我稍后会在 CMS 中创建一个链接插件的实例。 问题是我不知道如何正确地做到这一点。
从 UI 角度来看,CMS 插件是嵌套添加的,但不包含真正的插件实例。因此,该占位符的管理插件树使用空链接插件呈现。 添加了 CMSPlugins Link 。
我可以通过管理员编辑这个创建的链接插件并添加文本和目标链接。如何以编程方式执行此操作。例如。在脚本里面?脚本必须完成 1000 秒的页面,所以我不能手动完成
【问题讨论】:
标签: python django hyperlink content-management-system ckeditor