Magento статические блоки.Удалить упаковку <p> - PullRequest
5 голосов
/ 14 июня 2011

При создании статического блока magento оборачивает содержимое тегами <p>. Что очень плохо для DOM. Это можно как-то убрать. Я предполагаю, что это какой-то javascript, но я не знаю, какой именно.

Ответы [ 4 ]

15 голосов
/ 15 июня 2011

На самом деле неправильно в моем предыдущем ответе.

Вам необходимо отключить WYSIWYG-редактор статического блока по умолчанию.

Перейдите к Система -> Конфигурация , найдите раздел General в левой части, нажмите Управление контентом и установите 'Включить WYSIWYG Editor' на «Отключить по умолчанию» из списка.

Затем тщательно отредактируйте свои статические блоки - используйте WYSIWYG, но потом проверьте свой HTML.

Такое поведение является стандартной функцией редакторов WYSIWYG, то есть для чего они добавлены, теги <p> добавлены, потому что они создают красиво отформатированный текст. Очевидно, что это не то, что вам нужно, если вы добавляете статический блок, содержащий только изображение, поэтому выйдите из редактора и проверьте наличие тегов <p>.

Редактор WYSIWYG также может манипулировать переменными, введенными в статические блоки, и он замедляет время загрузки страницы администратора, поэтому лучше по умолчанию его отключить.

5 голосов
/ 29 августа 2013

Более удобный способ - перехватить событие cms_page_render и использовать регулярное выражение для «разворачивания» виджета:

конфиг:

<cms_page_render>
    <observers>
        <your_unique_handler>
            <type>singleton</type>
            <class>Package_Module_Model_Observer</class>
            <method>cmsPageRenderEvent</method>
        </your_unique_handler>
    </observers>
</cms_page_render>

наблюдатель:

public function cmsPageRenderEvent($observer)
{
    /* @var $page Mage_Cms_Model_Page*/
    $page = $observer->getPage();

    // Remove wrapping paragraphs around widgets:
    $content = $page->getContent();
    $content = preg_replace('/\<p\>{{(.*?)}}\<\/p\>/', '{{$1}}', $content);
    $page->setContent($content);
}

Это бы развернуло виджет из их параграфов до того, как их исполнил Магенто.

Редактировать: часть между {{и}} не должна быть жадной.

4 голосов
/ 16 октября 2014

редактировать js / mage / adminhtml / wysiwyg / tiny_mce / setup.js

var settings = {
        mode : (mode != undefined ? mode : 'none'),
        elements : this.id,
        theme : 'advanced',
        plugins : plugins,
        theme_advanced_buttons1 : magentoPlugins + 'magentowidget,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect',
        theme_advanced_buttons2 : 'cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,forecolor,backcolor',
        theme_advanced_buttons3 : 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,iespell,media,advhr,|,ltr,rtl,|,fullscreen',
        theme_advanced_buttons4 : 'insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,pagebreak',
        theme_advanced_toolbar_location : 'top',
        theme_advanced_toolbar_align : 'left',
        theme_advanced_statusbar_location : 'bottom',
        theme_advanced_resizing : true,
        convert_urls : false,
        relative_urls : false,



        forced_root_block : '', /* <-- Add this setting */



        content_css: this.config.content_css,
        custom_popup_css: this.config.popup_css,
        magentowidget_url: this.config.widget_window_url,
        magentoPluginsOptions: magentoPluginsOptions,
2 голосов
/ 14 июня 2011

Это зависит от того, где вы используете ваши статические блоки и какие шаблоны / темы вы используете. Включите подсказки веб-интерфейса разработчика, загрузите свои оскорбительные страницы, определите используемый файл шаблона, а затем извлеките вкладки <p> из ваших файлов phtml.

Статический блок, вызываемый напрямую, не добавляет лишних тегов <p>.

...