Статические блоки Magento. Удалить обертку <p>

90
10

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

спросил(а) 2021-01-19T17:00:36+03:00 6 месяцев, 1 неделя назад
1
Решение
166

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


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


Перейдите в раздел "Система → Конфигурация", найдите раздел "Общие" слева, нажмите "Управление контентом" и установите "Включить редактор WYSIWYG" в "Отключить по умолчанию" из списка.

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


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


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

ответил(а) 2021-01-19T17:00:36+03:00 6 месяцев, 1 неделя назад
110

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


конфигурации:


<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);
}


Это приведет к отключению виджета из их абзацев до их выполнения Magento.


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

ответил(а) 2021-01-19T17:00:36+03:00 6 месяцев, 1 неделя назад
100

изменить 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,

ответил(а) 2021-01-19T17:00:36+03:00 6 месяцев, 1 неделя назад
90

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


А непосредственно называемый статический блок не помещает дополнительные теги <p>.

ответил(а) 2021-01-19T17:00:36+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема