Как сделать sh защищенный источник в django -экдиторе? - PullRequest
0 голосов
/ 31 марта 2020

В настоящее время я использую django -ckeditor для сайта, он прекрасно работает, но мне нужно несколько встроенных объявлений (Google AdSense). После сохранения регистра код удаляется, и я не знаю, где и как настроить protectedSource для разрешения тега.

Я успешно разрешил содержание скрипта, но не тег ins, используемый Google AdSense.

<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>

Мое текущее определение CKEDITOR_CONFIGS в settings.py выглядит следующим образом:

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,
    }
}

1 Ответ

0 голосов
/ 02 апреля 2020

Я наконец решил проблему. Я добавил следующие строки кода:

config.protectedSource.push( /<ins[\s|\S]+?<\/ins>/g );
config.protectedSource.push( /<ins class=\"adsbygoogle\"\>.*?<\/ins\>/g );

в файл конфигурации. js файл, расположенный в папке static/ckeditor/ckeditor/ Он не должен был ничего делать с определением CKEDITOR_CONFIGS, но с внутренней конфигурацией ckeditor. Конечный результат выглядит следующим образом:

enter image description here

...