Я пытаюсь удалить пустые теги P в Magento CMS.
Я следовал нескольким учебникам и пытался объединить информацию в обоих, но она не работает, и мне было интересно, если кто-нибудь может указать на ошибку в моем коде.
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
Код для моего файла config.xml, расположенного в RemoveEmptyPTags / etc, …
<!--
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>
Код для моего файла Observer.php, расположенного в RemoveEmptyPTags / Model, …
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);
}
}
Код для моего файла Data.php, расположенного в RemoveEmptyPTags / Helper …
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();
});
Других решений пока нет …