我正在幫助將舊的 Magento 1.6 站點(diǎn)遷移到 Magento 2.3,它看起來像以純文本形式輸入的產(chǎn)品描述和簡短描述,其中包含最少的標(biāo)記和換行符以形成段落,現(xiàn)在看起來一切都被粉碎成一個段落,而頁面源仍然正確呈現(xiàn)空白并顯示換行符。但是沒有標(biāo)簽,瀏覽器會忽略空格。在 Magento 2 中,我們希望使用 WYSIWYG 編輯器來更好地格式化產(chǎn)品描述,但我們希望遷移的產(chǎn)品至少可以正確格式化。這個線程似乎描述了我想要做什么,將描述模板包裝在 nl2br() 方法中:Linebreak in magento product description when NOT using wysiwyg這看起來是解決這個問題的好方法,而且不會影響我們未來的產(chǎn)品描述(使用 WYSIWYG)的顯示方式,至少我認(rèn)為是這樣?這個解決方案適用于 Magento 1,所以我必須找到 Magento 2 的等價物。我在 /vendor/magento/module-catalog/view/frontend/templates/product/view/description.phtml 中找到了 description.phtml 模板該行現(xiàn)在是:<?= /* @escapeNotVerified */ $this->helper('Magento\Catalog\Helper\Output')->productAttribute($block->getProduct(), $block->getProduct()->getDescription(), 'description') ?>我如何在這里應(yīng)用 nl2br() ?我只是將它包裝在“getDescription()”周圍還是應(yīng)該放在其他地方?我應(yīng)該將新模板放在我的自定義主題中的什么位置以使其覆蓋默認(rèn)值?我在文件結(jié)構(gòu)中嘗試了幾種變體和不同位置,但我所做的一切似乎都沒有生效。我不是開發(fā)人員,所以我可能在這里犯了基本錯誤。我什至試圖故意搞砸代碼,但它沒有做任何事情,所以我很確定模板不在正確的位置,或者我沒有清除正確的緩存?我正在使用緩存:清除和緩存:刷新,甚至刪除 pub/static/frontend 和 var/view_preprocessed 以防萬一,但似乎沒有任何效果。我考慮的另一種方法是使用 CSS 添加一個“whitespace:pre-line;” 屬性歸于 .description 類,但雖然它會修復(fù)遷移的數(shù)據(jù),但當(dāng)我在瀏覽器的開發(fā)人員模式下測試它時,我注意到它使使用 WYSIWYG 編輯器輸入的新產(chǎn)品中的空白空間加倍,這不是最佳的前進(jìn)。我對 LESS 也不是很熟悉,所以我不確定把這條規(guī)則放在哪里最好。會在_theme.less 中嗎?_extend.less?我的最后一個想法是嘗試找出一個 MySQL 命令來進(jìn)行一次性替換,以便 \n 成為description 和 shortdescription 屬性中的標(biāo)簽,但我對 MySQL 的了解不足以做類似的事情。那么我應(yīng)該追求哪種解決方案以及我應(yīng)該使用什么語法?我感覺自己就像一個糟糕的臺球運(yùn)動員,他知道我可以采取什么角度但不能擊球!
1 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個贊
好吧,我不知道如何讓 nl2br() 工作,但我在 catalog_product_entity_text 表中找到了產(chǎn)品描述和簡短描述,以及目錄產(chǎn)品的其他屬性。
我做了一些測試,發(fā)現(xiàn)使用 WYSIWYG 編輯器編輯的產(chǎn)品在其條目中有 html 代碼,而遷移的文本只有換行符。手動插入 html 標(biāo)簽達(dá)到了預(yù)期的效果,在與團(tuán)隊確認(rèn)他們更喜歡使用br而非p標(biāo)簽來生成換行符后,我能夠使用以下查詢修復(fù)所有問題:
說明(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' ,但它在第一次運(yùn)行時就開始了,一切都按預(yù)期進(jìn)行。終于解脫了!
如果有人知道我如何修改 php 模板來實(shí)現(xiàn)這一點(diǎn)(以及該文件應(yīng)該放在哪里),我想知道以供將來參考和其他人的緣故。
- 1 回答
- 0 關(guān)注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消