我正在尝试删除Magento CMS中的空p标记。
我一直在学习一些教程,并试图将两者中的信息结合起来,但它不起作用,我想知道是否有人能指出我代码中的错误。
http://gielberkers.com/magento-remove-wrapping-paragraph-around-widget/https://www.smashingmagazine.com/2012/03/basics-creating-magento-module/
我已正确激活我的模块。
我的模块位于。。。app/code/local/Rapport Design/RemoveEmptyPTags
位于RemoveEmptyPTags/etc中的config.xml文件的代码是…
<!--
The module's node contains basic
information about each Magento module
-->
<modules>
<!--
This must exactly match the namespace and module's folder
names, with directory separators replaced by underscores
-->
<RapportDesign_RemoveEmptyPTags>
<!-- The version of our module, starting at 0.0.1 -->
<version>0.0.1</version>
</RapportDesign_RemoveEmptyPTags>
</modules>
<!-- Configure our module's behavior in the global scope -->
<frontend>
<!-- Defining models -->
<models>
<!--
Unique identifier in the model's node.
By convention, we put the module's name in lowercase.
-->
<rapportdesign_removeemptyptags>
<!--
The path to our models directory, with directory
separators replaced by underscores
-->
<class>RapportDesign_RemoveEmptyPTags_Model</class>
</rapportdesign_removeemptyptags>
</models>
<!-- Defining an event observer -->
<events>
<!-- The code of the event we want to observe -->
<cms_page_render>
<!-- Defining an observer for this event -->
<observers>
<!--
Unique identifier within the
catalog_product_save_after node.
By convention, we write the module's
name in lowercase.
-->
<rapportdesign_removeemptyptags>
<!-- The model to be instantiated -->
<class>rapportdesign_removeemptyptags/observer</class>
<!-- The method of the class to be called -->
<method>cmsPageRenderEvent</method>
<!-- The type of class to instantiate -->
<type>singleton</type>
</rapportdesign_removeemptyptags>
</observers>
</cms_page_render>
</events>
</frontend>
位于RemoveEmptyPTags/Model中的Observer.php文件的代码是…
class RapportDesign_RemoveEmptyPTags_Model_Observer {
public function cmsPageRenderEvent($observer) {
/* @var $page Mage_Cms_Model_Page*/
$page = $observer->getPage();
$content = $page->getContent();
$content = Mage::helper('RapportDesign_RemoveEmptyPTags')->processContent($content);
$page->setContent($content);
}
}
位于RemoveEmptyPTags/Helper中的Data.php文件的代码是…
class RapportDesign_RemoveEmptyPTags {
public function processContent($content)
{
// Remove wrapping paragraphs around widgets:
$content = preg_replace('/<p>{{(.*?)}}</p>/', '{{$1}}', $content);
// Remove div around widgets
$content = preg_replace('/<div>{{(.*?)}}</div>/', '{{$1}}', $content);
// Remove empty paragraphs:
$content = preg_replace('/<p>(|s*| |n)</p>/', '', $content);
return $content;
}
}
如果有人能看出这件事有什么明显的错误,我们将不胜感激。
我还没有完成上面的代码,但我发现了一种使用jQuery实现所需结果的更简单的方法。。。
$('p').each(function() {
var $this = $(this);
if($this.html().replace(/s| /g, '').length == 0)
$this.remove();
});