我正在帮助将旧的 Magento 1.6 站点迁移到 Magento 2.3,它看起来像以纯文本形式输入的产品描述和简短描述,其中包含最少的标记和换行符以形成段落,现在看起来一切都被粉碎成一个段落,而页面源仍然正确呈现空白并显示换行符。但是没有标签,浏览器会忽略空格。
在 Magento 2 中,我们希望使用 WYSIWYG 编辑器来更好地格式化产品描述,但我们希望迁移的产品至少可以正确格式化。
这个线程似乎描述了我想要做什么,将描述模板包装在 nl2br() 方法中:Linebreak in magento product description when NOT using wysiwyg
这看起来是解决这个问题的好方法,而且不会影响我们未来的产品描述(使用 WYSIWYG)的显示方式,至少我认为是这样?这个解决方案适用于 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()”周围还是应该放在其他地方?我应该将新模板放在我的自定义主题中的什么位置以使其覆盖默认值?我在文件结构中尝试了几种变体和不同位置,但我所做的一切似乎都没有生效。
我不是开发人员,所以我可能在这里犯了基本错误。我什至试图故意搞砸代码,但它没有做任何事情,所以我很确定模板不在正确的位置,或者我没有清除正确的缓存?我正在使用缓存:清除和缓存:刷新,甚至删除 pub/static/frontend 和 var/view_preprocessed 以防万一,但似乎没有任何效果。
我考虑的另一种方法是使用 CSS 添加一个“whitespace:pre-line;” 属性归于 .description 类,但虽然它会修复迁移的数据,但当我在浏览器的开发人员模式下测试它时,我注意到它使使用 WYSIWYG 编辑器输入的新产品中的空白空间加倍,这不是最佳的前进。我对 LESS 也不是很熟悉,所以我不确定把这条规则放在哪里最好。会在_theme.less 中吗?_extend.less?
我的最后一个想法是尝试找出一个 MySQL 命令来进行一次性替换,以便 \n 成为
description 和 shortdescription 属性中的标签,但我对 MySQL 的了解不足以做类似的事情。
那么我应该追求哪种解决方案以及我应该使用什么语法?我感觉自己就像一个糟糕的台球运动员,他知道我可以采取什么角度但不能击球!
扬帆大鱼