Php 恢复迁移到Magento 2中的产品说明中的换行符

Php 恢复迁移到Magento 2中的产品说明中的换行符,php,css,mysql,magento2,nl2br,Php,Css,Mysql,Magento2,Nl2br,我正在帮助将一个旧的Magento 1.6站点迁移到Magento 2.3,它看起来像是以纯文本形式输入的产品描述和简短描述,以最小的标记和换行符形成段落,现在看起来好像所有内容都被分解成了一个段落,而页面源仍然正确呈现空白并显示换行符。但是如果没有标记,浏览器将忽略空白 在Magento 2中,我们希望使用WYSIWYG编辑器更好地格式化产品描述,但我们希望迁移的产品至少能够正确格式化 该线程似乎描述了我想要做的事情,将描述模板包装在nl2br()方法中: 至少我认为,这看起来是解决这个问题的

我正在帮助将一个旧的Magento 1.6站点迁移到Magento 2.3,它看起来像是以纯文本形式输入的产品描述和简短描述,以最小的标记和换行符形成段落,现在看起来好像所有内容都被分解成了一个段落,而页面源仍然正确呈现空白并显示换行符。但是如果没有标记,浏览器将忽略空白

在Magento 2中,我们希望使用WYSIWYG编辑器更好地格式化产品描述,但我们希望迁移的产品至少能够正确格式化

该线程似乎描述了我想要做的事情,将描述模板包装在nl2br()方法中:

至少我认为,这看起来是解决这个问题的一个好方法,不会影响我们未来的产品描述(使用所见即所得)的显示方式?这个解决方案是针对Magento 1的,所以我必须找到Magento 2的等价物。我在/vendor/magento/module catalog/view/frontend/templates/product/view/description.phtml中找到了description.phtml模板

该行现在为:

<?= /* @escapeNotVerified */ $this->helper('Magento\Catalog\Helper\Output')->productAttribute($block->getProduct(), $block->getProduct()->getDescription(), 'description') ?>

如何在此处应用nl2br()?我应该把它包装在“getDescription()”周围,还是放在其他地方?我应该把新的模板放在哪里,让它在我的自定义主题中覆盖默认的模板?我在文件结构中尝试了几种变体和不同的位置,但我所做的一切似乎都没有效果

我不是开发人员,所以我可能在这里犯了一些基本的错误。我甚至试图故意弄乱代码,但它没有任何作用,所以我很确定模板不在正确的位置,或者可能我没有清除正确的缓存?我使用了cache:clear和cache:flush,甚至删除了pub/static/frontend和var/view\u预处理,以防万一,但似乎没有任何效果

我考虑的另一种方法是使用CSS向.description类添加一个“whitespace:pre-line;”属性,但尽管它可以修复迁移的数据,但当我在浏览器的开发人员模式下对其进行测试时,我注意到它将使用WYSIWYG编辑器输入的新产品中的空白增加了一倍,这并不是最佳的前进方向。我对LESS也不是很熟悉,所以我不确定这条规则最好放在哪里。它会是无主题的吗_少

我的最后一个想法是尝试找出一个MySQL命令来进行一次性替换,以便\n在description和shortdescription属性中成为
标记,但我不知道有足够多的MySQL可以这样做

那么,我应该追求哪种解决方案,应该使用什么语法呢?我觉得自己是一个糟糕的台球运动员,知道我可以选择什么角度,但不能击沉球


谢谢您的帮助。

我不知道如何让nl2br()正常工作,但我在catalog_product_entity_文本表中找到了产品说明和简短说明,以及目录产品的其他属性

我做了一些测试,发现使用WYSIWYG编辑器编辑的产品条目中有html代码,而迁移的文本只有换行符。手动插入html标记达到了预期效果,在与团队确认他们更喜欢br而不是p标记来生成换行符后,我能够通过以下查询修复所有问题:

描述(属性_id 61)

updatecatalog\u product\u entity\u text SET value=REPLACE(值,'\r\n','
'),其中属性\u id=“61”
简短描述(属性_id 62)

updatecatalog\u product\u entity\u text SET value=REPLACE(value,'\r\n','
'),其中attribute_id=“62”
如果这不起作用,我可能会在replace值中尝试“\n”,但它在第一次尝试时就成功了,一切看起来都如预期的那样。真是松了一口气

如果有人知道我如何修改php模板来实现这一点(以及该文件应该放在哪里),我想知道,以供将来参考和其他人参考

干杯!

UPDATE catalog_product_entity_text SET value = REPLACE( value, '\r\n', '<br />' ) WHERE attribute_id = "61"
UPDATE catalog_product_entity_text SET value = REPLACE( value, '\r\n', '<br />' ) WHERE attribute_id = "62"