如何在 django-ckeditor 中推送 protectedSource?
How to push a protectedSource in django-ckeditor?
我目前正在为网站使用 django-ckeditor,效果很好,但我需要一些文章内嵌广告 (google adsense)。保存寄存器后,代码被剥离,我不知道在哪里或如何设置 protectedSource 以允许标签。
我已成功允许脚本内容,但不是 google adsense 使用的 ins 标签。
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-XXXXXXXXXXXX"
data-ad-slot="XXXXXXXXXXX"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
我目前在settings.py中的CKEDITOR_CONFIGS定义是这样的:
CKEDITOR_CONFIGS = {
'custom': {
'toolbar': 'Custom',
'extraAllowedContent':'script ins',
'removePlugins': 'stylesheetparser',
#'protectedSource': ['/<ins class=\"adsbygoogle\"\>.*?<\/ins\>/g'],
'toolbar_Custom': [
{
'items': [
'RemoveFormat', 'PasteFromWord',
]
},
{
'items': [
'Styles', 'Format', 'Bold', 'Italic', 'Underline',
]
},
{
'items': [
'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent'
]
},
{'items': ['Blockquote', 'Outdent', 'Indent']},
{'items': ['NumberedList', 'BulletedList']},
{
'items': [
'JustifyLeft', 'JustifyCenter',
'JustifyRight', 'JustifyBlock'
]
},
'/',
{'items': ['Font', 'FontSize']},
{'items': ['Source']},
{'items': ['Link', 'Unlink']},
{'items': ['Image', 'Flash', 'Table', 'HorizontalRule', 'Embed']},
{'items': ['Smiley', 'SpecialChar', 'PageBreak', 'Iframe']}
],
'extraPlugins': ','.join([
'div',
'autoembed',
'embedsemantic',
]),
'embed_provider': '//ckeditor.iframe.ly/api/oembed?url={url}&callback={callback}&api_key=abc123',
},
'default': {
'toolbar': 'full',
'removePlugins': 'stylesheetparser',
'allowedContent': True,
}
}
我终于解决了这个问题。我添加了以下代码行:
config.protectedSource.push( /<ins[\s|\S]+?<\/ins>/g );
config.protectedSource.push( /<ins class=\"adsbygoogle\"\>.*?<\/ins\>/g );
在文件夹 static/ckeditor/ckeditor/
中的 config.js 文件中
它与 CKEDITOR_CONFIGS 定义无关,但与 ckeditor 内部配置有关。最终结果如下所示:
我目前正在为网站使用 django-ckeditor,效果很好,但我需要一些文章内嵌广告 (google adsense)。保存寄存器后,代码被剥离,我不知道在哪里或如何设置 protectedSource 以允许标签。
我已成功允许脚本内容,但不是 google adsense 使用的 ins 标签。
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
style="display:block; text-align:center;"
data-ad-layout="in-article"
data-ad-format="fluid"
data-ad-client="ca-pub-XXXXXXXXXXXX"
data-ad-slot="XXXXXXXXXXX"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
我目前在settings.py中的CKEDITOR_CONFIGS定义是这样的:
CKEDITOR_CONFIGS = {
'custom': {
'toolbar': 'Custom',
'extraAllowedContent':'script ins',
'removePlugins': 'stylesheetparser',
#'protectedSource': ['/<ins class=\"adsbygoogle\"\>.*?<\/ins\>/g'],
'toolbar_Custom': [
{
'items': [
'RemoveFormat', 'PasteFromWord',
]
},
{
'items': [
'Styles', 'Format', 'Bold', 'Italic', 'Underline',
]
},
{
'items': [
'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent'
]
},
{'items': ['Blockquote', 'Outdent', 'Indent']},
{'items': ['NumberedList', 'BulletedList']},
{
'items': [
'JustifyLeft', 'JustifyCenter',
'JustifyRight', 'JustifyBlock'
]
},
'/',
{'items': ['Font', 'FontSize']},
{'items': ['Source']},
{'items': ['Link', 'Unlink']},
{'items': ['Image', 'Flash', 'Table', 'HorizontalRule', 'Embed']},
{'items': ['Smiley', 'SpecialChar', 'PageBreak', 'Iframe']}
],
'extraPlugins': ','.join([
'div',
'autoembed',
'embedsemantic',
]),
'embed_provider': '//ckeditor.iframe.ly/api/oembed?url={url}&callback={callback}&api_key=abc123',
},
'default': {
'toolbar': 'full',
'removePlugins': 'stylesheetparser',
'allowedContent': True,
}
}
我终于解决了这个问题。我添加了以下代码行:
config.protectedSource.push( /<ins[\s|\S]+?<\/ins>/g );
config.protectedSource.push( /<ins class=\"adsbygoogle\"\>.*?<\/ins\>/g );
在文件夹 static/ckeditor/ckeditor/
中的 config.js 文件中
它与 CKEDITOR_CONFIGS 定义无关,但与 ckeditor 内部配置有关。最终结果如下所示: