Статические блоки Magento. Удалить обертку <p>
Когда я создаю статический блок, magento обертывает содержимое тегами <p>
. Что очень плохо для DOM.
Можно ли как-то удалить его. Я предполагаю, что это какой-то javascript, но я не знаю, какой из них.
На самом деле неправильно в моем более раннем ответе.
Вам нужно повернуть статический блок WYSIWYG-редактора по умолчанию.
Перейдите в раздел "Система → Конфигурация", найдите раздел "Общие" слева, нажмите "Управление контентом" и установите "Включить редактор WYSIWYG" в "Отключить по умолчанию" из списка.
Затем тщательно отредактируйте свои статические блоки - используйте WYSIWYG, но затем проверьте свой HTML.
Это стандартная функция редакторов WYSIWYG, для чего они используются, теги <p>
добавляются, потому что они делают красиво отформатированный текст. Ясно, что это не то, что вы хотите, если добавить статический блок, содержащий только изображение, поэтому выйдите из редактора и проверьте теги <p>
.
Редактор WYSIWYG также может калечить переменные, введенные в статические блоки, и замедляет время загрузки страницы администратора, поэтому лучше всего отключить его по умолчанию.
Более удобным для пользователя способом было бы поймать 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.
Изменить: часть между {{и}} должна быть неживой.
изменить 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,
Это зависит от того, где вы используете свои статические блоки и какие шаблоны/темы вы используете. Включите подсказки интерфейса разработчиков, загрузите свои злоумышленные страницы, определите используемый файл шаблона и вытащите вкладки <p>
из ваших файлов phtml.
А непосредственно называемый статический блок не помещает дополнительные теги <p>
.