我正在帮助将旧的 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 的了解不足以做类似的事情。那么我应该追求哪种解决方案以及我应该使用什么语法?我感觉自己就像一个糟糕的台球运动员,他知道我可以采取什么角度但不能击球!
1 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
好吧,我不知道如何让 nl2br() 工作,但我在 catalog_product_entity_text 表中找到了产品描述和简短描述,以及目录产品的其他属性。
我做了一些测试,发现使用 WYSIWYG 编辑器编辑的产品在其条目中有 html 代码,而迁移的文本只有换行符。手动插入 html 标签达到了预期的效果,在与团队确认他们更喜欢使用br而非p标签来生成换行符后,我能够使用以下查询修复所有问题:
说明(attribute_id 61)
UPDATE catalog_product_entity_text SET value = REPLACE( value, '\r\n', '<br />' ) WHERE attribute_id = "61"
简短说明(attribute_id 62)
UPDATE catalog_product_entity_text SET value = REPLACE( value, '\r\n', '<br />' ) WHERE attribute_id = "62"
如果这不起作用,我可能只在替换值中尝试了 '\n' ,但它在第一次运行时就开始了,一切都按预期进行。终于解脱了!
如果有人知道我如何修改 php 模板来实现这一点(以及该文件应该放在哪里),我想知道以供将来参考和其他人的缘故。
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消