Magento静态块.删除包装<p>

Jev*_*nov 5 static block magento

当我创建静态块magento用<p>标签包装内容.这对DOM来说非常糟糕.有可能以某种方式删除它.我想这是一些JavaScript,但我不知道哪一个.

ʍǝɥ*_*ʇɐɯ 15

我之前的回答实际上是错误的.

您需要在默认情况下关闭静态块WYSIWYG编辑器.

转到系统 - >配置,找到左侧的常规部分,单击内容管理,然后从列表中将'启用WYSIWYG编辑器'设置'默认禁用'.

然后仔细编辑静态块 - 使用WYSIWYG,但之后检查HTML.

这种行为是WYSIWYG编辑器的标准功能,就是它们的用途,<p>标签被添加,因为它们可以制作格式正确的文本.显然,如果添加一个仅包含图像的静态块,这不是您想要的,因此请退出编辑器并检查<p>标记.

WYSIWYG编辑器还可以修改输入到静态块中的变量,并且会减慢管理页面加载时间,因此最好在默认情况下将其关闭.


Gie*_*ers 6

一个更加用户友好的方法是捕获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>
Run Code Online (Sandbox Code Playgroud)

观察员:

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);
}
Run Code Online (Sandbox Code Playgroud)

这将在Magento执行它们之前将小部件从其段落中解开.

编辑:{{和}}之间的部分应该是非贪婪的.